O webhook account_update e todos os motivos de desconexão
account_update é a forma como a Meta indica que uma ligação mudou de estado. O campo event indica o que aconteceu e, numa remoção, disconnection_info.reason indica o motivo. Esse motivo distingue um número que voltará de outro que foi perdido.
O evento enviado pela Meta quando a aplicação é desinstalada de uma conta.
Motivos de desconexão identificados que uma remoção pode incluir.
A janela principal de inatividade do dispositivo, recebida como PRIMARY_INACTIVITY.
Que eventos transporta account_update?
PARTNER_REMOVED, quando a aplicação é desinstalada da WhatsApp Business Account. Este é o sinal oficial de desconexão e aquele em que vale a pena basear a implementação, em vez de inferir uma desconexão a partir de um campo que passa a falso.
ACCOUNT_OFFBOARDED, quando o número é totalmente retirado. ACCOUNT_RECONNECTED, quando uma ligação anteriormente removida regressa. E os eventos de aplicação de medidas: ACCOUNT_RESTRICTION e ACCOUNT_VIOLATION, juntamente com eventos cujo nome inclui DISABLED ou BAN.
Os resultados de verificação e aprovação também chegam aqui, com nomes de eventos que contêm VERIFIED ou APPROVED. Um handler deve usar o nome do evento e tratar tudo o que não reconheça como informação, em vez de falhar, porque a Meta adiciona eventos sem aviso.
Quais são os motivos de desconexão?
São seis, e significam coisas muito diferentes.
PRIMARY_INACTIVITY é a regra de aproximadamente catorze dias: a aplicação WhatsApp Business não foi aberta no dispositivo principal. É recuperável e, de longe, o caso mais comum.
COMPANION_INACTIVITY aplica a mesma ideia a um dispositivo complementar, num período mais longo de cerca de trinta dias.
BUSINESS_DOWNGRADE significa que o número voltou para a aplicação WhatsApp de consumidor, o que termina a Coexistência porque esta requer a aplicação Business.
CHANGE_NUMBER significa que o próprio número de telefone mudou. USER_RE_REGISTERED significa que foi registado novamente num dispositivo novo. E ACCOUNT_DISCONNECTED significa que o cliente o desligou deliberadamente ou que uma medida de aplicação o fez.
O motivo também chega com disconnection_info.initiated_by, que indica se foi uma pessoa ou o sistema a fazê-lo.
Porque é que o motivo importa mais do que o evento?
Porque PARTNER_REMOVED, por si só, não indica qual deve ser a ação.
Um número removido por PRIMARY_INACTIVITY vai voltar: a empresa abre a aplicação, liga-o novamente e tudo retoma. Tratar isso como a saída de um cliente gera um email de cancelamento para alguém que continua a ser cliente.
Um número removido por BUSINESS_DOWNGRADE ou ACCOUNT_DISCONNECTED é uma situação diferente. Tratá-la como temporária deixa uma ligação num estado indefinido para sempre.
Quando uma remoção chega sem motivo, initiated_by é a alternativa: uma remoção feita por uma pessoa parece deliberada, enquanto uma remoção inexplicada do sistema não. Vale a pena distinguir estes casos no código, em vez de o fazer mais tarde numa conversa com o apoio ao cliente.
Erros comuns
- Tratar todos os PARTNER_REMOVED da mesma forma. O motivo distingue duas semanas de silêncio da saída de um cliente.
- Inferir a desconexão a partir de um campo que passa a falso, em vez de usar este evento. É assim que surgem falsos alarmes.
- Falhar perante um nome de evento não reconhecido. A Meta adiciona eventos e um handler deve ignorar o que não conhece.
A EasyCoexistence trata cada caso pelo nome, regista o motivo na cronologia da ligação e separa uma remoção de inatividade recuperável de um número realmente perdido.
Perguntas frequentes
PARTNER_REMOVED é permanente?
Normalmente, não. A maioria chega com PRIMARY_INACTIVITY, o que significa que a aplicação não foi aberta e que voltar a ligar restaura tudo.
Voltar a ligar restaura o destino do meu webhook?
Não, e esta é a armadilha. O destino é uma substituição na subscrição da aplicação e é desinstalado com ela. É necessário voltar a aplicá-lo.
O que é COMPANION_INACTIVITY?
A mesma ideia de inatividade num dispositivo complementar, e não no principal, durante um período mais longo de cerca de trinta dias.
Posso receber este evento sem motivo?
Sim. Nesse caso, disconnection_info.initiated_by é o único sinal que indica se a remoção foi deliberada.
Continue a ler
Pronto para começar?
Configure a Coexistência do WhatsApp em minutos, não em meses. A aplicação continua a funcionar no telemóvel.
Começar período experimental gratuitoVerificado em