Sobre a plataforma do WhatsApp Business
Cliente desenvolvido para interagir com a API oficial do WhatsApp
Preparação do ambiente
source venv/bin/activate
pip install -r requirements.txt
echo 'WHATSAPP_API_TOKEN=\nWHATSAPP_ACCOUNT_ID=' > .env
É importante preencher o .env com a chave de api e o id da conta whatsapp business
Exemplo de envio de uma mensagem de texto simples (se o texto contiver uma URL o preview é adicionado automaticamente)
As mensagens de texto contêm apenas um corpo de texto e uma prévia de link opcional. Saiba mais em: Sending Text Messages
from whatsapp import WhatsAppApi
from whatsapp.template_messages import Text
to = ""
message = Text(to, "Hello!")
api = WhatsAppApi()
api.send_message(message.payload)
As mensagens de lista interativas permitem apresentar uma lista de opções para escolha dos usuários do WhatsApp. Saiba mais em: Interactive List Messages
from whatsapp import WhatsAppApi
from whatsapp.template_messages import InteractiveList
to = ""
actions = [
{
"id": "test-id-option-1",
"title": "Opção 1",
"description": "Essa é a descrição da opção 1"
},
{
"id": "test-id-option-2",
"title": "Opção 2",
"description": "Essa é a descrição da opção 2"
},
{
"id": "test-id-option-3",
"title": "Opção 3",
"description": "Essa é a descrição da opção 3"
}
]
interative_list = InteractiveList(
to=to,
header_text="HEADER",
body_text="Teste envio de listas interativa",
footer_text="escolha com sabedoria uma das opções fonecidas",
section_title="Escolha uma das opção",
button_text="lista de opções",
actions=actions
)
api.send_message(interative_list.payload)
As mensagens de botões de resposta interativas permitem que você envie até três respostas predefinidas para o usuário escolher. Saiba mais em: Interactive Reply Buttons Messages
** Ainda sem suporte para envio de midias no header da mensagem.
from whatsapp import WhatsAppApi
from whatsapp.template_messages import InteractiveList
to = ""
buttons_options = [
{
"id": "button-option-1",
"title": "SIM"
},
{
"id": "button-option-2",
"title": "NÃO"
},
{
"id": "button-option-3",
"title": "TALVEZ"
}
]
interative_buttons_reply = InteractiveReplyButtons(
to=to,
header_text="Você gostaria de mais conhecimento ?",
body_text="O conhecimento é essencial para o crescimento humano, expandindo horizontes, promovendo autonomia e permitindo melhores escolhas. Ele ilumina caminhos, transforma vidas e impulsiona a evolução pessoal e coletiva.",
footer_text="E ai? o que vai ser ?",
buttons=buttons_options
)
api.send_message(interative_buttons_reply.payload)
O Cliente possui uma interface que processa as mensagens enviada pela API ao webhook cadastrado na plataforma.
A interface tem como objetivo transformar o JSON
recebido em um objeto python do tipo MessageParser que contém informações do tipo da mensagem recebida.
from whatsapp.services.message_parser import MessageParser
parsed_message = MessageParser(data) # data: dados contidos no POST da requisição enviada ao webhook
if (parsed_message.message_type == "text"):
...
elif (parsed_message.message_type == "interactive.button_reply"):
...
elif (parsed_message.message_type == "interactive.list_reply"):
...
Para cada tipo de mensagem recebida o serializador contém dados específicos relaciodados ao objeto em questão e dados gerais relacioado ao paylod recebdio.
Todas as mensagens contem o wamid: WhastsApp Message ID, e message_type: tipo de mensagem recebida.
O message_type pode ser do tipo:
-
statuses: atualização no status da mensagem
- enviada, não enviada, entregue ou não entregue.
-
text:
- mensagem de texto
-
image
- a mensagem contém uma imagem
-
interactive
- mensagem interativa, pode ser uma lista interativa ou lista de botões interativa
-
interactive.button_reply
- resposta a uma mensagem com botões de resposta interativas
-
interactive.list_reply
- resposta a uma mensagem de lista interativas