Ir para o conteúdo

Recebendo notificações através do Webhook Endpoint#

A tecnologia Webhook Endpoint permite receber notificações de entrada diretamente no seu servidor. Isso significa que o servidor Green API executará a chamada de um método publicado no lado do seu servidor. As vantagens desta tecnologia incluem o recebimento extremamente rápido de notificações de entrada e alta capacidade de processamento, limitada apenas pela velocidade de processamento das notificações no lado do seu servidor. A complexidade de implementação pode ser vista como uma desvantagem.

O servidor Green API tenta entregar as notificações a cada 1 minuto. Portanto, configure o seu servidor de forma a estar sempre disponível para processar notificações de entrada, ou utilize a tecnologia Recebendo notificações através da HTTP API. A entrega de notificações de entrada é garantida dentro de 24 horas.

Configuração do servidor#

Para receber notificações de entrada através da tecnologia Webhook Endpoint, é necessário executar os seguintes passos:

  • Publicar o endereço IP na Internet
  • Implementar a lógica de processamento das notificações de entrada no IP especificado
  • Se necessário para o servidor, instalar o Webhook URL Token

Endereço IP público#

Para receber notificações de entrada, é necessário ter um endereço IP público (endpoint) que esteja acessível pela Internet. Assim, o servidor Green API poderá chamar o seu servidor no endereço especificado e entregar a notificação de entrada.

Nossos endereços IP públicos, de onde são enviadas as notificações#

Você pode especificar os seguintes endereços IP, de onde as notificações são enviadas por nós, nas configurações de segurança do seu servidor:

51.250.84.44
51.250.94.65
51.250.91.13
51.250.93.251
51.250.76.115
51.250.69.65
51.250.68.181
51.250.69.45
51.250.74.200
51.250.87.205

Processando notificações de entrada#

Após receber uma chamada no endereço IP do seu servidor, será necessário processar a notificação recebida. Um exemplo de código para processar uma notificação de entrada em NodeJS pode ser encontrado neste arquivo.

Configuração da conta#

Antes de receber notificações de entrada, é necessário configurar a conta. A configuração da conta pode ser feita programaticamente usando o método SetSettings, ou interativamente na interface do painel de controle pessoal.

Configuração através do método SetSettings#

Para configurar o recebimento de notificações de entrada através da tecnologia Webhook Endpoint, você deve especificar o valor do seu endereço IP ou do seu nome de domínio como parâmetro webhookUrl, e, se necessário, webhookUrlToken para acessar o seu servidor. Por exemplo:

https://84.211.100.201:3000/green-api/webhook/

Também é necessário indicar quais tipos de notificações devem ser recebidos. Para ativar notificações de entrada por tipos, e também para definir o parâmetro webhookUrl e webhookUrlToken, use o método SetSettings.

Exemplo de corpo de solicitação do método SetSettings#

{
    "webhookUrl": "https://84.211.100.201:3000/green-api/webhook/",
    "webhookUrlToken": "dscnsdiuafkascndjhsalbcvatsvcbasn23rfregvfdg54tds",
    "outgoingWebhook": "yes",
    "stateWebhook": "yes",
    "incomingWebhook": "yes",
    "deviceWebhook": "no"
}

Recebendo notificações de entrada#

Após configurar a conta, você pode começar a receber notificações. Exemplos de código para processar notificações de entrada:

Depuração de notificações de entrada#

Para depurar notificações de entrada, você pode usar qualquer serviço gratuito na Internet, como o serviço Webhook.Site. O serviço fornece um endereço único (URL) que deve ser definido como valor do parâmetro webhookUrl.

A descrição detalhada do formato das notificações de entrada é apresentada na seção Formato das notificações de entrada.

Exemplo de solicitação enviada pelo green-api:

curl --request POST 'your-webhook-url-address' \
--header 'Content-Type: application/json; charset=utf-8' \
--data-raw '{"typeWebhook":"statusInstanceChanged","instanceData":{"idInstance":000001,"wid":"7123456789@c.us","typeInstance":"whatsapp"},"timestamp":1654553712,"statusInstance":"online"}'