Tabla de contenido:
- Suministros
- Paso 1: instale el software necesario
- Paso 2: crea una cuenta Twilio
- Paso 3: Obtenga la clave API para datos, películas y programas de televisión de COVID 19
- Paso 4: Conecte Python y Twilio a través de Ngrok
- Paso 5: Pruebe nuestra aplicación
- Paso 6: ¿Cómo funciona y mejoras futuras?
- Paso 7: Notas finales
2025 Autor: John Day | [email protected]. Última modificación: 2025-01-23 14:39
CoVbot es un chatbot simple e intuitivo basado en Whatsapp. La característica principal del bot es:
Puede brindarle el estado más reciente de COVID-19 en el país de su elección de una manera simple e intuitiva.
Además, el bot puede sugerir actividades divertidas para hacer EN CASA como:
- Sugerir una película: una película para ver de la lista de las 10 películas principales, con una breve descripción general de la trama y la duración. Dado que esta lista no está codificada en software, siempre le proporcionará las últimas actualizaciones basadas en las tendencias actuales.
- Sugerir un programa de televisión: un programa de televisión para ver de los programas de televisión más populares, con una breve descripción general de la trama y las calificaciones. Dado que esta lista no está codificada en software, siempre le brindará las últimas actualizaciones basadas en las tendencias actuales.
- Sugerir un libro: un libro para leer de la lista de los 10 mejores libros, con la propaganda y la imagen de la portada del libro.
- Entrenamientos diarios: este es un video basado en un programa de entrenamiento de 7 días proporcionado por CRANK gym en su cuenta de Instagram.
Si disfruta de este Instructable, considere votarlo en el Concurso de autor del primer artículo. (y sí, este es mi primer instructivo, así que si algo no está claro o necesita más explicación, hágamelo saber en la sección de comentarios y puedo ayudarlo:)
Suministros
Este proyecto es únicamente un proyecto basado en software, por lo que cualquiera que siga este instructable con una computadora portátil / PC de escritorio / macOS / Linux e Internet puede completar este proyecto. También incluiré una sección detallada al final para explicar el código / proceso con más detalle para las personas con cierta experiencia en programación. Tenga en cuenta que esto no es necesario para completar el proyecto.
Nivel de dificultad del proyecto:
No es muy fácil, pero no muy difícil.
El hardware que usaremos:
- Una computadora portátil / de escritorio con Windows / macOS / Linux.
- Un teléfono móvil con WhatsApp Messenger instalado
El software que usaremos:
- Lenguaje de programación Python
- ngrok: es una herramienta que se utiliza para permitirnos acceder a nuestro servidor desde fuera de nuestra red.
-
Editor de su elección: (por ejemplo, Notepad ++, Sublime Text, Vim, etc.)
Paso 1: instale el software necesario
En este paso haremos lo siguiente:
- Instale Python> 3.6 y pruébelo
- Instalar las bibliotecas de Python necesarias
- Instalar ngrok
Si tiene ambas aplicaciones instaladas, puede omitir este paso
Instale Python:
Todo el código base de backend / servidor para este proyecto está escrito en Python 3.6. Por lo tanto, para ejecutar nuestras aplicaciones, necesitamos tener Python> 3.6 instalado en nuestra computadora. Siga el tutorial de CoreySchafer sobre cómo instalar Python para Windows y macOS
Puede probar que todo está instalado correctamente escribiendo lo siguiente en el cmd / Terminal:
python -c 'print (f "Hola mundo")'
Si todo se instaló correctamente, entonces Hello World debería imprimirse en la pantalla. Si obtiene un error de sintaxis no válido, entonces tiene instalada la versión incorrecta de Python. Instale una versión de python> = 3.6
Instale las bibliotecas de Python requeridas usando pip:
Usaremos las siguientes bibliotecas de Python para que nuestro software funcione:
- Frasco: este es el marco para nuestro servidor
- Twilio: esta biblioteca proporciona una forma para que Python se comunique con WhatsApp
- Solicitud: esta biblioteca se utiliza para solicitar datos de las API
- BeautifulSoup4: esta biblioteca se utiliza para extraer información de sitios web
- lxml: esta biblioteca se usa en combinación con BeautifulSoup para extraer la información relevante de un sitio web
Para instalar estas bibliotecas, puede hacer lo siguiente:
Abra CMD / Terminal y escriba el siguiente comando:
pip install flask, twilio, request, beautifulsoup4, lxml
O
Descargue el archivo requirements.txt y abra una terminal en el directorio donde está el archivo y escriba:
pip install -r requirements.txt
Instalar ngrok
ngrok le permite exponer un servidor que se ejecuta en su máquina local a Internet. Simplemente dígale a ngrok en qué puerto está escuchando su servidor.
Sigue la guía del sitio web de ngrok para instalar ngrok para el sistema operativo que está utilizando.
Consejo: el paso 3 de la guía no es relevante para este proyecto, por lo que se puede omitir
Paso 2: crea una cuenta Twilio
En este paso haremos lo siguiente:
- Regístrese para obtener una cuenta Twilio
- Introducción rápida a secciones útiles en la consola de Twilio
Inscribirse:
En este proyecto, usaremos la API de Twilio Whatsapp para conectar nuestro programa Python a Whatsapp. Para poder utilizar la API de Twilio, primero debemos crear una cuenta en el sitio web oficial de Twilio. Para una cuenta de prueba, Twilio ofrece un crédito gratuito de $ 15 para que lo usemos.
Introducción rápida:
Una vez que haya creado una cuenta, las secciones más interesantes de la consola Twilio para este proyecto son:
Panel de control: desde el panel de control, puede ver la cantidad de crédito que aún le queda, puede editar el nombre de su proyecto y cambiar el lenguaje de programación.
Subsección de Whatsapp en la sección SMS programables: desde la sección de Whatsapp de la consola, puede obtener acceso al código de unión para el bot, el número de Whatsapp que usaremos en el proyecto para hablar con nuestro bot y también la configuración del webhook. Se describirán más detalles sobre todos estos en los próximos pasos.
Paso 3: Obtenga la clave API para datos, películas y programas de televisión de COVID 19
Una clave API o una clave de interfaz de programación de aplicaciones es un código que las aplicaciones informáticas pasan. El programa o aplicación luego llama a la API o interfaz de programación de aplicaciones para identificar a su usuario, desarrollador o programa de llamada a un sitio web.
Usamos una API para obtener información sobre el estado, las películas y los programas de televisión de COVID 19 más recientes. Para acceder a la API, necesita una clave que es personal para cada usuario. En este paso, obtendremos estas claves
Obtenga la clave API para los datos de COVID 19:
- Inicie sesión o regístrese para obtener su cuenta RapidAPI.
- Después de eso, vaya a la API COVID-19 de Gramzivi
- Desplácese hacia abajo hasta la sección "Parámetros de encabezado" de la consola de API.
- Su clave de API debe estar visible en el campo "X-RapidAPI-Key".
Obtenga la clave API para datos de películas y programas de televisión:
- Inicie sesión o regístrese para obtener su cuenta TMDB
- Después de eso, vaya a su configuración - API
- Desplácese hacia abajo hasta la sección "Clave API (autenticación v3)"
- Su clave de API debería estar visible debajo de ella
Crear archivo "config.py"
Ahora crearemos un archivo config.py para almacenar nuestras claves API. Creamos un archivo separado para estos, porque las claves de API son información confidencial y si comparte su proyecto, no debe compartir su clave de API.
- Crea un nuevo directorio de proyectos
- Dentro del directorio recién creado, cree un nuevo archivo llamado "config.py"
- Edite este archivo con un editor de su elección (Sublime, Notepad ++) y copie y reemplace el siguiente texto con la información relevante obtenida en el paso anterior:
session_key = "secreto" #Esto no es seguro … pero solo para probarlo está bien
rapid_api_key = "" api_key = ""
Guarda el archivo
Paso 4: Conecte Python y Twilio a través de Ngrok
En este paso haremos lo siguiente:
- Descarga el código fuente
- Ejecute el programa y reenvíe la IP local a una dirección pública a través de ngrok para que podamos realizar una solicitud.
- Configure nuestra cuenta Twilio para reenviar la solicitud a nuestro servidor
Descarga el código fuente del bot:
Descargue todo el archivo adjunto en esta configuración en el directorio del proyecto creado en el último paso.
Ejecuta el programa:
Vaya al directorio del código fuente en la CMD / terminal y ejecute el siguiente comando:
python server_main.py
Asegúrate de tener el "config.py" que creamos en el último paso o de lo contrario obtendrás un error
La salida debería ser algo como esto:
* Aplicación Flask de servicio "server_main" (carga diferida)
* Entorno: 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: activado * Ejecutando en https://127.0.0.1:5000/ (Presione CTRL + C para salir) * Reiniciando con stat * ¡El depurador está activo! * PIN del depurador: 740-257-236
Esto significa que su servidor está funcionando correctamente en su red local en el puerto 5000. Para hacer que este servidor sea accesible desde fuera de su red local, usaremos ngrok
Reenviar IP local a una dirección pública a través de ngrok
Vaya al directorio donde descargó ngrok a través de CMD / terminal y ejecute el siguiente comando:
ngrok http 5000
La salida debería ser algo como esto:
ngrok por @inconshreveable (Ctrl + C para salir)
Estado de la sesión en línea La sesión Caduca a las 7 horas, 59 minutos Versión 2.3.35 Región Interfaz web de Estados Unidos (EE. UU.) Http://127.0.0.1:4040 Reenvío _https://d44c955749bf.ngrok.io_ -> _https:// localhost: 5000_ Reenvío _https://d44c955749bf.ngrok.io_ -> _https:// localhost: 5000_ Conexiones ttl opn rt1 rt5 p50 p90 0 0 0,00 0,00 0,00 0,00
Copie el enlace HTTP de la parte "Reenvío" (solo hasta ngrok.io). (He agregado el _ en este ejemplo para evitar que se pueda interceptarlo como un enlace)
Configure Twilio para usar la nueva dirección para reenviar la solicitud del servidor a:
Ahora que hemos reenviado con éxito nuestro servidor para que se acceda públicamente, necesitamos configurar Twilio de modo que cuando se realice una solicitud utilizando la API de Whatsapp de Twilio, reenvíe la solicitud a nuestro servidor. Para hacer esto, necesitamos hacer lo siguiente:
- Vaya a la sección de Whatsapp en la consola de Twilio
- Navega a la subsección "Sanbox"
- En el cuadro de texto "CUANDO VIENE UN MENSAJE" pegue el enlace HTTP de ngrok copiado con la extensión / sms (NO COPIAR _ al principio y al final):
_https://d44c955749bf.ngrok.io/sms_
Ahora todo para el chatbot está configurado. En el siguiente paso, podemos probar si todo funciona correctamente
Paso 5: Pruebe nuestra aplicación
En este paso haremos lo siguiente:
- Únase a nuestro bot usando el código de acceso
- Prueba nuestra aplicación
Únase a nuestro bot usando el código de acceso
En este proyecto, usaremos el número de caja de arena de Whatsapp de Twilio para nuestro bot de Whatsapp. Para cada persona, este número será diferente. Puedes encontrar tu número así:
- Inicie sesión en su cuenta Twilio
- Vaya a la Consola Twilio -> Sección de Whatsapp -> Sandbox
- Verá su número de Twilio Sandbox con el siguiente texto:
Invita a tus amigos a tu Sandbox. Pídales que envíen un mensaje de WhatsApp a:
Debido a una política de seguridad de Whatsapp, todos los que quieran hablar con un bot automatizado a través de Whatsapp deben optar explícitamente por usar un código. Puede encontrar su código mirando en la misma sección que su número de sandbox de Twilio con el texto:
Una vez que haya adquirido su número de Whatsapp de Twilio Sandbox y su código de suscripción, para comenzar a usar el bot, vaya a su teléfono móvil y haga lo siguiente:
- Guarde el "Número de Whatsapp de Twilio Sandbox" en su contacto con el nombre que elija (por ejemplo, CovBot)
- Abra Whatsapp y envíe el siguiente mensaje a ese contacto:
entrar
Debería ver un mensaje como este:
Twilio Sandbox: Ya está todo listo….
Esto significa que se ha conectado con su bot y está listo para preguntar qs
Prueba nuestra aplicación:
Para probar las diversas funciones de su bot después de que se haya conectado, envíe el siguiente mensaje al bot:
Hola
Debería ver el siguiente texto:
¡Bienvenido a CoVbot!
Un chatbot simple que puede brindar las últimas actualizaciones de COVID-19 de una manera simple, rápida y fácil. Dado que todos estamos en cuarentena, el bot se puede utilizar para sugerir algunas actividades divertidas para aprovechar al máximo nuestro tiempo en casa mientras nos esforzamos por mantenernos seguros a nosotros mismos, a nuestros amigos y a nuestra familia. ¡Esperamos que lo disfrutes y te resulte útil! ¡Envía 4 para empezar!
Ahora puedes seguir la opción para probar las diferentes funciones del bot.
¡ESO ES TODO! ¡Tu Chatbot de Whatsapp está listo! Felicidades
Paso 6: ¿Cómo funciona y mejoras futuras?
Esta sección es para personas que tienen alguna experiencia en programación de Python. Si no lo hace, puede omitir esta sección.
Explicación del código
Bucle principal:
Cuando se envía un mensaje de Whatsapp a su número de Twilio, la API de Twilio realiza una solicitud POST a su servidor que usted especificó. El servidor se implementa utilizando el marco Flask y, por lo tanto, podemos usar el objeto Flask Request para recuperar los datos recibidos durante la solicitud POST. Basándonos en los datos (números en este caso) decidimos qué opción ha seleccionado el usuario y damos la información adecuada.
Datos de COVID, películas y programas de televisión:
Los datos de COVID 19, películas y programas de televisión se recuperan de una API. Utilizo la biblioteca de solicitud de Python para obtener los datos y luego los convierto a formato JSON. Luego analizo la información relevante. Para las películas y el programa de televisión, también utilicé la biblioteca de pitones aleatorios para elegir un programa de televisión y una película al azar.
Detalles del libro
El algoritmo de sugerencia de libros utilizado en el proyecto es solo un raspador web. No pude encontrar ninguna API que le brinde un libro aleatorio con detalles, así que simplemente raspé un sitio web usando BeautifulSoup4 y usando el analizador lxml extraigo la información relevante del libro
Detalles del submenú:
Implementar los submenús fue un poco más complicado que el resto, ya que los mensajes de Whatsapp son como SMS, que es un protocolo sin estado. Para solucionar esto he utilizado dos técnicas:
- Uso de variables globales para recordar el estado del mensaje: esto solo se implementa para la subopción COVID 19. En esto, cuando un usuario selecciona "Estado de COVID 19 en la opción de mi país", una variable global llamada incomplete_message se establece en True para indicar que todavía se necesita otro mensaje basado en la opción anterior. Luego, hay una verificación al inicio que verifica si un mensaje está marcado como incompleto, si es así, asume que el mensaje es el nombre del país para los datos COVID y pasa la información a la función correcta y establece la variable global mensaje incompleto en Falso.
- Uso de cookies y sesiones de frascos de Twilio: las sesiones de frascos y cookies se utilizan en el submenú "Sugerir una actividad de cuarentena" para implementar el estado, al igual que cualquier aplicación web en Internet lo usa en estos días, pero en lugar de recordar cosas como su nombre de usuario o cuenta recuerda la conversión entre dos números. Si desea obtener más información sobre esta parte, le recomiendo leer esta increíble guía sobre las cookies de Twilio escrita por el equipo de Twilio.
Mejoras futuras:
- Hacer uso de la orientación a objetos de Python y los patrones de diseño para mejorar la arquitectura de código y DRYness
- Eliminar variables globales
- Se puede mejorar el manejo de errores
- Actualice automáticamente la dirección ngrok usando corn y Twilio CLI
- Documentación de código
Paso 7: Notas finales
Espero que a todos les guste este proyecto. Este es mi primer instructivo, así que si algo no está claro o necesita más explicación, hágamelo saber en la sección de comentarios y puedo ayudarlo. Además, si hizo este proyecto con una técnica o lista de características diferente, compártanlo todos
Recomendado:
Envío de información con Helium Atom: 3 pasos
Envío de información con Helium Atom: Helium es una plataforma inalámbrica completa para Internet de las cosas, que proporciona hardware integrado, interfaz de software y una infraestructura integrada para conectar objetos a Internet de forma fácil, eficiente y segura. Hay dos componentes de hardware
Medición de temperatura automática e información por voz: 5 pasos (con imágenes)
Medición de temperatura automática e información de voz: Recientemente, todo el mundo está luchando contra el virus Covid19. La primera comprobación de personas afectadas (o sospechosas de estar afectadas) es medir la temperatura corporal. Así que este proyecto está hecho a un modelo que puede medir la temperatura corporal automáticamente e informar por vo
Sensor ultrasónico Luces LED de animación de bienvenida automáticas y pantalla de información LCD: 6 pasos
Sensor ultrasónico Luces LED de animación de bienvenida automáticas y pantalla de información LCD: cuando regresa a casa cansado y tratando de sentarse y relajarse, debe ser muy aburrido ver lo mismo a su alrededor una y otra vez todos los días. ¿Por qué no agrega algo divertido e interesante que cambie su estado de ánimo? Construye un Arduin súper fácil
Estación de información (Arduino): 5 pasos (con imágenes)
Estación de información (Arduino): ¡Bienvenido a mi último instructable para construir una estación de información autónoma! Este increíble dispositivo usa un Arduino Uno con un escudo ethernet para conectarse a Internet y extraer las últimas noticias y el clima local y mostrarlo en una pantalla LCD.
Creación de Bookhuddle.com, un sitio web para descubrir, organizar y compartir información sobre libros: 10 pasos
Creación de Bookhuddle.com, un sitio web para descubrir, organizar y compartir información sobre libros: esta publicación describe los pasos necesarios para crear y lanzar Bookhuddle.com, un sitio web destinado a ayudar a los lectores a descubrir, organizar y compartir información sobre libros. se aplicaría al desarrollo de otros sitios web