Saltar para o conteúdo principal

O que é

Webhooks são solicitações HTTPS que a YCloud envia para o seu aplicativo quando a entrega de mensagens, mensagens recebidas, contatos, modelos, chamadas e outros recursos são alterados.

Antes de começar

  • Armazene sua chave de API da YCloud em YCLOUD_API_KEY.
  • Implante um endpoint HTTPS publicamente acessível.
  • Preserve o corpo bruto da solicitação para verificação de assinatura.
  • Decida quais tipos de eventos seu aplicativo precisa.

Como funciona

  1. Crie um endpoint de Webhook e inscreva-o nos tipos de evento.
  2. Armazene o secret do endpoint retornado.
  3. A YCloud envia uma solicitação de evento para o seu endpoint.
  4. Verifique o YCloud-Signature antes de confiar na solicitação.
  5. Retorne uma resposta 2xx prontamente.
  6. Processe o evento de forma idempotente, pois a entrega pode ser repetida.

Solicitação

Crie um endpoint com POST /webhookEndpoints.

Campos da solicitação

Exemplo de solicitação

Inscrever-se em eventos de echo e handover

Para Agents integrados por meio da API REST pública, crie um endpoint com as seguintes inscrições. Agents criados no Console não emitem esses três eventos. Para alterar um endpoint existente, preserve todas as inscrições de eventos de que você ainda precisa.
Os dois tipos de eventos de echo contêm uma carga útil whatsappMessage no formato de mensagem padrão. O evento de handover contém whatsappMetaBusinessAgent e mantém suas informações de Agent/controle. Eles não usam o contrato whatsapp.smb.message.echoes do WhatsApp Business App. Consulte os detalhes dos eventos de echo e handover para definições de campos, exemplos, ordenação e limites de correlação de handover.

Inscrever-se em eventos de mensagens do Messenger

Inclua os nomes dos eventos necessários em enabledEvents ao criar ou atualizar um endpoint. Por exemplo, inscreva-se em todos os quatro com:
No Dashboard, um novo endpoint começa sem nenhum evento selecionado. Selecionar a categoria Messenger seleciona seus eventos disponíveis, incluindo edições e reações. Você pode desmarcar eventos individuais em seguida. As inscrições existentes não incluem automaticamente eventos de edição ou reação adicionados recentemente. Preserve todas as inscrições de que você ainda precisa ao atualizar um endpoint. Uma edição mantém o mesmo messengerInboundMessage.id e metaMessageId, substitui text.body e adiciona editCount e editTime. Os campos sendTime e createTime da mensagem permanecem inalterados; o envelope do evento createTime é o horário da edição. Mensagens não editadas omitem os campos de edição. Apenas uma mensagem recebida existente é atualizada. Edições mais antigas são ignoradas; mensagens ausentes e edições históricas não são reconstruídas. Correlacione as atualizações pelo ID da mensagem e use a contagem cumulativa para evitar aplicar um texto mais antigo sobre uma versão mais nova. Tentativas repetidas da origem podem criar outro ID de evento para a mesma edição salva. Consulte o exemplo de edição de mensagem recebida. Os eventos de reação contêm pageId, o psid do cliente que reagiu, o alvo metaMessageId e a ação action (react ou unreact). Os campos opcionais reaction e emoji podem estar ausentes, especialmente para unreact. Uma reação não altera o estado de entrega de uma mensagem. A mensagem de destino pode ser originada fora da API da YCloud, de modo que o evento não exige um registro local de mensagem nem inclui um ID de mensagem local. O campo createTime do evento retém o horário da interação de origem. Novas tentativas de entrega de um cliente mantêm o id e a carga útil do evento. O processamento de retornos da origem pode produzir outro ID de evento para uma interação repetida; não trate IDs de eventos como identidades de reações ou mensagens. Consulte os exemplos de carga útil de reação para ambas as ações.

Resposta

A resposta retorna o endpoint criado e seu segredo de assinatura secret. Armazene o segredo com segurança. A YCloud o utiliza para gerar assinaturas de Webhook.

Exemplo de resposta

Campos de resposta

Receber eventos

Requisição do evento

A YCloud envia um objeto de evento JSON para o url configurado. O evento inclui campos comuns como id, type, apiVersion e createTime, além de um payload específico para o tipo. Seu handler deve:
  1. Ler o corpo bruto da requisição.
  2. Validar o cabeçalho YCloud-Signature com o segredo do endpoint antes de confiar no payload.
  3. Retornar uma resposta 2xx com sucesso prontamente.
  4. Mover processamentos lentos para uma fila.
  5. Tornar o processamento do evento idempotente para que entregas repetidas não repitam ações de negócios.
Não analisar (parse) nem modificar o corpo da requisição antes da validação da assinatura. Use exatamente os bytes brutos recebidos pelo seu servidor.

Resposta do receptor

Retorne uma resposta HTTP 2xx de sucesso assim que a assinatura e a requisição forem aceitas. O corpo da resposta pode ser vazio.
Mova o processamento de negócios lento para uma fila. Um tempo limite esgotado (timeout) ou uma resposta que não seja 2xx pode fazer com que a YCloud tente reenviar o evento, portanto faça a desduplicação pelo id do evento.

Exemplos comuns de payload

Expanda um evento para inspecionar o exemplo de payload completo. Esses exemplos vêm da especificação OpenAPI para webhooks. Consulte todos os exemplos de payload de webhook para cada tipo de evento suportado.
Exemplo de payload quando os atributos de contato são alterados
Exemplo de payload quando um novo contato é criado
Exemplo de payload quando um contato é excluído
Exemplo de payload quando um cliente cancela a assinatura
Exemplo de payload quando um cliente retoma a assinatura
Exemplo de payload quando um modelo do WhatsApp é arquivado
Exemplo de payload quando um modelo do WhatsApp é desarquivado. O status do modelo é o status atual retornado pela Meta e não representa uma nova análise de aprovação.
Exemplo de payload quando uma chamada do WhatsApp é conectada
Exemplo de payload quando uma chamada do WhatsApp é encerrada
Exemplo de payload quando o status de uma chamada do WhatsApp é atualizado
Consulte Payloads de eventos de webhook para obter o esquema Event completo e a referência interativa de payloads.

Alternar o segredo do endpoint

Alterne um segredo se ele for exposto ou como parte de sua política de segurança:
Implemente o novo segredo no seu receptor imediatamente após a alternância.
Um endpoint que falha repetidamente ao receber notificações pode mudar para o status pending e parar de receber eventos. Monitore as falhas de webhook e o status do endpoint.
Para obter o código de verificação de assinatura, intervalos de nova tentativa e implementação do receptor, consulte Implementar um receptor de webhook.