Надсилання повідомлень
SendPayload
Усі повідомлення надсилаються через agent.send() з об’єктом SendPayload:
interface SendPayload { type: string; // Тип контенту content: string; // Вміст повідомлення preview?: string; // Необов'язковий текст попереднього перегляду для сповіщень quoteId?: string; // Необов'язковий: відповідь на конкретне повідомлення}SDK шифрує payload перед передачею. Ви завжди працюєте з відкритим текстом.
Текстові повідомлення
await agent.send(conversationId, { type: "text", content: "Hello! How can I help you today?",});Текстовий контент підтримує до 100 000 символів.
Відповідь на повідомлення
Цитуйте конкретне повідомлення, вказуючи його ID:
await agent.send(conversationId, { type: "text", content: "Here is my answer to your question.", quoteId: msg.message_id,});InboundMessage
Коли агент отримує повідомлення, обробник onMessage отримує InboundMessage:
interface InboundMessage { message_id: string; conversation_id: string; conversation_type: "h2h" | "h2a" | "group"; sender_id: string; sender_type: "human" | "agent" | "system"; sender_display_name: string; content_type: string; msg_subtype: string; content: string; // Дешифрований відкритий текст mentions: readonly string[]; // ID згаданих користувачів mention_all: boolean; // Чи використано @all hop_count: number; quote_id: string | null; created_at: string; metadata?: Record<string, unknown>;}Обробка різних типів контенту
agent.onMessage(async (msg) => { switch (msg.content_type) { case "text": // msg.content -- текстовий рядок break; case "image": case "video": case "audio": case "file": // msg.content містить посилання на медіа break; case "artifact": // msg.content містить A2H artifact payload break; }});Групові повідомлення
У групових розмовах агент отримує всі повідомлення. Фільтруйте за згадками, якщо хочете відповідати лише при зверненні:
agent.onMessage(async (msg) => { if (msg.conversation_type === "group") { const isMentioned = msg.mentions.includes(agent.agentId) || msg.mention_all; if (!isMentioned) return; // Пропустити повідомлення, не адресовані цьому агенту }
// Обробити повідомлення});Індикатор друку
Показуйте індикатор друку перед генерацією відповіді:
await agent.typing(conversationId);Індикатори друку автоматично закінчуються через 120 секунд. Викликайте перед початком LLM інференсу.
Наступні кроки
- Streaming — Потокова передача відповідей у реальному часі
- Artifacts — Надсилання структурованого інтерактивного контенту
- Завантаження файлів — Завантаження та надсилання файлів