Enviar e receber WhatsApp a partir de Python
Receber consiste numa rota da sua framework web que responde ao GET de verificação da Meta e aceita POSTs. Enviar consiste num pedido HTTPS à Cloud API com o phone number id e o token do número. Não há SDK nosso nem nada para instalar.
Um GET para a verificação da Meta e um POST para eventos. Esse é o lado da receção.
Janela após uma mensagem do cliente durante a qual é possível enviar texto livre.
O erro devolvido ao enviar texto livre fora dessa janela.
Como se recebem mensagens em Python?
Com dois handlers numa só rota, na framework que já utiliza.
O handler GET responde à verificação da Meta. Lê hub.mode, hub.verify_token e hub.challenge da query string, compara o token com o seu e devolve o challenge no corpo bruto. Devolver JSON aqui é o erro mais comum e falha silenciosamente.
O handler POST recebe eventos. Devolva 200 rapidamente e faça o trabalho depois, porque a Meta trata uma resposta lenta como uma falha e volta a tentar, o que significa tratar a mesma mensagem duas vezes. Coloque-a numa fila ou entregue-a a uma tarefa em segundo plano, em vez de processar tudo diretamente.
As mensagens chegam com um ID de mensagem wamid. Vale a pena eliminar duplicados com base nele desde o início, pois as novas tentativas são normais, não excecionais.
Como se enviam mensagens?
Um POST para o endpoint messages da Cloud API, usando o phone number id e um bearer token.
Ambos os valores vêm da ligação: o painel apresenta-os e get_api_credentials devolve-os se preferir que um assistente os obtenha. Nada neste pedido é específico da nossa plataforma, por isso qualquer biblioteca HTTP funciona e o pedido é exatamente igual ao da documentação da Meta.
O que muda com o tempo é o corpo. Nas 24 horas seguintes à última mensagem do cliente, envia-se um objeto text. Depois disso, envia-se um objeto template com o nome de um template aprovado e o respetivo idioma. Um cliente que conheça apenas o primeiro formato funciona perfeitamente nos testes e falha na primeira mensagem enviada durante a noite, devolvendo o erro 131047.
O que precisa um handler de produção além disso?
Três coisas fáceis de ignorar e dispendiosas de acrescentar mais tarde.
Elimine duplicados com base no ID da mensagem, porque a Meta volta a tentar. Verifique a assinatura do pedido se estiver exposto publicamente, pois, caso contrário, qualquer pessoa que descubra o seu URL poderá publicar nele. E determine há quanto tempo o contacto escreveu pela última vez, para que o envio escolha text ou template sem decisão humana.
Nada disto exige uma framework ou biblioteca. É um conjunto, uma verificação e uma comparação. Implementá-los antes do primeiro cliente distingue uma integração que funciona discretamente de outra que envia alertas constantemente.
Erros comuns
- Devolver JSON no GET de verificação em vez do valor bruto de challenge.
- Processar diretamente antes de devolver 200. A Meta repete respostas lentas e a mensagem é tratada duas vezes.
- Enviar texto livre sem verificar a janela. Devolve 131047 e parece que nada aconteceu.
Ligue o número em easycoexistence.com, defina o destino do webhook para a sua rota e leia o phone number id e o token no painel. A partir de US$ 9 por número ligado por mês, descendo para US$ 2 em volume, com os primeiros 7 dias gratuitos.
Perguntas frequentes
Existe um SDK de Python?
Não da nossa parte, e não precisa de um. A API é da Meta, está documentada pela Meta e pode ser acedida com qualquer biblioteca HTTP.
Que framework devo utilizar?
Qualquer uma. O requisito é uma rota que responda a um GET e aceite um POST, algo que todas as frameworks web de Python fazem.
Como evito tratar uma mensagem duas vezes?
Elimine duplicados com base no ID de mensagem wamid no payload. A Meta repete os pedidos por conceção, por isso este comportamento é esperado, não um caso extremo.
A equipa pode continuar a utilizar o telemóvel?
Sim. A Coexistência mantém a aplicação WhatsApp Business a funcionar no mesmo número, e o seu handler recebe o que a equipa envia como um evento echo.
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