Skip to main content
Glama

mcp-google-sheets

create-call.ts5.55 kB
import { createAction, Property } from '@activepieces/pieces-framework'; import { biginAuth } from '../../index'; import { contactsDropdown, tagsDropdown, usersDropdown } from '../common/props'; import { biginApiService } from '../common/request'; import { formatDateTime, getSafeLabel, handleDropdownError } from '../common/helpers'; export const createCall = createAction({ auth: biginAuth, name: 'createCall', displayName: 'Create Call', description: 'Creates a Call Log Entry Record', props: { callStartTime: Property.DateTime({ displayName: 'Call Start Time', description: 'Provide the start time of the call in ISO8601 format.', required: true, }), callDuration: Property.Number({ displayName: 'Call Duration (minutes)', description: 'Provide the duration of the call in minutes (numeric). For example, 30 for a 30-minute call.', required: true, }), callType: Property.StaticDropdown({ displayName: 'Call Type', description: 'Type of call', required: true, options: { options: [ { label: 'Outbound', value: 'Outbound' }, { label: 'Inbound', value: 'Inbound' }, { label: 'Missed', value: 'Missed' }, ], }, }), owner: usersDropdown, contactName: contactsDropdown, subject: Property.ShortText({ displayName: 'Subject', description: 'Subject of the call', required: false, }), description: Property.LongText({ displayName: 'Description', description: 'Description or notes about the call', required: false, }), callAgenda: Property.LongText({ displayName: 'Call Agenda', description: 'Agenda or purpose of the call', required: false, }), reminder: Property.DateTime({ displayName: 'Reminder', description: 'Reminder date and time for the call', required: false, }), dialledNumber: Property.ShortText({ displayName: 'Dialed Number', description: 'Provide the number dialed for the call.', required: false, }), relatedModule: Property.StaticDropdown({ displayName: 'Related Module', description: 'Select the type of entity the call is related to.', required: false, defaultValue: 'Pipelines', options: { options: [ { label: 'Pipelines', value: 'Pipelines' }, { label: 'Companies', value: 'Companies' }, ], }, }), relatedTo: Property.Dropdown({ displayName: 'Related To', description: 'Select the specific record the call is related to.', required: false, refreshers: ['auth', 'relatedModule'], defaultValue: {}, options: async ({ auth, relatedModule }): Promise<any> => { if (!auth) return handleDropdownError('Please connect first'); if (!relatedModule) return { options: [] }; const { access_token, api_domain } = auth as any; const fetchMap: Record<string, () => Promise<any>> = { Pipelines: () => biginApiService.fetchPipelinesRecords(access_token, api_domain), Companies: () => biginApiService.fetchCompanies(access_token, api_domain), }; const fetchFn = fetchMap[relatedModule as keyof typeof fetchMap]; const response = await fetchFn(); const records = response?.data || []; return { options: records.map((item: any) => ({ label: getSafeLabel(item), value: item.id, })), }; }, }), tag: tagsDropdown('Calls'), }, async run({ auth, propsValue }) { try { const { access_token, api_domain } = auth as any; const payload: any = { Call_Start_Time: formatDateTime(propsValue.callStartTime), Call_Duration: Number(propsValue.callDuration), Call_Type: propsValue.callType, }; if (propsValue.subject) payload.Subject = propsValue.subject; if (propsValue.description) payload.Description = propsValue.description; if (propsValue.callAgenda) payload.Call_Agenda = propsValue.callAgenda; if (propsValue.reminder) payload.Reminder = formatDateTime(propsValue.reminder); if (propsValue.dialledNumber) payload.Dialled_Number = propsValue.dialledNumber; if (propsValue.owner) payload.Owner = { id: propsValue.owner }; if (propsValue.contactName) payload.Contact_Name = { id: propsValue.contactName }; if (propsValue.relatedTo && propsValue.relatedModule) { const relatedModuleMap = { Pipelines: 'Deals', Companies: 'Accounts', }; payload.$related_module = relatedModuleMap[ propsValue.relatedModule as keyof typeof relatedModuleMap ] || 'Deals'; payload.Related_To = { id: propsValue.relatedTo }; } if (propsValue.tag) payload.Tag = propsValue.tag.map((t: any) => ({ name: t })); const response = await biginApiService.createCall( access_token, api_domain, { data: [payload] } ); return { message: 'Call log Entry created successfully', data: response.data[0], }; } catch (error: any) { console.error('Error creating call log entry:', error); throw new Error( error instanceof Error ? `Failed to create call log entry: ${error.message}` : 'Failed to create call log entry due to an unknown error' ); } }, });

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/activepieces/activepieces'

If you have feedback or need assistance with the MCP directory API, please join our Discord server