Webhook
Webhooks são retornos de chamada de HTTP definidos pelo usuário que são acionados por eventos específicos. Sempre que ocorrer um evento de acionamento, o cliente da API do WhatsApp Business verá o evento, coletará os dados e imediatamente enviará uma notificação (solicitação HTTP) ao URL do WhatsApp especificado nas configurações do aplicativo atualizando o status das mensagens enviadas ou indicando quando você receber uma mensagem.É importante que seu Webhook retorne uma resposta HTTPS 200 OK às notificações. Caso contrário, o cliente da API do WhatsApp Business considerará essa notificação uma falha e tentará novamente após um atraso.
Configuração do Webhook
Para receber notificações, o cliente precisa cadastrar a URL do seu Webhook no número. Definir/atualizar a URL do Webhook:webhook é opcional (pode ser null para remover) e tem no máximo 255 caracteres. Se a URL do Webhook não estiver definida, as notificações não serão entregues.
Além do Webhook principal, é possível configurar um webhook secundário (
secondary_webhook). Quando definido, ele recebe as mesmas notificações que o Webhook principal."Beep Beep!") para a URL configurada:
É importante que seu Webhook retorne uma resposta HTTP 200 OK às notificações. Caso contrário, a notificação será considerada uma falha e haverá tentativas de reenvio.
Definir configurações de notificações
Os números da Positus utilizam a WhatsApp Cloud API. O cliente recebe, na URL de Webhook cadastrada, um subconjunto normalizado do payload da Meta (sem o envelopeentry/changes). Os objetos entregues são os objetos crus da Cloud API.
| Nome | conteúdo do objeto |
|---|---|
| messages | Notificações de mensagens de entrada |
| statuses | Atualizações de status das mensagens |
| errors | Erros sérios fora da banda |
Sempre que possível, os nomes serão mantidos constantes nas funções. (Por exemplo, todos os registros de data e hora são denominados
timestamp.Formato do Webhook de notificações
Uma notificação de mensagem recebida tem o topo{ "contacts": [...], "messages": [...] }. Uma notificação de status tem o topo { "statuses": [...], "contacts": [...] } (o contacts só está presente quando o status não é failed).
Exemplo (mensagem de texto recebida)
Atualizações de status das mensagens
Além das mensagens recebidas, o cliente recebe notificações de status das mensagens que enviou. Essas notificações têm o topo{ "statuses": [...], "contacts": [...] }.
Exemplo (status delivered)
status pode assumir os seguintes valores:
| Valor | Descrição |
|---|---|
sent | A mensagem foi enviada ao servidor do WhatsApp. |
delivered | A mensagem foi entregue ao dispositivo do destinatário. |
read | A mensagem foi lida pelo destinatário. |
failed | Houve falha no envio da mensagem. |
status é failed, o objeto de status inclui uma matriz errors com o detalhe da falha e o contacts não é enviado.
Exemplo (status failed)
Erros de notificações
Quando houver erros fora da banda que ocorrerem na operação normal do aplicativo, a matrizerrors fornecerá uma descrição do erro. Esse tipo de erro pode ser provocado por erros de conectividade de rede temporários, credenciais inválidas, controladores de gerenciamento com status indisponível e assim por diante. Se você receber um erro, consulte Mensagens de erro e status para obter mais informações.
Exemplo
O objeto
errors contém os seguintes parâmetros:
| Nome do campo | Descrição | Tipo |
|---|---|---|
| code | Código de erro | Numérico |
| title | Título do erro | Cadeia de caracteres |
| details | Opcional. Detalhes do erro fornecidos, se disponíveis/aplicáveis | Cadeia de caracteres |
| href | Opcional. Detalhes da localização do erro. | Cadeia de caracteres |
Notificações de mensagens de entrada
Você recebe uma notificação quando sua empresa recebe uma mensagem. A seção do objetomessages apresenta todas as informações que podem ser recebidas sobre uma mensagem de entrada.
Exemplo: Mensagem recebida Text
Exemplo: Mensagem de localização estática recebida
Exemplo: Mensagem com contatos recebida
Notificações de mensagens de mídia de entrada
Quando uma mensagem com mídia é recebida, a notificação enviada ao seu Webhook contém um objeto de mídia com os campos que identificam o arquivo. Na Cloud API, o objeto de mídia traz apenasid, mime_type e sha256 (mais caption opcional para imagem, documento e vídeo). Não há campos file nem link.
Para baixar a mídia, use o id no endpoint de download: GET https://api.positus.global/v2/whatsapp/numbers/{chave}/media/{id}.
Exemplo: Mensagem com imagem recebida
Exemplo: Mensagem com documento recebida
Exemplo: Mensagem com áudio recebida
Na Cloud API, mensagens de áudio (incluindo mensagens de voz) são entregues com o tipo
audio, não voice.Exemplo: Mensagem com vídeo recebida
Exemplo: Mensagem com figurinha recebida
Respostas de entrada a mensagens enviadas
Os usuários podem responder a uma mensagem específica no WhatsApp. Para que a empresa entenda o contexto da resposta a uma mensagem, incluímos o objetocontext. Esse objeto context fornece o id da mensagem à qual o cliente respondeu e o ID do WhatsApp do remetente da mensagem original.
Exemplo: Cliente respondeu à sua mensagem
Documentação oficial WhatsApp Cloud API
A Positus utiliza a WhatsApp Cloud API e entrega os objetos no mesmo formato do padrão oficial da Meta. A documentação completa e atualizada pode ser encontrada no link abaixo:https://developers.facebook.com/docs/whatsapp/cloud-api/webhooks/components