Ir para o conteúdo

WhatsApp

Aproveite a Cloud API para enviar mensagens usando a versão hospedada em nuvem da plataforma WhatsApp Business.

Aviso

Este plugin é baseado na API WhatsApp Business Cloud . Para utilizar os recursos disponíveis no plugin, é necessário ter uma conta de desenvolvedor Meta devidamente configurada.

Se você ainda não possui uma conta configurada, consulte a seção Configurar conta.

Instalação

pip install botcity-whatsapp-plugin

Instanciando o plugin

Depois de instalar este pacote, a próxima etapa é importar o pacote para o seu código e começar a usar as funções.

from botcity.plugins.whatsapp import BotWhatsappPlugin

Importando o plugin

Primeiro, vamos instanciar o plugin, passando algumas informações da sua conta de desenvolvedor do WhatsApp. Tudo o que precisamos é o TOKEN DE ACESSO e a ID DO NUMERO DO TELEFONE do número que está sendo usado.

token = "<SEU_TOKEN_ACESSO>"
id_numero = "<SEU_ID_DO_NUMERO_WHATSAPP>"

# Instanciar o plugin
whatsapp = BotWhatsappPlugin(access_token=token, whatsapp_number_id=id_numero)

Observação

Nos exemplos abaixo, um número de teste fornecido pelo WhatsApp está sendo usado.

Se quiser, você pode configurar e usar seus próprios números. (detalhes aqui).

Enviando mensagens de texto

Podemos enviar mensagens de texto facilmente, apenas passando o número que receberá a mensagem e o conteúdo do texto.

Importante

Em alguns casos, pode ser necessário que o número do destinatário envie uma mensagem para o seu número antes de receber suas mensagens. Este é um problema da Cloud API do WhatsApp, tornando necessário que a conversa seja iniciada pelo número que receberá as mensagens. Portanto, se suas mensagens não estiverem sendo enviadas, peça ao número do destinatário para enviar uma mensagem primeiro.

token = "<SEU_TOKEN DE ACESSO>"
id_numero = "<SEU_ID_DO_NUMERO_WHATSAPP>"

whatsapp = BotWhatsappPlugin(access_token=token, whatsapp_number_id=number_id)

# Os números de telefone devem ser usados no formato:
# [código do país] [número de telefone, incluindo código de área]
whatsapp.send_text_message("5519987654321", "Ei! Enviando uma mensagem simples! 😃")

Ao usar mensagens de texto, também podemos trabalhar com o parâmetro preview url. Este parâmetro pode ser usado quando a mensagem de texto contém um link HTTP ou HTTPS. Nesse caso, quando o definimos como True, uma caixa de visualização referente ao link será incluída para o destinatário da mensagem.

whatsapp.send_text_message(
    to_number="5519987654321",
    msg_content="BotCity website: https://botcity.dev",
    preview_url=True
)

Visualização da mensagem enviada:

Enviando mensagens de mídia

Você também pode enviar mensagens que contêm conteúdo de mídia. Nesse caso, é necessário passar o tipo de mídia que está sendo enviada e o link referente ao conteúdo dessa mídia. O conteúdo da mídia deve ser uma URL acessível ao público

Os tipos de mídia disponíveis são definidos como um Enum da classe MediaType, basta usar MediaType.TYPE para selecionar o tipo de mídia que será enviada.

from botcity.plugins.whatsapp import BotWhatsappPlugin, MediaType

whatsapp = BotWhatsappPlugin(access_token=token, whatsapp_number_id=id_numero)

whatsapp.send_media_message(
    to_number="5519987654321",
    media_type=MediaType.IMAGE,
    media_link="https://i.imgur.com/70fV8e4.png",
    caption="A fera!"
)

Mensagem enviada:

Aviso

O parâmetro caption pode ser usado apenas com mídia do tipo imagem e documento, e o parâmetro filename pode ser usado apenas com mídia do tipo documento. O uso desses parâmetros com outros tipos de mídia causará uma exceção.

Enviando mensagens de localização

É possível enviar mensagens que contenham localização via WhatsApp, basta ter os dados de localização em mãos e uma mensagem interativa será enviada automaticamente.

whatsapp = BotWhatsappPlugin(access_token=token, whatsapp_number_id=number_id)

# Dados de localização
longt = "-23.52742958804382"
lat = "-46.67852205062807"
end = "Av. Francisco Matarazzo, 1705 - Água Branca, São Paulo - SP, 05001-200"

whatsapp.send_location_message(
    to_number="5519987654321",
    longitude=longt,
    latitude=lat,
    name="Estadio Futebol",
    address=end
)

Visualização do local enviado:

Enviando mensagens com contato

Você também pode enviar mensagens que contêm algumas informações de contato. Dessa forma, um cartão interativo que contém as informações de contato será enviado ao destinatário. Você pode enviar um contato com apenas um name ou usar algum parâmetro opcional, como o phone, que é o número do contato ou o email.

whatsapp = BotWhatsappPlugin(access_token=token, whatsapp_number_id=number_id)

whatsapp.send_contact_message(
    to_number="5519987654321",
    contact_name="Test Contact",
    contact_phone="5519912345678",
    contact_email="contact@email.com"
)

Cartão de contato enviado: