Saltar para o conteúdo principal
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 seu type 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 HTTP POST 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 o id do evento como o identificador de entrega e use type para rotear o payload.

Resposta

Retorne um status 2xx 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

Use whatsapp.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 de whatsappBusinessAccount 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)
Para obter mais informações, consulte Authentication-International Rate Eligibility . Um webhook 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.
Se uma mensagem for cobrada com a tarifa de autenticação internacional, o campo whatsappMessage.pricingCategory nos webhooks whatsapp.message.updated será definido como authentication_international. Aqui está um exemplo:

Explicação

Roteie o evento por type, 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 webhook whatsapp.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 por type, 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 como whatsapp.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 por type, remova duplicatas por id e atualize apenas o campo de limite incluído no payload.

Violação de conta

Quando você receber um evento whatsapp.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 por type, 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 payload ACCOUNT_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 por type, remova duplicatas por id e mova tarefas lentas ou propensas a falhas para um processador assíncrono.

Restrição do Utility Direct Send

Você recebe whatsapp.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

Use whatsappBusinessAccount.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 por type, 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 para APPROVED. Aqui está um exemplo:

Requisição

Resposta

Confirme a entrega após aceitar o evento de forma duradoura.

Explicação

Roteie o evento por type, remova duplicatas por id e mova tarefas lentas ou propensas a falhas para um processador assíncrono.

Análise de conta comercial

Use whatsapp.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 com id. 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

Use whatsapp.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

Use whatsappPhoneNumber.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

Use whatsapp.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

Leia decision 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

Use whatsapp.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

Leia qualityRating (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

Use whatsapp.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.