Skip to content

thalisonwilker/whatsapp-api-client

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

WhatsApp API Client

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

Envio de Mensagens

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)

Exemplo de envio de mensagens de lista interativas

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)

Exemplo de envio de mensagens com botões de resposta interativas

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)

Serializando os dados enviados ao Webhook

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

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages