API (push antigo)/Webhook

API (PUSH)

WhatsApp Business

Com a funcionalidade de API (PUSH) conseguimos conectar o nosso sistema com a funcionalidade de Webhooks ou requisições de sistemas externos, com o intuito de disparar uma mensagem para o WhatsApp de um cliente, tanto via WhatsApp business quanto via API Oficial do WhatsApp.

Com a função de WebHooks conseguimos enviar dados no formato JSON

Para acessar essas duas funcionalidades você precisa ir em Configurações -> API/Webhook

Configurações -> API/Webhook

Agora só clicar em ADICIONAR:

ADICIONAR

Vamos preencher apenas 3 campos para fazer o disparo:

Nome da API: descrição do sistema externo Enviar por: nome do canal do WhatsApp por onde as mensagens vão ser enviadas para o WhatsApp dos clientes. Ação no atendimento após o envio: Fechar: manter na aba de fechados após o envio Manter aberto: ficar na aba de pendentes sem departamento vinculado Redirecionar para fila: ficar na aba de pendentes com um departamento vinculado Redirecionar para usuário: enviar para a aba de ativos de um atendente

Agora só clicar em salvar que teremos o endpoint autenticado clicando no botão abaixo:

Url ou endpoint autenticado

O JSON padrão para o body da requisição quando utilizar WhatsApp Business:

{
  "number": "5598991199469", //número do WhatsApp do cliente (obrigatório!!!)
  "body": "seu texto aqui", //texto a ser enviado para o cliente (obrigatório!!!)
  "externalKey": "Qualquer valor", //qualquer valor, fica apenas nos logs (obrigatório!!!)
  "mediaUrl": "https://", //link de mídia. O sistema converte para arquivo e envia
  "userId": 183, //id do atendente
  "onlyNote": true, // Caso deseje enviar somente a nota interna, sem mensagem.
  "forceTicketToUser": true, // forçar ticket  para usuário
  "forceTicketToDepartment": true, /* deve ser utilizado junto à chave queueId, se
o cliente estiver na aba de fechados ou ativos, ele vai para a aba de pendetes.
Conseguimos alternar ou adicionar o departamento ao ticket. Pode ser usado em
consjunto com as chaves forceTicketToUser e userId, forçando um ticket para um
departamento e movendo para os ativos de um atendente*/
  "queueId": "435", //id do departamento
  "forceTicketToClosed": true, /* força ticket para aba de fechado. Pode ser usado
só ou em cojunto com um motivo de fechamento através do parâmetro closingReasonId*/
  "closingReasonId": 123 // id do motivo de fechamento
  "note": { //disparar nota interna (visível apenas para o atendente)
    "body": "seu texto aqui", //texto da nota interna
    "mediaUrl": "https://" // link da mídia para nota interna
  }
}

Os itens obrigatórios são o number, o body e o externalKey.

Foi falado anteriormente que não conseguimos direcionar o atendimento para um usuário (atendente) caso já tenha um ticket com aquele contato na aba de pendentes ou ativos no atendimento. Com o userId e o forceTicketToUser conseguimos abrir um ticket para um atendente não importa onde aquele contato esteja (com outro atendente, na aba de pendentes ou aba de fechados).

O mediaUrl converte um link de mídia em um arquivo nativo e envia para o cliente e/ou como nota interna.

O item note -> body faz você enviar um texto em uma nota interna que fica visível apenas para o atendente da mesma forma que o item note -> mediaUrl, que nesse caso envia um arquivo em nota interna.

Por fim, com o item onlyNote você consegue disparar apenas uma nota interna, sem enviar nada para o cliente.

API Oficial do WhasApp (WABA)

A url autenticada você vai encontrar no mesmo local, só que agora no item Enviar por, você vai adicionar uma canal com API oficial e o body vai ser esse:

{
  "number": "556400000000", //número do cliente
  "templateId": "uuid-template", //hsmId
  "params": ["variavel1", "variavel2"], //caso o template tenha variáveis
  "externalKey": "qualquer valor",
  "userId": 183, //id do atendente
  "onlyNote": true, // Caso deseje enviar somente a nota interna, sem mensagem.
  "forceTicketToUser": true, // forçar ticket  para usuário
  "forceTicketToDepartment": true, /* deve ser utilizado junto à chave queueId, se
o cliente estiver na aba de fechados ou ativos, ele vai para a aba de pendetes.
Conseguimos alternar ou adicionar o departamento ao ticket. Pode ser usado em
consjunto com as chaves forceTicketToUser e userId, forçando um ticket para um
departamento e movendo para os ativos de um atendente*/
  "queueId": "435", //id do departamento
  "forceTicketToClosed": true, /* força ticket para aba de fechado. Pode ser usado
só ou em cojunto com um motivo de fechamento através do parâmetro closingReasonId*/
  "closingReasonId": 123 // id do motivo de fechamento
  "note": { //disparar nota interna (visível apenas para o atendente)
    "body": "seu texto aqui", //texto da nota interna
    "mediaUrl": "https://" // link da mídia para nota interna
  }
}

Atualização 25/03/2025

Agora conseguimos disparar mensagem avulsa com a nossa API quando o cliente está na janela de 24 horas da API oficial. Acima conseguimos ver o padrão de JSON para envio de TEMPLATE via WABA. Se o cliente estiver na janela de 24 horas, é só utilizar o BODY do WhatsApp Business.

Atualização 21/05/2025

Forçar atendimento para departamento/aba de pendentes e encerrar atendimento via API

O Id do departamento (queueId) é encontrado em Configurações -> Departamentos

O Id do Motivo de Fechamento (closingReasonId) é encontrado em Configurações -> Motivos de fechamento

Webhook

Com a funcionalidade de Webhook, conseguimos enviar dados no formato de JSON para um sistema exteno através de eventos.

Você adiciona a URL do sistema externo no campo URL Webhook. Geralmente essas URL's vem autenticadas e você não precisa adicionar nada no campo abaixo (Token de autenticação). Depois só selecionar os eventos. Quando ocorrer algum deles será disparado um JSON com algumas informações, tais quais dados do contato, do atendimento ou do atendente para o sistema externo.

Last updated