Table des matières:
- Fournitures
- Étape 1: Installez le logiciel requis
- Étape 2: créez un compte Twilio
- Étape 3: Obtenez une clé API pour les données, les films et les émissions de télévision COVID 19
- Étape 4: Connectez Python et Twilio via Ngrok
- Étape 5: Testez notre application
- Étape 6: Comment ça marche et amélioration future:
- Étape 7: Notes finales
Vidéo: CovBot - un chatbot basé sur WhatsApp pour COVID 19 Info & More: 7 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:06
CoVbot est un chatbot simple et intuitif basé sur Whatsapp. La principale caractéristique du bot est:
Il peut vous donner le dernier statut de COVID-19 dans le pays de votre choix de manière simple et intuitive.
De plus, le bot peut suggérer des activités amusantes à faire À LA MAISON telles que:
- Suggérer un film - Un film à regarder dans la liste des 10 meilleurs films, avec un bref aperçu de l'intrigue et de la durée. Étant donné que cette liste n'est pas codée en dur dans le logiciel, cela vous donnera toujours les dernières mises à jour en fonction des tendances actuelles.
- Suggérer une émission de télévision - Une émission de télévision à regarder parmi les émissions de télévision les plus populaires, avec un bref aperçu de l'intrigue et des notes. Étant donné que cette liste n'est pas codée en dur dans le logiciel, cela vous donnera toujours les dernières mises à jour en fonction des tendances actuelles.
- Suggérer un livre - Un livre à lire dans la liste des 10 meilleurs livres, avec le texte de présentation et l'image de couverture du livre.
- Entraînements quotidiens - Il s'agit d'une vidéo basée sur un programme d'entraînement de 7 jours fourni par CRANK gym sur son compte Instagram.
Si vous aimez ce Instructable, veuillez envisager de voter pour lui dans le premier concours d'auteur d'article. (et oui, c'est mon premier instructable, donc si quelque chose n'est pas clair ou a besoin de plus d'explications, veuillez me le faire savoir dans la section commentaire et je peux vous aider:)
Fournitures
Ce projet est uniquement un projet basé sur un logiciel, donc toute personne suivant cette instructable avec un ordinateur portable/de bureau/macOS/Linux et Internet peut terminer ce projet. J'inclurai également une section détaillée à la fin pour expliquer le code/processus plus en détail pour les personnes ayant une certaine expérience en programmation, veuillez noter que cela n'est pas nécessaire pour terminer le projet
Niveau de difficulté du projet:
Pas très facile, mais pas très difficile
Le matériel que nous utiliserons:
- Un ordinateur portable/de bureau sous Windows/macOS/Linux.
- Un téléphone portable avec WhatsApp Messenger installé
Le logiciel que nous utiliserons:
- Langage de programmation Python
- ngrok - est un outil utilisé pour nous permettre d'accéder à notre serveur depuis l'extérieur de notre réseau
-
Editeur de votre choix: (ex. Notepad++, Sublime Text, Vim etc)
Étape 1: Installez le logiciel requis
Dans cette étape, nous effectuerons les opérations suivantes:
- Installez Python > 3.6 et testez-le
- Installer les bibliothèques Python requises
- Installer ngrok
Si vous avez à la fois l'application installée, vous pouvez ignorer cette étape
Installez Python:
L'ensemble de la base de code backend/serveur de ce projet est écrit en Python 3.6. Par conséquent, pour exécuter nos applications, nous devons avoir Python > 3.6 installé sur notre ordinateur. Suivez le tutoriel de CoreySchafer sur l'installation de python pour Windows et macOS
Vous pouvez tester que tout est correctement installé en tapant ce qui suit dans le cmd/Terminal:
python -c 'print(f"Bonjour tout le monde")'
Si tout a été installé correctement, Hello World devrait être imprimé à l'écran. Si vous obtenez une erreur de syntaxe non valide, la mauvaise version de python est installée. Installer une version de python >= 3.6
Installez les bibliothèques Python requises à l'aide de pip:
Nous utiliserons les bibliothèques Python suivantes pour faire fonctionner notre logiciel:
- Flask - Ceci est le cadre de notre serveur
- Twilio - Cette bibliothèque permet à Python de communiquer avec WhatsApp
- Request - Cette bibliothèque est utilisée pour demander des données aux API
- BeautifulSoup4 - Cette bibliothèque est utilisée pour extraire des informations des sites Web
- lxml - Cette bibliothèque est utilisée en combinaison avec BeautifulSoup pour extraire les informations pertinentes d'un site Web
Pour installer ces bibliothèques, vous pouvez procéder comme suit:
Ouvrez CMD/Terminal et tapez la commande suivante:
flacon d'installation de pip, twilio, demande, beautifulsoup4, lxml
OU
Téléchargez le fichier requirements.txt et ouvrez un terminal dans le répertoire où se trouve le fichier et tapez:
pip install -r requirements.txt
Installer ngrok
ngrok vous permet d'exposer à Internet un serveur exécuté sur votre machine locale. Dites simplement à ngrok sur quel port votre serveur écoute.
Suivez le guide sur le site Web de ngrok pour installer ngrok pour le système d'exploitation que vous utilisez.
Astuce: L'étape 3 du guide n'est pas pertinente pour ce projet et peut donc être ignorée
Étape 2: créez un compte Twilio
Dans cette étape, nous effectuerons les opérations suivantes:
- Créer un compte Twilio
- Introduction rapide aux sections utiles sur la console de Twilio
S'inscrire:
Dans ce projet, nous utiliserons l'API Twilio Whatsapp pour connecter notre programme python à Whatsapp. Pour pouvoir utiliser l'API Twilio, nous devons d'abord créer un compte sur le site officiel de Twilio. Pour un compte d'essai, Twilio offre un crédit gratuit de 15 $ à utiliser.
Présentation rapide:
Une fois votre compte créé, les sections les plus intéressantes de la console Twilio pour ce projet sont:
Tableau de bord - Depuis le tableau de bord, vous pouvez voir le montant de crédit qu'il vous reste, vous pouvez modifier le nom de votre projet et changer le langage de programmation
Sous-section Whatsapp dans la section SMS programmable - À partir de la section Whatsapp de la console, vous pouvez accéder au code de jointure pour le bot, au nombre de Whatsapp que nous utiliserons dans le projet pour parler à notre bot et également à la configuration du webhook. Plus de détails sur tout cela seront décrits dans les prochaines étapes
Étape 3: Obtenez une clé API pour les données, les films et les émissions de télévision COVID 19
Une clé API ou une clé d'interface de programmation d'applications est un code qui est transmis par les applications informatiques. Le programme ou l'application appelle ensuite l'API ou l'interface de programmation d'application pour identifier son utilisateur, développeur ou programme appelant sur un site Web.
Nous utilisons une API pour obtenir des informations sur le dernier statut COVID 19, les films et les émissions de télévision. Pour accéder à l'API, vous avez besoin d'une clé personnelle à chaque utilisateur. Dans cette étape, nous obtiendrons ces clés
Obtenez la clé API pour les données COVID 19:
- Connectez-vous ou créez votre compte RapidAPI.
- Après cela, allez à l'API COVID-19 de Gramzivi
- Faites défiler jusqu'à la section "Paramètres d'en-tête" de la console API.
- Votre clé API doit être visible dans le champ « X-RapidAPI-Key ».
Obtenez une clé API pour les données de films et d'émissions de télévision:
- Connectez-vous ou inscrivez-vous pour votre compte TMDB
- Après cela, accédez à votre paramètre - API
- Faites défiler jusqu'à la section "API Key (v3 auth)"
- Votre clé API doit être visible en dessous
Créer un fichier "config.py"
Nous allons maintenant créer un fichier config.py pour stocker nos clés API. Nous créons un fichier séparé pour ceux-ci, car les clés API sont des informations confidentielles et si vous partagez votre projet, vous ne devez pas partager votre clé API.
- Créer un nouveau répertoire de projet
- Dans le répertoire nouvellement créé, créez un nouveau fichier appelé "config.py"
- Editez ce fichier avec un éditeur de votre choix (Sublime, Notepad++) et copiez et remplacez le texte suivant par les informations pertinentes obtenues à l'étape précédente:
session_key = "secret" #Ce n'est pas sûr.. mais juste pour le test c'est ok
rapid_api_key = "" api_key = ""
Enregistrer le fichier
Étape 4: Connectez Python et Twilio via Ngrok
Dans cette étape, nous allons procéder comme suit:
- Télécharger le code source
- Exécutez le programme et transférez l'adresse IP locale à une adresse publique via ngrok afin que nous puissions lui faire une demande
- Configurer notre compte Twilio pour transmettre la demande à notre serveur
Téléchargez le code source du bot:
Téléchargez tous les fichiers joints de cette configuration dans le répertoire du projet créé à la dernière étape.
Exécutez le programme:
Allez dans le répertoire du code source dans le CMD/terminal et exécutez la commande suivante:
serveur_main.py python
Assurez-vous d'avoir le "config.py" que nous avons créé à la dernière étape ou bien vous obtiendrez une erreur
La sortie devrait ressembler à ceci:
* Servant l'application Flask "server_main" (chargement paresseux)
* Environnement: production ATTENTION: Il s'agit d'un serveur de développement. Ne l'utilisez pas dans un déploiement de production. Utilisez plutôt un serveur WSGI de production. * Mode debug: activé * Exécution sur https://127.0.0.1:5000/ (Appuyez sur CTRL+C pour quitter) * Redémarrage avec stat * Le débogueur est actif ! * PIN du débogueur: 740-257-236
Cela signifie que votre serveur fonctionne correctement sur votre réseau local sur le port 5000. Pour rendre ce serveur accessible depuis l'extérieur de votre réseau local, nous utiliserons ngrok
Transférer l'IP locale à une adresse publique via ngrok
Accédez au répertoire où vous avez téléchargé ngrok via CMD/terminal et exécutez la commande suivante:
ngrok http 5000
La sortie devrait être quelque chose comme ceci:
ngrok par @inconshreveable (Ctrl+C pour quitter)
État de la session en ligne La session expire 7 heures, 59 minutes Version 2.3.35 Région États-Unis (États-Unis) Interface Web https://127.0.0.1:4040 Transfert _https://d44c955749bf.ngrok.io_ -> _https://localhost:5000_ Transfert _https://d44c955749bf.ngrok.io_ -> _https://localhost:5000_ Connexions ttl opn rt1 rt5 p50 p90 0 0 0.00 0.00 0.00 0.00
Copiez le lien HTTP de la partie "Forwading" (juste jusqu'à ngrok.io). (J'ai ajouté le _ dans cet exemple pour éviter instructable de l'intercepter en tant que lien)
Configurez Twilio pour utiliser la nouvelle adresse pour transférer la demande du serveur à:
Maintenant que nous avons transféré avec succès notre serveur pour qu'il soit accessible publiquement, nous devons configurer Twilio de telle sorte que lorsqu'une demande est effectuée à l'aide de l'API Twilio Whatsapp, nous la transmettions à notre serveur. Pour ce faire, nous devons effectuer les opérations suivantes:
- Accédez à la section Whatsapp sur la console de Twilio
- Accédez à la sous-section "Sanbox"
- Dans la zone de texte "WHEN A MESSAGE COMES", collez le lien HTTP de ngrok copié avec l'extension /sms (NE COPIEZ PAS LE _ au début et à la fin):
_https://d44c955749bf.ngrok.io/sms_
Maintenant, tout pour le chatbot est configuré. Dans l'étape suivante, nous pouvons tester si tout fonctionne correctement
Étape 5: Testez notre application
Dans cette étape, nous allons procéder comme suit:
- Rejoignez notre bot en utilisant le code d'accès
- Essayez notre application
Rejoignez notre bot en utilisant le code d'accès
Dans ce projet, nous utiliserons le numéro de bac à sable Whatsapp de Twilio pour notre bot Whatsapp. Pour chaque personne, ce nombre sera différent. Vous pouvez trouver votre numéro comme ceci:
- Connectez-vous à votre compte Twilio
- Accédez à la console Twilio -> Section Whatsapp -> Sandbox
- Vous verrez votre numéro Twilio Sandbox avec le texte suivant:
Invitez vos amis dans votre bac à sable. Demandez-leur d'envoyer un message WhatsApp à:
En raison d'une politique de sécurité de Whatsapp, toute personne souhaitant parler à un bot automatisé via Whatsapp doit explicitement s'inscrire à l'aide d'un code. Vous pouvez trouver votre code en regardant dans la même section que votre numéro de bac à sable Twilio avec le texte:
Après avoir acquis votre numéro Whatsapp Twilio Sandbox et votre code d'activation, pour commencer à utiliser le bot, accédez à votre téléphone mobile et procédez comme suit:
- Enregistrez le "Twilio Sandbox Whatsapp Number" dans votre contact avec le nom de votre choix (par exemple CovBot)
- Ouvrez Whatsapp et envoyez le message suivant à ce contact:
rejoindre
Vous devriez voir un message comme celui-ci:
Twilio Sandbox: Vous êtes prêt….
Cela signifie que vous êtes connecté avec votre bot et prêt à le demander qs
Essayez notre application:
Pour tester les différentes fonctionnalités de votre bot après vous être connecté envoyez le message suivant au bot:
salut
Vous devriez voir le texte suivant:
Bienvenue sur CoVbot !
Un chatbot simple qui peut donner les dernières mises à jour de COVID-19 d'une manière simple, rapide et facile. Puisque nous sommes tous en quarantaine, le bot peut être utilisé pour suggérer des activités amusantes pour profiter au maximum de notre temps à la maison alors que nous nous efforçons de nous protéger, ainsi que nos amis et notre famille. Nous espérons qu'il vous plaira et qu'il vous sera utile ! Envoyez-en 4 pour commencer !
Vous pouvez maintenant suivre l'option pour essayer les différentes fonctionnalités du bot.
C'EST ÇA! Votre Whatsapp Chatbot est prêt !!!! Toutes nos félicitations
Étape 6: Comment ça marche et amélioration future:
Cette section est destinée aux personnes qui ont une certaine expérience de la programmation Python. Si vous ne le faites pas, vous pouvez sauter cette section
Explication du code
Boucle principale:
Lorsqu'un message Whatsapp est envoyé à votre numéro Twilio, l'API Twilio envoie une requête POST à votre serveur que vous avez spécifié. Le serveur est implémenté à l'aide du framework Flask et nous pouvons donc utiliser l'objet Flask Request pour récupérer les données reçues lors de la requête POST. Sur la base des données (chiffres dans ce cas), nous décidons quelle option l'utilisateur a sélectionnée et donnons les informations appropriées
Données COVID et films et émissions de télévision:
Les données COVID 19, Films et Séries TV sont récupérées à partir d'une API. J'utilise la bibliothèque request python pour obtenir les données, puis les convertir au format JSON. Ensuite, je viens d'analyser les informations pertinentes. Pour les films et l'émission de télévision, j'ai également utilisé la bibliothèque python aléatoire pour choisir une émission de télévision et un film aléatoires
Détails du livre
L'algorithme de suggestion de livre utilisé dans le projet n'est qu'un grattoir Web. Je n'ai trouvé aucune API qui vous donne un livre aléatoire avec des détails, alors je viens de gratter un site Web à l'aide de BeautifulSoup4 et à l'aide de l'analyseur lxml, j'extrait les informations pertinentes du livre
Détails du sous-menu:
La mise en œuvre des sous-menus était un peu plus délicate que les autres car les messages Whatsapp sont comme des SMS qui sont un protocole sans état. Pour résoudre ce problème, j'ai utilisé deux techniques:
- Utilisation de variables globales pour mémoriser l'état du message - Ceci n'est implémenté que pour la sous-option COVID 19. Dans ce cas, lorsqu'un utilisateur sélectionne l'option "État de COVID 19 dans mon pays", une variable globale nommée incomplète_message est définie sur True pour indiquer qu'un autre message basé sur l'option précédente est toujours nécessaire. Ensuite, il y a une vérification au début qui vérifie si un message est marqué incomplet si c'est le cas, il suppose que le message est le nom du pays pour les données COVID et transmet les informations à la fonction correcte et définit la variable globale message incomplet sur False
- Utilisation des cookies Twilio et des sessions Flask - Les cookies et les sessions Flask sont utilisés dans le sous-menu "Suggérer une activité de quarantaine" pour implémenter l'état, tout comme n'importe quelle application Web sur Internet l'utilise de nos jours, mais au lieu de se souvenir des choses comme votre nom d'utilisateur ou compte il se souvient de la conversion entre deux nombres. Si vous souhaitez plus d'informations sur cette partie, je vous recommande de lire ce guide génial sur les cookies Twilio écrit par l'équipe Twilio
Améliorations futures:
- Utiliser l'orientation objet de Python et les modèles de conception pour améliorer l'architecture du code et le DRYness
- Supprimer les variables globales
- La gestion des erreurs peut être améliorée
- Mettre à jour automatiquement l'adresse ngrok à l'aide de corn et Twilio CLI
- Documentation des codes
Étape 7: Notes finales
J'espère que vous aimez tous ce projet. Il s'agit de mon premier instructable, donc si quelque chose n'est pas clair ou a besoin de plus d'explications, faites-le moi savoir dans la section commentaire, et je peux vous aider. De plus, si vous avez réalisé ce projet avec une technique ou une liste de fonctionnalités différente, partagez-le tous
Conseillé:
Système de présence basé sur les empreintes digitales et RFID utilisant Raspberry Pi et la base de données MySQL : 5 étapes
Système de présence basé sur les empreintes digitales et RFID utilisant Raspberry Pi et la base de données MySQL : vidéo de ce projet
Système de lavage automatique des mains sans contact basé sur Raspberry Pi pour Covid-19 : 4 étapes
Système de lavage automatique des mains sans contact basé sur Raspberry Pi pour Covid-19 : il s'agit d'un système de lavage des mains simple utilisant des capteurs pir et une carte Raspberry pi. Cette application est principalement conçue à des fins hygiéniques. Le modèle peut être placé dans des lieux publics, des hôpitaux, des centres commerciaux, etc
Notions de base sur les transistors - Tutoriel sur les transistors de puissance BD139 et BD140 : 7 étapes
Notions de base sur les transistors | Tutoriel sur les transistors de puissance BD139 et BD140 : Hé, quoi de neuf, les gars ! Akarsh ici de CETech.Aujourd'hui, nous allons acquérir des connaissances sur la centrale des circuits de transistors de petite taille mais beaucoup plus gros dans le travail.Fondamentalement, nous allons discuter de quelques bases liées aux transistors et
Générateur de musique basé sur la météo (Générateur Midi basé sur ESP8266): 4 étapes (avec images)
Générateur de musique basé sur la météo (Générateur Midi basé sur ESP8266): Bonjour, aujourd'hui, je vais vous expliquer comment créer votre propre petit générateur de musique basé sur la météo. Il est basé sur un ESP8266, qui ressemble un peu à un Arduino, et il réagit à la température, à la pluie et l'intensité lumineuse. Ne vous attendez pas à ce qu'il fasse des chansons entières ou un programme d'accords
Comment contrôler le commutateur intelligent de base Sonoff basé sur ESP8266 avec un smartphone : 4 étapes (avec photos)
Comment contrôler le commutateur intelligent de base Sonoff basé sur ESP8266 avec un smartphone : Sonoff est une gamme d'appareils pour Smart Home développée par ITEAD. L'un des appareils les plus flexibles et les moins chers de cette gamme est le Sonoff Basic. Il s'agit d'un commutateur compatible Wi-Fi basé sur une excellente puce, ESP8266. Cet article décrit comment configurer le Cl