Os Webhooks permitem integração em tempo real entre a l2msg WhatsApp API e o WhatsApp™, permitindo sincronização e compartilhamento automatizados de dados.

É exatamente esse recurso que possibilita a criação de bots de autoatendimento e sistemas multi-serviço.

Ativando Webhooks

  • Chamando o endpoint /webhook/instance

Eventos de webhook da instância

A maioria dos usuários preferirá a ativação por instância, desta forma é mais fácil controlar os eventos recebidos, no entanto em alguns casos é necessário um webhook global, isso pode ser feito usando a variável de webhook global.

Aqui está um exemplo com alguns eventos comuns ouvidos:

/webhook/instance
{
  "url": "{{webhookUrl}}",
  "webhook_by_events": false,
  "webhook_base64": false,
  "events": [
    "QRCODE_UPDATED",
    "MESSAGES_UPSERT",
    "MESSAGES_UPDATE",
    "MESSAGES_DELETE",
    "SEND_MESSAGE",
    "CONNECTION_UPDATE",
    "TYPEBOT_START",
    "TYPEBOT_CHANGE_STATUS"
  ]
}

Parâmetros

ParâmetroTipoObrigatórioDescrição
enabledbooleanSimInsira “true” para criar ou alterar dados do Webhook, ou “false” se quiser parar de usá-lo.
urlstringSimURL do Webhook para receber dados do evento.
webhook_by_eventsbooleanNãoDeseja gerar uma URL específica do Webhook para cada um dos seus eventos.
eventsarrayNãoLista de eventos a serem processados. Se você não quiser usar alguns desses eventos, apenas remova-os da lista.

É extremamente necessário que o payload obedeça às regras para criar um arquivo JSON, considerando o arranjo correto de itens, formatação, colchetes, chaves e vírgulas, etc. Antes de consumir o endpoint, se tiver dúvidas sobre a formatação JSON, vá para https://jsonlint.com/ e valide.

Eventos Suportados

Estes são os eventos de webhook disponíveis e suportados:

Variável de ambienteURLDescrição
APPLICATION_STARTUP/application-startupNotifica quando uma inicialização de aplicativo ocorre
QRCODE_UPDATED/qrcode-updatedEnvia o base64 do qrcode para leitura
CONNECTION_UPDATE/connection-updateInforma o status da conexão com o WhatsApp
MESSAGES_SET/messages-setEnvia uma lista de todas as suas mensagens carregadas no WhatsApp. Este evento ocorre apenas uma vez
MESSAGES_UPSERT/messages-upsertNotifica quando uma mensagem é recebida
MESSAGES_UPDATE/messages-updateInforma quando uma mensagem é atualizada
MESSAGES_DELETE/messages-deleteInforma quando uma mensagem é excluída
SEND_MESSAGE/send-messageNotifica quando uma mensagem é enviada
CONTACTS_SET/contacts-setRealiza o carregamento inicial de todos os contatos. Este evento ocorre apenas uma vez
CONTACTS_UPSERT/contacts-upsertRecarrega todos os contatos com informações adicionais. Este evento ocorre apenas uma vez
CONTACTS_UPDATE/contacts-updateInforma quando o contato é atualizado
PRESENCE_UPDATE/presence-updateInforma se o usuário está online, se ele está realizando alguma ação como escrever ou gravar e seu último visto: ‘indisponível’, ‘disponível’, ‘compondo’, ‘gravando’, ‘pausado’
CHATS_SET/chats-setEnvia uma lista de todos os chats carregados
CHATS_UPDATE/chats-updateInforma quando o chat é atualizado
CHATS_UPSERT/chats-upsertEnvia qualquer nova informação de chat
CHATS_DELETE/chats-deleteNotifica quando um chat é excluído
GROUPS_UPSERT/groups-upsertNotifica quando um grupo é criado
GROUPS_UPDATE/groups-updateNotifica quando um grupo tem suas informações atualizadas
GROUP_PARTICIPANTS_UPDATE/group-participants-updateNotifica quando uma ação ocorre envolvendo um participante: ‘adicionar’, ‘remover’, ‘promover’, ‘rebaixar’
NEW_TOKEN/new-jwtNotifica quando o token (jwt) é atualizado

Localizando Webhook

Se necessário, há uma opção para localizar qualquer webhook ativo na instância específica.

MétodoEndpoint
GET[baseUrl]/webhook/find/[instance]

Dados retornados da solicitação:

Chamando o endpoint retornará todas as informações sobre o webhook que está sendo usado pela instância.

Resultado
{
  "enabled": true,
  "url": "[url]",
  "webhookByEvents": false,
  "events": [
    [eventos]
  ]
}