Перейти до вмісту

Надсилання повідомлень

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 — Надсилання структурованого інтерактивного контенту
  • Завантаження файлів — Завантаження та надсилання файлів