Skip to main content
Glama

mcp-google-sheets

create-conversation.ts4.15 kB
import { createAction, Property } from '@activepieces/pieces-framework'; import { helpScoutApiRequest } from '../common/api'; import { helpScoutAuth } from '../common/auth'; import { HttpMethod } from '@activepieces/pieces-common'; import { mailboxIdDropdown, userIdDropdown } from '../common/props'; export const createConversation = createAction({ auth: helpScoutAuth, name: 'create_conversation', displayName: 'Create Conversation', description: 'Start a new conversation.', props: { mailboxId: mailboxIdDropdown(true), subject: Property.ShortText({ displayName: 'Subject', required: true, }), customerEmail: Property.ShortText({ displayName: 'Customer Email', required: true, }), fromUser: userIdDropdown('From User'), threadType: Property.StaticDropdown({ displayName: 'Thread Type', required: true, options: { disabled: false, options: [ { label: 'Chat', value: 'chat' }, { label: 'Phone', value: 'phone' }, { label: 'Reply', value: 'reply' }, { label: 'Customer', value: 'customer' }, ], }, }), status: Property.StaticDropdown({ displayName: 'Conversation Status', required: true, options: { disabled: false, options: [ { label: 'Active', value: 'active' }, { label: 'Closed', value: 'closed' }, { label: 'Pending', value: 'pending' }, ], }, }), body: Property.LongText({ displayName: 'Body', required: true, }), assignTo: userIdDropdown('Assigned User'), tags: Property.Array({ displayName: 'Tags', required: false, }), cc: Property.Array({ displayName: 'CC', required: false, }), bcc: Property.Array({ displayName: 'BCC', required: false, }), imported: Property.Checkbox({ displayName: 'Imported', required: false, }), }, async run({ auth, propsValue }) { if (propsValue.tags) { const uniqueTags = new Set(propsValue.tags); if (uniqueTags.size !== propsValue.tags.length) { throw new Error('Tags must be unique.'); } } if (propsValue.cc) { const uniqueCC = new Set(propsValue.cc); if (uniqueCC.size !== propsValue.cc.length) { throw new Error('CC emails must be unique.'); } } if (propsValue.bcc) { const uniqueBCC = new Set(propsValue.bcc); if (uniqueBCC.size !== propsValue.bcc.length) { throw new Error('BCC emails must be unique.'); } } const customer = { email: propsValue.customerEmail }; const payload: Record<string, any> = { type: 'chat', mailboxId: propsValue.mailboxId, subject: propsValue.subject, customer, status: propsValue.status, threads: [ { type: propsValue.threadType, text: propsValue.body, customer, imported: propsValue.imported, ...(propsValue.cc && propsValue.threadType === 'customer' && propsValue.cc.length > 0 && { cc: propsValue.cc }), ...(propsValue.bcc && propsValue.threadType === 'customer' && propsValue.bcc.length > 0 && { bcc: propsValue.bcc }), }, ], tags: propsValue.tags, ...(propsValue.assignTo && { assignTo: Number(propsValue.assignTo) }), ...(propsValue.fromUser && { user: Number(propsValue.fromUser) }), }; Object.keys(payload).forEach((key) => { if (payload[key] === undefined || payload[key] === null) { delete payload[key]; } }); Object.keys(payload['threads'][0]).forEach((key) => { if ( payload['threads'][0][key] === undefined || payload['threads'][0][key] === null ) { delete payload['threads'][0][key]; } }); const response = await helpScoutApiRequest({ method: HttpMethod.POST, url: '/conversations', auth, body: payload, }); const convoId = response.headers?.['resource-id']; return { id:convoId } }, });

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