Un bot de WhatsApp es un software de aplicación que puede comunicarse con humanos de manera hablada o escrita. Y hoy vamos a aprender cómo podemos crear un bot de WhatsApp usando python. Primero, veamos los requisitos para construir el bot de WhatsApp usando el lenguaje python.
Requisitos del sistema:
- Una cuenta de Twilio y un teléfono inteligente con un número de teléfono activo y WhatsApp instalado.
- Debe tener Python 3.9 o posterior instalado en el sistema.
- Frasco: usaremos un frasco para crear una aplicación web que responda a los mensajes entrantes de WhatsApp con él.
- ngrok: Ngrok nos ayudará a 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.
Empezando
Paso 1: configure la cuenta de Twilio utilizando la API de WhatsApp de Twilio.
Vaya a este enlace y haga clic en el botón registrarse y comenzar a construir y complete sus datos y verifique su ID de correo electrónico y número de teléfono móvil.
Después de iniciar sesión, seleccione la opción Desarrollar en el menú de la izquierda y luego seleccione el asunto Mensajería , luego seleccione la opción Pruébelo y, por último, haga clic en Enviar un mensaje de WhatsApp. Esto abrirá una nueva página web para configurar WhatsApp Sandbox.
Paso 2: configure Twilio WhatsApp Sandbox enviando un mensaje a este número de WhatsApp con el código de seguridad único secreto como se muestra en las siguientes imágenes:
Envíe el código con el siguiente formato al siguiente número: +14155238886
código secreto: unirse a <código-secreto>
Ahora, envíe el código secreto al mensaje de WhatsApp anterior y recibirá un mensaje de confirmación como el siguiente:
Paso 3: Abra la terminal y ejecute el siguiente comando para crear un directorio para el bot , para crear un entorno virtual para python, para instalar todos los paquetes necesarios.
- Para crear el directorio y navegar a ese directorio :
mkdir geeks-bot && cd geeks-bot
- Para crear y activar el entorno virtual de python:
python3 -m venv geek-bot-env && source geek-bot-env/bin/activate
- Para instalar Twilio, matraz y requests:
pip3 install twilio flask requests
Aquí están los comandos anteriores en una sola línea:
mkdir geek-bot && cd geek-bot && python3 -m venv geek-bot-env && fuente geek-bot-env/bin/activar && pip3 instalar requests de matraz twilio
Producción:
Creación de un servicio Flask Chatbot para ejecutar el bot localmente:
Paso 1: importa los archivos necesarios para ejecutar esta aplicación de matraz.
Python3
from flask import Flask, request import requests from twilio.twiml.messaging_response import MessagingResponse
Paso 2: Recibir el mensaje ingresado por el usuario y enviar la respuesta. Podemos acceder a la respuesta del usuario que viene en la carga útil de la solicitud POST con una clave de ‘ Cuerpo ‘.
Python3
from flask import request incoming_msg = request.values.get('Body', '').lower()
Para enviar mensajes/responder al usuario, vamos a utilizar la función MessagingResponse() de Twilio.
Python3
from twilio.twiml.messaging_response import MessagingResponse response = MessagingResponse() msg = response.message() msg.body('this is the response/reply from the bot.)
Paso 3: ahora construiremos la lógica del chatbot, le pediremos al usuario que ingrese un tema que quiera aprender, luego enviamos el mensaje al bot, y el bot buscará la consulta y responderá con el artículo más relevante de geeksfogeeks para el usuario.
Python3
# chatbot logic def bot(): # user input user_msg = request.values.get('Body', '').lower() # creating object of MessagingResponse response = MessagingResponse() # User Query q = user_msg + "geeksforgeeks.org" # list to store urls result = [] # searching and storing urls for i in search(q, tld='co.in', num=6, stop=6, pause=2): result.append(i) # displaying result msg = response.message(f"--- Result for '{user_msg}' are ---") msg = response.message(result[0]) msg = response.message(result[1]) msg = response.message(result[2]) msg = response.message(result[3]) msg = response.message(result[4]) return str(response)
Aquí, en esta función, el uso de user_msg recibirá la respuesta/consulta del usuario. Luego, usamos la búsqueda de Google para obtener los primeros 5 enlaces de la búsqueda de Google con la consulta del usuario y los almacenamos en una lista llamada resultado . Después de eso, simplemente envíe los primeros 5 enlaces al usuario mediante el servicio de mensajería Twilio.
Para ejecutar el bot seguiremos estos pasos:
En primer lugar, ejecute el script anterior con el siguiente comando:
python3 main2.py
Salida :
En segundo lugar, abra otra ventana de terminal y ejecute el siguiente comando para iniciar el servidor ngrok.
ngrok http 5000
Producción:
Y el tercer y último paso que tenemos que hacer es configurar la URL de reenvío en la configuración de WhatsApp Sandbox. Navegue al siguiente enlace y pegue la URL de reenvío en la ubicación seleccionada y haga clic en guardar.
Enlace: https://www.twilio.com/console/sms/whatsapp/sandbox
A continuación se muestra la implementación completa:
Aquí, hemos importado todas las bibliotecas necesarias que vamos a usar durante la ejecución del chatbot, luego estamos creando una función llamada bot, donde vamos a implementar nuestra lógica de chatbot. En la función de bot, en primer lugar, buscamos la respuesta realizada por el usuario usando WhatsApp y la guardamos en una variable llamada user_msg. Después de eso, hemos creado un objeto de MessagingResponse(), lo necesitamos para enviar la respuesta al usuario usando WhatsApp. Agregamos la consulta del usuario con la palabra «geeksforgeeks.org» porque hemos creado este bot con respecto a un usuario que podría tener consultas relacionadas con el estudio y puede hacer cualquier duda relacionada con los estudios. Después de eso, hemos creado una lista llamada resultado donde vamos a guardar las URL que tenemos que enviar al usuario. Estamos utilizando la biblioteca de búsqueda de Google para buscar en Google. Usando for loop, estamos obteniendo los primeros 5 enlaces de artículos y guardándolos en el resultado. Usando la función response.message(), simplemente enviamos el resultado al usuario a través de WhatsApp.
Python3
from flask import Flask from googlesearch import search import requests from twilio.twiml.messaging_response import MessagingResponse app = Flask(__name__) @app.route("/", methods=["POST"]) # chatbot logic def bot(): # user input user_msg = request.values.get('Body', '').lower() # creating object of MessagingResponse response = MessagingResponse() # User Query q = user_msg + "geeksforgeeks.org" # list to store urls result = [] # searching and storing urls for i in search(q, tld='co.in', num=6, stop=6, pause=2): result.append(i) # displaying result msg = response.message(f"--- Result for '{user_msg}' are ---") msg = response.message(result[0]) msg = response.message(result[1]) msg = response.message(result[2]) msg = response.message(result[3]) msg = response.message(result[4]) return str(response) if __name__ == "__main__": app.run()
Producción:
Publicación traducida automáticamente
Artículo escrito por amnindersingh1414 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA