Crear un Chatbot de WhatsApp: Paso a paso

Hola Hola! 💜

Hace poco tiempo me encontré con el reto de realizar un chat bot totalmente personalizado para uno de mis clientes. Y me aventure a aprender de 0 (no lo había hecho antes) y quiero compartir con ustedes el proceso

Antes de empezar quiero contarte que yo trabajo hace muchos años en marketing y estoy muy familiarizada con términos de la industria, herramientas, estrategias, etc. Pero por si tu no conoces mucho te presento a whatsapp business 

WhatsApp ayuda a más de 1.500 millones de usuarios a mantenerse en contacto con sus amigos y familiares. Este mensajero es útil por ser seguro, rápido y fácil de usar. Ahora, WhatsApp ofrece su plataforma como un nuevo modelo para que las empresas interactúen con clientes de todo el mundo.

WhatsApp es una herramienta perfecta para las empresas que intentan llegar a muchos usuarios de forma más natural: chateando. Con WhatsApp, las marcas se vuelven más accesibles para un grupo más grande de personas. Conectan a los clientes en una plataforma que ya utilizan y en la que confían.

Sigamos, ¿Qué es el chatbot de WhatsApp?

Un chatbot de WhatsApp es un servicio impulsado por reglas y, a veces, inteligencia artificial que se ejecuta en una plataforma de WhatsApp. Los usuarios se comunican con un chatbot a través de la interfaz de chat, como si hablaran con una persona real.

Te cuento sobre el: API de WhatsApp Business

WhatsApp no ​​quiere convertirse en una plataforma más de publicidad. Entonces, la plataforma pone a los usuarios a cargo de su bandeja de entrada. Permite a las personas excluir el spam y aumentar el nivel de confianza en los mensajes de marca que recibe una persona. Además, WhatsApp se compromete con la confianza y seguridad del espacio y los datos personales de los usuarios. Todos los mensajes que las personas envían a través de API se cifrarán de extremo a extremo.

Guía paso a paso para tener WhatsApp Chabot con WhatsApp Business API:

Paso 1:

Solicitar la API empresarial de WhatsApp:

Es necesario utilizar la API de WhatsApp Business para crear un chatbot de WhatsApp. Hay dos opciones que incluyen;

  • Como cliente final
  • Como proveedor de soluciones

La aplicación debe tener lo siguiente:

  • Nombre de la compañía
  • URL del sitio web
  • Nombre e información del representante de la empresa

Después de la revisión y aprobación de WhatsApp, la empresa puede comenzar a utilizar la API de WhatsApp Business.

Paso 2:

Selección del proveedor de servicios adecuado:

Hay varios proveedores de servicios externos y cada día aparecen nuevos y mejores. Por lo tanto, elegir el proveedor de servicios adecuado es esencial.

Los siguientes son los servicios del proveedor de servicios adecuado:

  • El número de teléfono del remitente asociado con el chatbot especificado en el panel de servicio.
  • Para filtrar los mensajes entrantes no dirigidos al número especificado, es necesario asegurarse de que el proveedor lo muestre como integrado o conectado.
  • Copie y pegue la clave API del proveedor de su panel. Asegúrese de copiar el valor completo del panel del proveedor para crear la conexión entre la aplicación y el proveedor.
  • La URL se copia dentro del panel de suministro seleccionado según lo necesite el proveedor para configurar los ajustes de integración. Es el puente entre el proveedor y la aplicación para enviar actualizaciones en tiempo real para todos los mensajes a través de WhatsApp.
  • Muchos proveedores tendrán la capacidad de integrarse con el número existente sin la necesidad de un nuevo número.

Paso 3:

Piense en el diálogo y la conversación:

Es de suma importancia decidir qué necesitan los chatbots para responder a las preguntas de los clientes. Por lo tanto, para lograr los objetivos comerciales es necesaria una mini lista de verificación de dónde, cómo, de quién y de qué van a hablar los chatbots.

Para hacer esto, surgen las siguientes preguntas antes de configurar el chatbot de WhatsApp.

  • ¿Cuál es el objetivo del marketing u otro propósito para la creación del chatbot?
  • ¿Qué tipo de tono debería hablar con sus clientes?
  • ¿Qué tipo de conversación debería tener con los clientes?
  • ¿El diálogo debe ser de forma libre o guiado?
  • ¿Cuál es la planta del diálogo de chatbot?
  • ¿Cómo responderán los chatbots si no pueden responder las preguntas de los clientes?

Paso 4:

Selección de una aplicación y alojamiento de Chatbot en una base de datos:

Una aplicación de chatbot adecuada puede ahorrar mucho tiempo para crear un chatbot de WhatsApp.

Hay muchas aplicaciones excelentes disponibles, por lo que no es necesario empezar de cero. Además, para alojarlo se necesita una base de datos.

Solo asegurará que se mantenga el cifrado de extremo a extremo para la seguridad de los mensajes.

Para crear maquetas antes del producto final, necesita una aplicación de chatbot adecuada. Ahorra una mayor inversión en dinero y tiempo en la producción del Chatbot de WhatsApp.

Paso 5:

Prueba del chatbot de WhatsApp:

Para mejorar la experiencia del cliente y tener un chatbot de WhatsApp de alta calidad es necesario probarlo. Es haciendo preguntas que los clientes pueden solicitar al chatbot.

Todo tipo de problemas de los clientes expuestos para corregir errores. Después de configurar los errores, la prueba debe volver a ejecutarse para obtener la mejor funcionalidad.

Ahora quiero darte el procedimiento que tome para realizarlo

Esto lo saque de la siguiente página web y seguir exactamente el paso a paso

Chatbot de WhatsApp con Python, Flask y Twilio

En este tutorial, les mostraré lo fácil que es construir un chatbot para WhatsApp usando la API de Twilio para WhatsApp y el marco Flask para Python. A continuación, puede ver un ejemplo de interacción que tuve con este chatbot:

Requisitos del tutorial

Para seguir este tutorial, necesita los siguientes componentes:

  • Python 3.6 o más reciente. Si su sistema operativo no proporciona un intérprete de Python, puede ir a python.org para descargar un instalador.
  • Matraz . Crearemos una aplicación web que responda a los mensajes entrantes de WhatsApp con ella.
  • ngrok . Usaremos esta práctica utilidad para conectar la aplicación Flask que se ejecuta en su sistema a una URL pública a la que Twilio puede conectarse. Esto es necesario para la versión de desarrollo del chatbot porque es probable que su computadora esté detrás de un enrutador o firewall, por lo que no es accesible directamente en Internet. Si no tiene ngrok instalado, puede descargar una copia para Windows, MacOS o Linux .
  • Un teléfono inteligente con un número de teléfono activo y WhatsApp instalado.
  • Una cuenta de Twilio. Si es nuevo en Twilio, cree una cuenta gratuita ahora. Puede revisar las características y limitaciones de una cuenta Twilio gratuita .

Configurar el Sandbox de WhatsApp de Twilio

Twilio proporciona un sandbox de WhatsApp donde puede desarrollar y probar fácilmente su aplicación. Una vez que su solicitud esté completa, puede solicitar acceso de producción para su número de teléfono Twilio , que requiere la aprobación de WhatsApp.

Conectemos su teléfono inteligente al sandbox. Desde su Consola Twilio , seleccione Mensajería Programable , luego haga clic en “Pruébelo” y finalmente haga clic en Probar WhatsApp . La página de la zona de pruebas de WhatsApp le mostrará el número de zona de pruebas asignado a su cuenta y un código para unirse.

Para habilitar el sandbox de WhatsApp para su teléfono inteligente, envíe un mensaje de WhatsApp con el código dado al número asignado a su cuenta. El código comenzará con la palabra join , seguida de una frase de dos palabras generada aleatoriamente. Poco después de enviar el mensaje, debería recibir una respuesta de Twilio indicando que su número de teléfono móvil está conectado a la caja de arena y puede comenzar a enviar y recibir mensajes.

Tenga en cuenta que este paso debe repetirse para cualquier teléfono adicional que le gustaría tener conectado a su sandbox

Crear un entorno de Python

Siguiendo las mejores prácticas de Python, crearemos un directorio separado para nuestro proyecto de chatbot, y dentro de él crearemos un entorno virtual . Luego vamos a instalar los paquetes de Python que necesitamos para nuestro chatbot.

Si está utilizando un sistema Unix o Mac OS, abra una terminal e ingrese los siguientes comandos para realizar las tareas descritas anteriormente:

$ mkdir whatsapp-bot
$ cd whatsapp-bot
$ python3 -m venv whatsapp-bot-venv
$ fuente whatsapp-bot-venv / bin / enable
( whatsapp-bot-venv ) $ pip instalar solicitudes de matraz twilio

Para aquellos de ustedes que siguen el tutorial en Windows, ingresen los siguientes comandos en una ventana de símbolo del sistema:

$ mkdir whatsapp-bot
$ cd whatsapp-bot
$ python3 -m venv whatsapp-bot-venv
$ whatsapp-bot-venvScripts \ activar
(whatsapp-bot-venv) $ pip instalar solicitudes de matraz twilio

El último comando utiliza pip, el instalador de paquetes de Python, para instalar los tres paquetes que vamos a utilizar en este proyecto, que son:

Para su referencia, en el momento en que se publicó este tutorial, estas eran las versiones de los paquetes anteriores y sus dependencias probadas:

certifi == 2019.9.11
chardet == 3.0.4
Haga clic en == 7.0
Matraz == 1.1.1
idna == 2.8
es peligroso == 1.1.0
Jinja2 == 2.10.3
MarkupSafe == 1.1.1
PyJWT == 1.7.1
pytz == 2019.3
solicitudes == 2.22.0
seis == 1.13.0
twilio == 6.33.1
urllib3 == 1.25.7
Herramienta == 0.16.0

Crear un servicio Flask Chatbot

Ahora pasamos a la parte divertida. ¡Construyamos un chatbot!

El tipo de chatbot que funcionará mejor para ti o tu empresa dependerá en gran medida de sus necesidades particulares. Para este tutorial, construiré un chatbot extremadamente simple que reconoce dos palabras clave en los mensajes enviados por el usuario y reacciona a ellas. Si el usuario escribe algo que contenga la palabra “cita”, el chatbot devolverá una cita famosa aleatoria. Si, en cambio, el mensaje tiene la palabra “gato”, se devolverá una imagen de gato al azar. Si tanto “cita” como “gato” están presentes en el mensaje, el bot responderá con una cita y una imagen de gato juntos.

Webhook

La API de Twilio para WhatsApp utiliza un webhook para notificar a una aplicación cuando hay un mensaje entrante. Nuestra aplicación de chatbot necesita definir un punto final que se configurará como este webhook para que Twilio pueda comunicarse con él.

Con el marco de Flask es extremadamente fácil definir un webhook. A continuación se muestra una aplicación esqueleto con una definición de webhook. No se preocupe por copiar este código, primero le mostraré todas las diferentes partes de la implementación y luego, una vez que las entienda, le mostraré cómo se combinan todas en una aplicación funcional.

desde el  matraz de  importación  Matraz
app  =  Frasco ( __nombre__ )
@app . ruta ( '/ bot', métodos = [' POST '])
def bot ():
# agregue la lógica del webhook aquí y devuelva una respuesta
if  __name__  ==  '__main__' :
aplicación . correr ()

Si no está familiarizado con el marco de Flask, su documentación tiene una sección de inicio rápido que debería ponerlo al día rápidamente. Si desea un recurso de aprendizaje más profundo, le recomiendo que siga mi Mega-Tutorial de Flask .

Lo importante a tener en cuenta sobre el código anterior es que la aplicación define un /botpunto final que escucha las POSTsolicitudes. Cada vez que Twilio reciba un mensaje entrante de un usuario, este, a su vez, invocará este punto final. El cuerpo de la función bot()analizará el mensaje enviado por el usuario y brindará la respuesta adecuada.

Mensajes y respuestas

Lo primero que debemos hacer en nuestro chatbot es obtener el mensaje ingresado por el usuario. Este mensaje viene en la carga útil de la POSTsolicitud con una clave de ’Body’. Podemos acceder a él a través del requestobjeto de Flask :

de  solicitud de importación de matraces  
entrante_msg = solicitud . valores . get ( 'Cuerpo' , '' ) . inferior ()

Dado que vamos a realizar un análisis de lenguaje básico en este texto, también he convertido el texto a minúsculas, para que no tengamos que preocuparnos por todas las diferentes formas en que una palabra puede aparecer cuando introduce variaciones de mayúsculas y minúsculas.

La respuesta que Twilio espera del webhook debe darse en TwiML o Twilio Markup Language , que es un lenguaje basado en XML. La biblioteca auxiliar de Twilio para Python viene con clases que facilitan la creación de esta respuesta sin tener que crear XML directamente. A continuación, puede ver cómo crear una respuesta que incluya componentes de texto y multimedia:

de  twilio.twiml.messaging_response  importar  MessagingResponse
resp  =  MessagingResponse ()
msg = resp . mensaje ()
msg . cuerpo ( 'este es el texto de respuesta' )
msg . media ( 'https://example.com/path/image.jpg' )

Observe cómo devolver una imagen Twilio espera una URL que apunte a ella en lugar de los datos de la imagen real.

Lógica de chatbot

Para la lógica real del chatbot, usaré un enfoque muy simple, pero sorprendentemente efectivo. Lo que voy a hacer es buscar en los mensajes entrantes las palabras clave ’quote’y ’cat’. Aquí está la estructura básica del chatbot:

respondió  =  Falso
si 'cita' en entrante_msg :
# agregue una cita a la respuesta aquí
respondió = Verdadero
si 'gato' en entrante_msg :
# agregue una imagen de gato a la respuesta aquí
respondió = Verdadero
si no responde :
# devuelve una respuesta genérica aquí

Con esta estructura simple podemos detectar referencias a comillas y / o gatos y configurar el objeto de respuesta de Twilio en consecuencia. El respondedbooleano es útil para rastrear el caso en el que el mensaje no incluye ninguna de las palabras clave que estamos buscando y, en ese caso, ofrecer una respuesta genérica.

API de terceros

Para proporcionar al chatbot citas originales e imágenes de gatos, utilizaré dos API disponibles públicamente . Para citas famosas, elegí la API de citas de Luke Peavey. Una GETsolicitud a https://api.quotable.io/random devuelve una cotización aleatoria de un grupo de 1500 en formato JSON.

Para las imágenes de gatos, usaré la API Cat as a Service de Kevin Balicot. Esta es una API extremadamente simple, la URL https://cataas.com/cat devuelve una imagen de gato diferente cada vez (puede probarla pegando esta URL en la barra de direcciones del navegador y luego presionando actualizar para obtener una nueva imagen de gato ). Esto es realmente muy útil porque, como mencioné anteriormente, Twilio quiere que la imagen se proporcione como una URL al preparar la respuesta TwiML.

Todo junto

Ahora que ha visto todos los aspectos de la implementación del chatbot, estamos listos para integrar todas las piezas en el servicio completo del chatbot. Puede copiar el código siguiente en un archivo bot.py :

desde el  matraz de  importación  Matraz ,  solicitud
solicitudes de importación
de twilio.twiml.messaging_response importar MessagingResponse
app  =  Frasco ( __nombre__ )
@app . ruta ( '/ bot' ,  métodos = [ 'POST' ])
def bot ():
entrante_msg = solicitud . valores . get ( 'Cuerpo' , '' ) . inferior ()
resp = MessagingResponse ()
msg = resp . mensaje ()
respondió = Falso
si 'cita' en entrante_msg :
# devolver una cotización
r = solicitudes . get ( 'https://api.quotable.io/random' )
si r . status_code == 200 :
datos = r . json ()
cita = f ' { datos [ "contenido" ] } ( { datos [ "autor" ] } )'
otra cosa :
quote = 'No pude recuperar una cita en este momento, lo siento.'
msg . cuerpo ( cita )
respondió = Verdadero
si 'gato' en entrante_msg :
# devolver una foto de gato
msg . media ( 'https://cataas.com/cat' )
respondió = Verdadero
si no responde :
msg . body ( 'Solo sé sobre citas famosas y gatos, ¡lo siento!' )
return str ( resp )
if  __name__  ==  '__main__' :
aplicación . correr ()

Probando el Chatbot

¿Estás listo para probar el chatbot? Después de copiar el código anterior en el archivo bot.py , inicie el chatbot ejecutándolo python bot.py, asegurándose de hacerlo mientras el entorno virtual de Python está activado. La salida debería ser algo como esto:

( whatsapp-bot-venv ) $ python bot.py
* Aplicación "bot" de Sirviendo Flask ( carga diferida )
* Medio ambiente: producción
ADVERTENCIA: Este es un servidor de desarrollo. No lo use en una implementación de producción.
En su lugar, utilice un servidor WSGI de producción.
* Modo de depuración: desactivado
* Se ejecuta en http://127.0.0.1:5000/ ( presione CTRL + C para salir )

El servicio ahora se está ejecutando como un servicio privado en el puerto 5000 dentro de su computadora y estará allí esperando conexiones entrantes. Para que este servicio sea accesible desde Internet, necesitamos usar ngrok.

Abra una segunda ventana de terminal y ejecute ngrok http 5000para asignar un dominio público temporal que redirija las solicitudes HTTP a nuestro puerto local 5000. En una computadora Unix o Mac OS, es posible que deba usar ./ngrok http 5000si tiene el ejecutable ngrok en su directorio actual. La salida de ngrok debería ser algo como esto:

Tenga en cuenta las líneas que comienzan con “Reenvío”. Estos muestran la URL pública que utiliza ngrok para redirigir las solicitudes a nuestro servicio. Lo que tenemos que hacer ahora es decirle a Twilio que use esta URL para enviar notificaciones de mensajes entrantes.

Regrese a la Consola Twilio , haga clic en Mensajería programable , luego en Configuración y finalmente en Configuración de la zona de pruebas de WhatsApp . Copie la URL https: // de la salida de ngrok y luego péguela en el campo “Cuando llegue un mensaje”. Dado que nuestro chatbot está expuesto bajo la /botURL, añádalo al final de la URL raíz de ngrok. Asegúrese de que el método de solicitud esté configurado en HTTP Post. No olvide hacer clic en el botón rojo Guardar en la parte inferior de la página para registrar estos cambios.

Ahora puede comenzar a enviar mensajes al chatbot desde el teléfono inteligente que conectó al sandbox. Puede escribir cualquier oración que desee, y cada vez que aparezcan las palabras “cita” y “gato” en los mensajes, el chatbot invocará las API de terceros y le devolverá contenido nuevo. En caso de que se lo haya perdido en la parte superior del artículo, aquí hay una sesión de ejemplo que mantuve con el chatbot:

Tenga en cuenta que cuando se utiliza ngrok de forma gratuita existen algunas limitaciones. En particular, no puede conservar una URL de ngrok durante más de 8 horas, y el nombre de dominio que se le asigna será diferente cada vez que inicie el comando ngrok. Deberá actualizar la URL en la Consola Twilio cada vez que reinicie ngrok.

Notas sobre la implementación de producción

Pensé que sería útil terminar este tutorial con una lista de cosas que deberá considerar si decide implementar un chatbot de WhatsApp para uso en producción.

En primer lugar, ha visto que cuando inicia la aplicación Flask hay una advertencia bastante aterradora sobre no usar un servidor de desarrollo para la producción. El servidor web que viene con Flask es muy conveniente al desarrollar y probar una aplicación, pero no es lo suficientemente robusto para manejar las demandas del uso de producción. Los dos servidores web listos para producción más comunes para aplicaciones web Python son gunicorn y uWSGI , ambos instalables en su entorno virtual con pip. Por ejemplo, aquí se explica cómo ejecutar el chatbot con gunicorn:

( whatsapp-bot-venv ) $ gunicorn -b: 5000 bot: aplicación

También tenga en cuenta que para una implementación de producción, ejecutará el servicio en un servidor en la nube y no desde su propia computadora, por lo que no es necesario utilizar ngrok.

Para marketeros

Yo sé que a mí leen tanto programadores, data scientist y personas en marketing digital. Y les contare algo los que trabajamos en marketing nos gusta lo que ya está funcionando y podemos empezar a probar. Es por eso que para ustedes les dejo esta herramienta súper simple que nos ayuda a realizar un chatbot sin saber programar

Crear un Chatbot para tu Web en menos de 25 Minutos (Sin Trucos) – Landbot.io
La cuestión hoy en día no es sólo cómo crear un chatbot web, sino también cómo hacerlo de forma rápida, eficiente y sin…landbot.io

Al final resulte usando este, lo sé, no soy alguien de fiar jajaja. Igualmente me pareció importante compartirles las diferentes metodologías para diferentes necesidades.

Muchas gracias por leerme