Skip to main content
O webchat é um canal como os outros: cada webchat da empresa tem um channelId (veja GET /webchat ou GET /channels) e as conversas dele entram na caixa de entrada. Pela API você faz duas coisas com ele:

Falar com o visitante

A empresa envia mensagens para quem está no webchat, com POST /messages, inclusive mensagens interativas. Módulo messages.

Ser o visitante

O seu sistema abre a sessão de um usuário seu, envia as mensagens dele e lê as respostas da equipe. Módulo webchat.

Enviar para um visitante

O visitante do webchat não tem telefone obrigatório, então o destinatário é o ticketId de uma conversa ou o contactId de quem já abriu este webchat:
Contato que nunca abriu este webchat responde 422 ERR_API_CONTACT_UNREACHABLE. O resto do envio é igual aos outros canais: 202 com jobId, e a consulta do job em GET /messages/jobs/{jobId}. Veja Enviar mensagens.
O webchat não usa template. type: template só vale nos canais de WhatsApp oficial.

Mensagens interativas

O webchat mostra ao visitante as mesmas mensagens interativas da API oficial do WhatsApp, com o mesmo objeto interactive: o payload que você já manda para o WhatsApp oficial vale no webchat sem nenhuma adaptação. Só muda o channelId e o destinatário. flow, product, product_list, catalog_message, address_message, voice_call e call_permission_request dependem de recursos da Meta e não existem no webchat.
No webchat, o interactive é conferido na própria chamada, com os limites do WhatsApp (3 botões, 10 linhas, títulos de 20 ou 24 caracteres e os demais, listados no campo interactive de POST /messages). Fora deles, a resposta é 422 na hora, com o campo e o motivo na message:
Mídia do cabeçalho e dos cartões só por link público http ou https. O webchat não usa mídia enviada para a Meta (id).

A resposta do visitante

A escolha chega como no WhatsApp: uma mensagem de texto do visitante com o título da opção, respondendo (citando) a mensagem interativa. A localização chega como a do WhatsApp, com mediaType: locationMessage. Se você acompanha a conversa por GET /tickets/{ticketId}/messages, nada muda em relação ao WhatsApp.

Conversar como visitante

Com o módulo webchat, o seu sistema faz o papel do visitante: por exemplo, um app próprio que mostra o atendimento dentro dele.
1

Abra a sessão

Use o slug do webchat (de GET /webchat). Com externalId, a mesma pessoa volta sempre para a mesma sessão e o mesmo contato.
Guarde o session.id. A resposta também traz um visitorToken, que o seu front usa para receber as mensagens em tempo real (/webchat, Socket.IO, auth: { token }) sem expor o token da API.
2

Envie as mensagens do visitante

O primeiro envio abre o atendimento na fila do webchat. Arquivo vai em multipart/form-data, no campo media.
3

Leia as respostas

Sem tempo real, consulte com after igual ao createdAt da última mensagem recebida:
Marque como lidas com POST /webchat/{slug}/sessions/{sessionId}/read e encerre com POST /webchat/{slug}/sessions/{sessionId}/close.

Responder a uma mensagem interativa

Nas mensagens interativas da empresa, interactive traz o que desenhar (tipo, cabeçalho, corpo, rodapé e as opções) e options lista as opções de resposta com id e title. Para escolher uma, envie o id da mensagem e o id da opção:
O título gravado vem da própria mensagem: não é preciso, nem possível, mandar outro. Opção que não está na mensagem responde 422 ERR_WEBCHAT_INTERACTIVE_REPLY_INVALID. Para um pedido de localização (interactive.type: location_request), envie as coordenadas, citando o pedido:
Qualquer mensagem pode responder outra com quotedMessageId.

Enviar mensagens

Os quatro tipos de envio, o jobId e os estados do job.

Erros

Os códigos do webchat e das mensagens.