Pular para o conteúdo principal

O que são

Além dos eventos de template e do aviso de desconexão de canal, o webhook global do workspace pode receber dois grupos de eventos de conta:
  • Cobrança: pagamento recusado, pagamento recuperado, assinatura cancelada, instância suspensa e instância liberada por falta de pagamento.
  • Restrição da conta na Meta (ACCOUNT_RESTRICTION): a Meta restringiu a conta do WhatsApp Business (WABA), registrou uma violação ou agendou a desativação.
Esses eventos não dependem de canal. Eles chegam ao webhook global, o webhook de template, sem instância.

Como assinar

Inclua os eventos em events ao criar ou atualizar o webhook global:
  • Só no webhook global. O webhook de canal e o padrão de instância recusam esses eventos com 422.
  • Só no formato DEFAULT. O webhook global já é DEFAULT.
  • Cada evento é independente. Assine só os que você usa, juntos ou não com os eventos de template e o CHANNEL_DISCONNECTED.
  • No painel, assinar um evento de cobrança exige a permissão Ver a cobrança (Owner e Manager, veja Time e papéis).
  • O PATCH com events substitui a lista. Para continuar recebendo, mande de novo os eventos que já estavam assinados.

Eventos de cobrança

O que o seu servidor recebe

O corpo é o evento:
  • instanceIds lista as instâncias cobertas pela fatura. Uma fatura pode cobrir mais de uma.
  • invoiceRef identifica a fatura e é o mesmo na falha e na recuperação. Com duas faturas falhando no mesmo workspace, é ele que diz qual foi paga.
  • amount é texto decimal ("99.90") e currency é o código ISO 4217 em maiúsculas. Na falha, amount é o valor em aberto; na recuperação, o valor pago. Quando a recuperação vem da mudança de status da assinatura, e não do pagamento de uma fatura, amount e currency vêm null, e invoiceRef também, se não houver fatura.
  • attemptCount é o número da tentativa de cobrança, e nextAttemptAt é a próxima tentativa automática, ou null quando não há outra.
failureCode pode vir null. Na recusa de cartão, o provedor de pagamento nem sempre informa o motivo. Não dependa dele para tratar a falha.
O corpo nunca traz dados do cartão, ids do provedor de pagamento, link da fatura, e-mail nem nome.

Restrição da conta na Meta (ACCOUNT_RESTRICTION)

Sai quando a Meta avisa uma destas situações na conta do WhatsApp Business (WABA) dos seus canais: A restrição não desconecta o canal e não muda o estado dele no Omni Z-API. Quando a Meta desconecta a conta de fato, chega também o aviso de desconexão de canal, um por canal.

O que o seu servidor recebe

Os blocos restriction_info, ban_info e violation_info são repassados como a Meta os envia, sem tradução. Os valores possíveis, como restriction_type e waba_ban_state, estão na documentação da Meta e podem mudar. O objeto event também pode trazer outros campos de roteamento, que não fazem parte do contrato: ignore os que não estão nesta tabela.

Um aviso por workspace

  • Uma conta, um aviso. A restrição é da conta, então o workspace recebe um aviso com a lista instances, e não um aviso por canal.
  • Por número. Se a Meta cita números diferentes (por exemplo, restrições de chamada), sai um aviso por número, cada um com o seu phone_number e o seu notice_id.
  • Repetição. Um reenvio da Meta pode gerar um segundo aviso com o mesmo notice_id. A mesma situação avisada de novo pela Meta em outro momento gera outro notice_id.

Ordem e repetição

A entrega é ao menos uma vez e a ordem de chegada não é garantida (veja Entrega e novas tentativas):
  • descarte repetições pelo id (cobrança) ou pelo notice_id (restrição);
  • ordene pelo occurredAt (cobrança) ou pelo moment (restrição), e não pela hora de chegada.