ODocumentation Index
Fetch the complete documentation index at: https://zapo.to/llms.txt
Use this file to discover all available pages before exploring further.
client.bot (WaBotCoordinator) funciona com bots do WhatsApp - qualquer conta no domínio @bot. O Meta AI é o mais comum, mas não é o único bot; listBots() retorna todos os bots disponíveis para a sua conta. O coordinator descobre bots, lê seus perfis, envia prompts e descriptografa os chunks em stream da resposta de um bot.
Descobrindo bots e obtendo um JID de bot
Você não fixa JIDs de bot no código - você os descobre comlistBots() e escolhe um:
WaBotInfo.jid é o valor que você passa abaixo como to (caminho direto) ou options.botJid (caminho de menção).
Enviando um prompt
sendPrompt(to, content, options?) invoca um bot. Há dois caminhos, dependendo de to:
Caminho direto — conversar com o bot
Quandoto é um JID @bot, você está conversando com o bot diretamente. O zapo gera um novo aiThreadId (um id de conversa); reutilize-o em prompts posteriores para manter o contexto:
Caminho de menção — invocar um bot dentro de um grupo
Quandoto é um JID de grupo/chat, você precisa nomear o bot via options.botJid. O bot é invocado indiretamente através de uma menção:
No caminho de menção,
aiThreadId / aiThreadType são ignorados — os bots descartam a requisição se metadados de persona/thread forem anexados a uma menção.WaBotPromptOptions estende WaSendMessageOptions e adiciona botJid, personaId, capabilities, extraMentionedJids, aiThreadId e aiThreadType.
Recebendo a resposta em stream
A resposta de um bot não chega como uma únicamessage. Ela chega em stream como múltiplos chunks criptografados, expostos no evento message_bot_chunk. O zapo os descriptografa automaticamente a cada mensagem de entrada, então você só escuta:
| Campo | Significado |
|---|---|
senderJid | O bot. |
targetMessageId | O id do prompt que esta resposta responde — sua chave de stream. |
editType | Posição do chunk: first → inner → last, ou um único full. |
message | O conteúdo do chunk descriptografado (Proto.IMessage). |
plaintext | Bytes brutos descriptografados. |
Descriptografia manual de chunk
O zapo chamatryDecryptChunk para você a cada mensagem de entrada, então você raramente precisa dele. Se você gerencia os eventos de entrada por conta própria, pode invocá-lo explicitamente:
