Construyendo el bot de WhatsApp en Python

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.

Inscribirse

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.

Configurar la mensajería de Whatsapp

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>

Configurar Sandbox

Ahora, envíe el código secreto al mensaje de WhatsApp anterior y recibirá un mensaje de confirmación como el siguiente:

Mensaje de confirmacion

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:

Configuración de la estructura de carpetas

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 :

Ejecutando el script del bot

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

Configurar URL en Twilio

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *