Para o catálogo exaustivo derivado do esquema, consulte todos os exemplos.
O que é
Gerencie eventos de análise, atualização e exclusão de contas comerciais, além de exclusão de número de telefone, análise do nome de exibição, qualidade e atualizações do Business Username. Roteie cada payload pelo seutype exato de evento: eventos de conta usam whatsappBusinessAccount, enquanto eventos de número de telefone usam whatsappPhoneNumber.
Antes de começar
- Crie um endpoint HTTPS público em sua aplicação.
- Configure um endpoint de webhook da YCloud para os tipos de evento de que você precisa.
- Armazene o segredo de assinatura do endpoint com segurança.
- Torne o processamento de eventos idempotente.
Como funciona
A YCloud envia uma requisição HTTPPOST quando o evento ocorre. Verifique a assinatura, registre o evento de forma duradoura, retorne uma resposta 2xx e processe tarefas lentas de forma assíncrona.
Requisição
Os cenários abaixo mostram requisições entregues à sua URL de webhook. Trate oid do evento como o identificador de entrega e use type para rotear o payload.
Resposta
Retorne um status2xx após aceitar o evento.
Para configuração de endpoints, validação de assinatura e comportamento de novas tentativas, consulte Configurar webhooks.
Exclusão de conta
Usewhatsapp.business_account.deleted para processar um evento de exclusão de conta do WhatsApp Business. Leia whatsappBusinessAccount.id para identificar a WABA afetada.
Requisição
Resposta
Confirme a entrega após aceitar o evento de forma duradoura.Explicação
Os campos de remoção aparecem diretamente dentro dewhatsappBusinessAccount quando disponíveis.
Os valores conhecidos de
removedReason incluem:
Preserve valores desconhecidos de motivo e iniciador. Elimine duplicações de entregas pelo
id do evento e tolere campos de remoção omitidos.
Authentication-International Rate Eligibility
A partir de 1º de junho de 2024, estamos introduzindo uma nova tarifa de autenticação internacional. Essa tarifa será aplicada nos seguintes países:- 1º de junho de 2024 – Indonésia (código de discagem do país +62, código do país
ID) - 1º de julho de 2024 – Índia (código de discagem do país +91, código do país
IN)
whatsapp.business_account.updated será disparado se a sua empresa for considerada elegível para tarifas internacionais. O webhook incluirá os horários de início para cada país que possua uma tarifa de autenticação internacional.
Requisição
Resposta
Confirme a entrega após aceitar o evento de forma duradoura.whatsappMessage.pricingCategory nos webhooks whatsapp.message.updated será definido como authentication_international.
Aqui está um exemplo:
Explicação
Roteie o evento portype, remova duplicatas por id e transfira tarefas lentas ou sujeitas a falhas para um processador assíncrono.
Primary Business Location Update
Sua localização comercial principal é o país onde sua empresa está sediada. Ela aparecerá no Gerenciador de Negócios sob o campo Localização comercial principal a partir de 1º de maio de 2024. Se a Meta conseguir determinar o país onde sua empresa está sediada, dispararemos um webhookwhatsapp.business_account.updated com o código de dois dígitos do país.
Aqui está um exemplo:
Requisição
Resposta
Confirme a entrega após aceitar o evento de forma duradoura.Explicação
Roteie o evento portype, remova duplicatas por id e transfira tarefas lentas ou sujeitas a falhas para um processador assíncrono.
Atualização do limite de cadastro de números de telefone
A Meta envia uma atualização de capacidade de negócios para uma WABA quando o limite de cadastro de números de telefone do Portfólio empresarial ou da WABA correspondente é alterado. A YCloud a entrega comowhatsapp.business_account.updated com updateEvent=BUSINESS_CAPABILITY_UPDATE.
O webhook ocorre no nível da WABA: whatsappBusinessAccount.id é o ID da WABA da entrada do webhook da Meta. Atualmente, a Meta informa maxPhoneNumbersPerBusiness e maxPhoneNumbersPerWaba em atualizações separadas. Não os trate como mutuamente exclusivos: processe cada campo de forma independente e aceite ambos se uma atualização futura os incluir juntos. Um valor de 0 é válido.
Aqui está um exemplo de uma atualização de limite de números de telefone da WABA:
Requisição
Resposta
Confirme a entrega após aceitar o evento de forma duradoura.Explicação
Roteie o evento portype, remova duplicatas por id e atualize apenas o campo de limite incluído no payload.
Violação de conta
Quando você receber um eventowhatsapp.business_account.updated com whatsappBusinessAccount.updateEvent definido como ACCOUNT_VIOLATION, inspecione whatsappBusinessAccount.violationType para identificar a violação de política informada.
Consulte Violações de aplicação de políticas da Meta para ver os tipos de violação e descrições. A Meta pode atualizar esta lista ao longo do tempo.
Aqui está um exemplo:
Requisição
Resposta
Confirme a entrega após aceitar o evento de forma duradoura.Explicação
Roteie o evento portype, remova duplicatas por id e mova tarefas lentas ou propensas a falhas para um processador assíncrono.
Restrição de conta
Se as contas do WhatsApp Business violarem repetidamente os Termos de Serviço do WhatsApp Business ou categorias de políticas de alto risco, como envio de spam, conteúdo adulto, venda de álcool e tabaco, drogas, jogos de azar e suplementos não seguros, elas poderão começar a sofrer restrições de mensagens que aumentam gradualmente de duração. Para o Utility Direct Send, consulte Notificações do Direct Send para ver um payloadACCOUNT_RESTRICTION da YCloud. Consulte Webhook para restrição de conta da Meta para obter detalhes de restrição e tipos de violação específicos do Direct Send.
Aqui está um exemplo:
Requisição
Resposta
Confirme a entrega após aceitar o evento de forma duradoura.Explicação
Roteie o evento portype, remova duplicatas por id e mova tarefas lentas ou propensas a falhas para um processador assíncrono.
Restrição do Utility Direct Send
Você recebewhatsapp.business_account.updated quando a Meta restringe o Utility Direct Send após o uso indevido recorrente da categoria. Este exemplo mostra uma restrição de sete dias.
Requisição
Resposta
Confirme a entrega após aceitar o evento de forma duradoura.Explicação
UsewhatsappBusinessAccount.id para identificar a WABA afetada e pausar o fluxo de trabalho do Utility Direct Send. Leia violationType para saber o motivo, restrictions[].restrictionType para ver a funcionalidade afetada e restrictions[].expiration para conferir a data de expiração, quando fornecida. Uma análise bem-sucedida de um modelo não remove automaticamente uma restrição no nível da conta. Consulte Restrições e notificações do Direct Send.
Conta desativada
As contas do WhatsApp Business podem ser desativadas se a empresa não fizer alterações após vários avisos e limites ou bloqueios de recursos. Aqui está um exemplo:Requisição
Resposta
Confirme a entrega após aceitar o evento de forma duradoura.Explicação
Roteie o evento portype, remova duplicatas por id e mova tarefas lentas ou propensas a falhas para um processador assíncrono.
Restabelecimento de conta
Você pode recorrer da decisão de banimento da conta do WhatsApp Business para restabelecê-la. Uma vez aprovada, o status de análise da conta muda paraAPPROVED.
Aqui está um exemplo:
Requisição
Resposta
Confirme a entrega após aceitar o evento de forma duradoura.Explicação
Roteie o evento portype, remova duplicatas por id e mova tarefas lentas ou propensas a falhas para um processador assíncrono.
Análise de conta comercial
Usewhatsapp.business_account.reviewed quando uma conta do WhatsApp Business tiver sido analisada.
Requisição
Resposta
Confirme a entrega após aceitar o evento de forma duradoura.Explicação
Identifique a WABA comid. Leia decision para conferir a decisão da análise (APPROVED ou REJECTED) e accountReviewStatus para o status de análise da conta quando fornecido. Não roteie este evento como whatsapp.business_account.updated.
Exclusão de número de telefone
Usewhatsapp.phone_number.deleted quando um número de telefone comercial do WhatsApp for excluído.
Requisição
Resposta
Confirme a entrega após aceitar o evento de forma duradoura.Explicação
UsewhatsappPhoneNumber.id para identificar o número de telefone excluído e wabaId para associá-lo à respectiva conta. Este é um evento de número de telefone; não o trate como a exclusão de toda a WABA.
Análise do nome de exibição do número de telefone
Usewhatsapp.phone_number.name_updated quando o nome de exibição de um número de telefone comercial for aprovado ou rejeitado.
Requisição
Resposta
Confirme a entrega após aceitar o evento de forma duradoura.Explicação
Leiadecision e os campos de status do nome fornecidos. newNameStatus descreve a nova solicitação de nome de exibição, requestedVerifiedName identifica o último nome solicitado e rejectionReason descreve a rejeição quando houver. A análise do nome de exibição é separada de uma atualização de nome de usuário comercial.
Atualização da qualidade do número de telefone
Usewhatsapp.phone_number.quality_updated para alterações no status relacionado à qualidade de um número de telefone comercial.
Requisição
Resposta
Confirme a entrega após aceitar o evento de forma duradoura.Explicação
LeiaqualityRating (GREEN, YELLOW ou RED) e qualityUpdateEvent para entender a atualização. messagingLimit é o nível do número de telefone; whatsappBusinessManagerMessagingLimit é o limite do portfólio empresarial proprietário. Mantenha esses campos separados e atualize apenas os valores fornecidos no evento.
Nome de usuário comercial ativado
Usewhatsapp.phone_number.business_username_updated para sincronizar o nome de usuário comercial de um número de telefone.
Requisição
Resposta
Confirme a entrega após aceitar o evento de forma duradoura.Explicação
businessUsername é o nome de usuário ativo sem um @ inicial. Leia businessUsernameStatus e businessUsernameUpdatedAt com o id do número de telefone. Não confunda esse valor com o nome de exibição verificado.
Solicitação de nome de usuário comercial reservada
Um nome de usuário comercial ativo pode continuar em uso enquanto uma solicitação de substituição estiver reservada.Requisição
Resposta
Confirme a entrega após aceitar o evento de forma duradoura.Explicação
Neste exemplo,businessUsername permanece acme.support enquanto requestedBusinessUsername está acme.help. O status reserved descreve a solicitação pendente, não a ativação da substituição. Aceite o valor legado pending_review ao ler eventos mais antigos; novas gravações usam reserved.
