Saltar a contenido

WhatsApp

Aprovecha la API en la nube para enviar mensajes utilizando la versión alojada en la nube de la plataforma de negocios de WhatsApp.

Warning

Este complemento se basa en la API en la nube de WhatsApp Business. Para utilizar las funciones disponibles a través del complemento, es necesario tener una cuenta de desarrollador Meta correctamente configurada.

Si aún no tienes una cuenta configurada, consulta la sección Configurar cuenta.

Instalación

pip install botcity-whatsapp-plugin

Importar el complemento

Después de instalar este paquete, el siguiente paso es importar el paquete en tu código y comenzar a utilizar las funciones.

from botcity.plugins.whatsapp import BotWhatsappPlugin

Instanciar el complemento

Primero, vamos a instanciar el complemento pasando alguna información de tu cuenta de desarrollador de WhatsApp. Todo lo que necesitamos es el TOKEN DE ACCESO y el ID DEL NÚMERO DE TELÉFONO del número que se está utilizando.

token = "<YOUR_ACCESS_TOKEN>"
number_id = "<YOUR_WHATSAPP_NUMBER_ID>"

# Instantiate the plugin
whatsapp = BotWhatsappPlugin(access_token=token, whatsapp_number_id=number_id)

Note

En los ejemplos a continuación, se utiliza un número de prueba proporcionado por WhatsApp.

Si lo deseas, puedes configurar y utilizar tus propios números. (detalles aquí).

Envío de mensajes de texto

Podemos enviar mensajes de texto fácilmente, simplemente pasando el número que recibirá el mensaje y el contenido del texto.

Important

En algunos casos, puede ser necesario que el número del destinatario envíe un mensaje a tu número antes de recibir tus mensajes. Esto es un problema de la API en la nube, lo que hace necesario que la conversación sea iniciada por el número que recibirá los mensajes. Por lo tanto, si tus mensajes no se están enviando, por favor pide al número del destinatario que envíe un mensaje primero.

token = "<YOUR_ACCESS_TOKEN>"
number_id = "<YOUR_WHATSAPP_NUMBER_ID>"

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

# Phone numbers must be used in format:
# [country code][phone number including area code]
whatsapp.send_text_message("5519987654321", "Hey! Sending a simple message! 😃")

Cuando se utilizan mensajes de texto, también podemos trabajar con el parámetro preview url. Este parámetro se puede utilizar cuando el mensaje de texto contiene un enlace HTTP o HTTPS. En este caso, cuando lo establecemos en True, se incluirá un cuadro de vista previa que hace referencia al enlace para el destinatario del mensaje.

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

Vista del mensaje enviado:

Envío de mensajes multimedia

También puedes enviar mensajes que contengan contenido multimedia. En este caso, es necesario pasar el tipo de contenido multimedia que se está enviando y el enlace que hace referencia al contenido de este multimedia. El contenido multimedia debe ser una URL de acceso público.

Los tipos de contenido multimedia disponibles se definen como un Enum en la clase MediaType, solo usa MediaType.TYPE para seleccionar el tipo de contenido multimedia que se enviará.

from botcity.plugins.whatsapp import BotWhatsappPlugin, MediaType

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

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

Mensaje enviado:

Warning

El parámetro caption solo se puede utilizar con contenido multimedia de tipo imagen y documento, y el parámetro filename solo se puede utilizar con contenido multimedia de tipo documento. Utilizar estos parámetros con otros tipos de contenido multimedia causará una excepción.

Envío de mensajes de ubicación

Es posible enviar mensajes que contengan ubicación a través de WhatsApp, solo tienes que tener los datos de ubicación a mano y se enviará automáticamente un mensaje interactivo.

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

# Location data
longt = "-23.52742958804382"
lat = "-46.67852205062807"
address = "Av. Francisco Matarazzo, 1705 - Água Branca, São Paulo - SP, 05001-200"

whatsapp.send_location_message(
    to_number="5519987654321",
    longitude=longt,
    latitude=lat,
    name="Football stadium",
    address=address
)

Vista de la ubicación enviada:

Envío de mensajes de contacto

También puedes enviar mensajes que contengan información de contacto. De esta manera, se enviará una tarjeta interactiva que contiene la información de contacto pasada al destinatario. Puedes enviar un contacto solo con un nombre, o utilizar algún parámetro opcional, como el número de teléfono o el correo electrónico del contacto.

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"
)

Tarjeta de contacto enviada: