Skip to main content
Glama
new-conversation.ts2.59 kB
import { createTrigger, TriggerStrategy, AppConnectionValueForAuthProperty, } from '@activepieces/pieces-framework'; import { DedupeStrategy, HttpMethod, Polling, pollingHelper, } from '@activepieces/pieces-common'; import { chatlingAuth } from '../../index'; import { chatbotIdDropdown } from '../common/props'; import { makeRequest } from '../common'; import dayjs from 'dayjs'; type ConversationItem = { id: string; contact_id: string; archived: boolean; important: boolean; created_at: string; messages: { id: string; text: string; role: string }[]; }; const polling: Polling< AppConnectionValueForAuthProperty<typeof chatlingAuth>, { chatbotId: string } > = { strategy: DedupeStrategy.TIMEBASED, items: async ({ auth, propsValue, lastFetchEpochMS }) => { const response = await makeRequest<{ data: { conversations: ConversationItem[]; }; }>( auth.secret_text, HttpMethod.GET, `/chatbots/${propsValue.chatbotId}/conversations?sort=date_desc` ); const conversations = response.data.conversations; // Filter by lastFetchEpochMS if not first run const items = conversations .filter((conv) => { if (lastFetchEpochMS === 0) return true; return dayjs(conv.created_at).valueOf() > lastFetchEpochMS; }) .map((conv) => ({ epochMilliSeconds: dayjs(conv.created_at).valueOf(), data: conv, })); return items; }, }; export const newConversation = createTrigger({ auth: chatlingAuth, name: 'new_conversation', displayName: 'New Conversation', description: 'Triggers when a new conversation is started by a customer.', props: { chatbotId: chatbotIdDropdown, }, type: TriggerStrategy.POLLING, async onEnable(context) { await pollingHelper.onEnable(polling, { auth: context.auth, store: context.store, propsValue: context.propsValue, }); }, async onDisable(context) { await pollingHelper.onDisable(polling, { auth: context.auth, store: context.store, propsValue: context.propsValue, }); }, async test(context) { return await pollingHelper.test(polling, context); }, async run(context) { return await pollingHelper.poll(polling, context); }, sampleData: { id: 'conv_abc123', contact_id: 'contact_xyz', archived: false, important: false, created_at: '2024-01-15T10:30:00.000Z', messages: [ { id: 'msg_1', text: 'Hello, I need help with your product.', role: 'user', }, ], }, });

Latest Blog Posts

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