Skip to main content
Glama
send-message.ts4.9 kB
import { createAction, Property } from '@activepieces/pieces-framework'; import { customgptAuth } from '../common/auth'; import { projectId } from '../common/props'; import { makeRequest } from '../common/client'; import { HttpMethod } from '@activepieces/pieces-common'; export const sendMessage = createAction({ auth: customgptAuth, name: 'sendMessage', displayName: 'Send Message', description: 'Send a message to a conversation within an agent', props: { project_id: projectId, session_id: Property.ShortText({ displayName: 'Session ID', description: 'The session ID of the conversation', required: true, }), prompt: Property.LongText({ displayName: 'Prompt', description: 'The message/question to send', required: true, }), stream: Property.Checkbox({ displayName: 'Enable Streaming', description: 'Stream the response in real-time (default: false)', required: false, defaultValue: false, }), custom_persona: Property.LongText({ displayName: 'Custom Persona', description: 'Custom persona/instructions for the agent (optional)', required: false, }), chatbot_model: Property.StaticDropdown({ displayName: 'Agent Model', description: 'AI model to use for the conversation (optional)', required: false, options: { options: [ { label: 'GPT-4o', value: 'gpt-4o' }, { label: 'GPT-4o Mini', value: 'gpt-4o-mini' }, { label: 'GPT-4 Turbo', value: 'gpt-4-turbo' }, { label: 'GPT-4', value: 'gpt-4' }, { label: 'GPT-3.5 Turbo', value: 'gpt-3.5-turbo' }, { label: 'Claude 3.5 Sonnet', value: 'claude-3-5-sonnet-20240620' }, { label: 'Claude 3 Opus', value: 'claude-3-opus-20240229' }, { label: 'Claude 3 Sonnet', value: 'claude-3-sonnet-20240229' }, { label: 'Claude 3 Haiku', value: 'claude-3-haiku-20240307' }, { label: 'Gemini 1.5 Pro', value: 'gemini-1.5-pro' }, { label: 'Gemini 1.5 Flash', value: 'gemini-1.5-flash' }, { label: 'o1-preview', value: 'o1-preview' }, ], }, }), response_source: Property.StaticDropdown({ displayName: 'Response Source', description: 'Source for generating responses (default: use only your content)', required: false, defaultValue: 'default', options: { options: [ { label: 'Default (Your Content Only)', value: 'default' }, { label: 'Own Content', value: 'own_content' }, { label: 'OpenAI Content (Can improvise)', value: 'openai_content' }, ], }, }), agent_capability: Property.StaticDropdown({ displayName: 'Agent Capability', description: 'Capability mode for the agent (default: fastest-responses)', required: false, defaultValue: 'fastest-responses', options: { options: [ { label: 'Fastest Responses', value: 'fastest-responses' }, { label: 'Optimal Choice', value: 'optimal-choice' }, { label: 'Advanced Reasoning', value: 'advanced-reasoning' }, { label: 'Complex Tasks', value: 'complex-tasks' }, ], }, }), lang: Property.ShortText({ displayName: 'Language', description: 'Language code for the prompt (default: en)', required: false, defaultValue: 'en', }), custom_context: Property.LongText({ displayName: 'Custom Context', description: 'Additional context for the conversation (optional)', required: false, }), file: Property.File({ displayName: 'File', description: 'File to upload with the message (Max 5MB: pdf, docx, doc, odt, txt, jpg, jpeg, png, webp)', required: false, }), }, async run(context) { const { project_id, session_id, prompt, stream, custom_persona, chatbot_model, response_source, agent_capability, lang, custom_context, file, } = context.propsValue; const queryParams: any = { stream: stream ? 'true' : 'false', }; if (lang) queryParams.lang = lang; const body: any = { prompt, }; if (custom_persona) body.custom_persona = custom_persona; if (chatbot_model) body.chatbot_model = chatbot_model; if (response_source) body.response_source = response_source; if (agent_capability) body.agent_capability = agent_capability; if (custom_context) body.custom_context = custom_context; if (file) body.file = file; const queryString = '?' + new URLSearchParams(queryParams).toString(); const response = await makeRequest( context.auth.secret_text, HttpMethod.POST, `/projects/${project_id}/conversations/${session_id}/messages${queryString}`, body ); return response; }, });

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