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
- Crie um endpoint de Webhook e inscreva-o nos tipos de evento.
- Armazene o
secretdo endpoint retornado. - A YCloud envia uma solicitação de evento para o seu endpoint.
- Verifique o
YCloud-Signatureantes de confiar na solicitação. - Retorne uma resposta
2xxprontamente. - Processe o evento de forma idempotente, pois a entrega pode ser repetida.
Solicitação
Crie um endpoint comPOST /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.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:
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 assinaturasecret. 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 ourl 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:
- Ler o corpo bruto da requisição.
- Validar o cabeçalho
YCloud-Signaturecom o segredo do endpoint antes de confiar no payload. - Retornar uma resposta
2xxcom sucesso prontamente. - Mover processamentos lentos para uma fila.
- Tornar o processamento do evento idempotente para que entregas repetidas não repitam ações de negócios.
Resposta do receptor
Retorne uma resposta HTTP2xx de sucesso assim que a assinatura e a requisição forem
aceitas. O corpo da resposta pode ser vazio.
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.Evento de atributos de contato alterados
Evento de atributos de contato alterados
Exemplo de payload quando os atributos de contato são alterados
Evento de contato criado
Evento de contato criado
Exemplo de payload quando um novo contato é criado
Evento de contato excluído
Evento de contato excluído
Exemplo de payload quando um contato é excluído
Evento de cancelamento de assinatura pelo cliente
Evento de cancelamento de assinatura pelo cliente
Exemplo de payload quando um cliente cancela a assinatura
Cliente retoma assinatura
Cliente retoma assinatura
Exemplo de payload quando um cliente retoma a assinatura
Evento de modelo do WhatsApp arquivado
Evento de modelo do WhatsApp arquivado
Exemplo de payload quando um modelo do WhatsApp é arquivado
Evento de modelo do WhatsApp desarquivado
Evento de modelo do WhatsApp desarquivado
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.
Evento de chamada do WhatsApp conectada
Evento de chamada do WhatsApp conectada
Exemplo de payload quando uma chamada do WhatsApp é conectada
Evento de chamada do WhatsApp encerrada
Evento de chamada do WhatsApp encerrada
Exemplo de payload quando uma chamada do WhatsApp é encerrada
Evento de status da chamada do WhatsApp atualizado
Evento de status da chamada do WhatsApp atualizado
Exemplo de payload quando o status de uma chamada do WhatsApp é atualizado
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: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.
