Table des matières:

CovBot - un chatbot basé sur WhatsApp pour COVID 19 Info & More: 7 étapes
CovBot - un chatbot basé sur WhatsApp pour COVID 19 Info & More: 7 étapes

Vidéo: CovBot - un chatbot basé sur WhatsApp pour COVID 19 Info & More: 7 étapes

Vidéo: CovBot - un chatbot basé sur WhatsApp pour COVID 19 Info & More: 7 étapes
Vidéo: Coronabot, le « Chatbot » qui répond à toutes vos questions sur le Covid-19 2024, Novembre
Anonim
Image
Image
Créer un compte Twilio
Créer un compte Twilio

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:

  1. 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.
  2. 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.
  3. 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.
  4. 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:

  1. Langage de programmation Python
  2. ngrok - est un outil utilisé pour nous permettre d'accéder à notre serveur depuis l'extérieur de notre réseau
  3. Editeur de votre choix: (ex. Notepad++, Sublime Text, Vim etc)

Étape 1: Installez le logiciel requis

Image
Image

Dans cette étape, nous effectuerons les opérations suivantes:

  1. Installez Python > 3.6 et testez-le
  2. Installer les bibliothèques Python requises
  3. 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:

  1. Flask - Ceci est le cadre de notre serveur
  2. Twilio - Cette bibliothèque permet à Python de communiquer avec WhatsApp
  3. Request - Cette bibliothèque est utilisée pour demander des données aux API
  4. BeautifulSoup4 - Cette bibliothèque est utilisée pour extraire des informations des sites Web
  5. 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:

  1. Créer un compte Twilio
  2. 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

Obtenez une clé API pour les données, les films et les émissions de télévision COVID 19
Obtenez une clé API pour les données, les films et les émissions de télévision COVID 19
Obtenez une clé API pour les données, les films et les émissions de télévision COVID 19
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:

  1. Télécharger le code source
  2. Exécutez le programme et transférez l'adresse IP locale à une adresse publique via ngrok afin que nous puissions lui faire une demande
  3. 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:

  1. Accédez à la section Whatsapp sur la console de Twilio
  2. Accédez à la sous-section "Sanbox"
  3. 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

Testez notre application
Testez notre application
Testez notre application
Testez notre application
Testez notre application
Testez notre application

Dans cette étape, nous allons procéder comme suit:

  1. Rejoignez notre bot en utilisant le code d'accès
  2. 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:

  1. Enregistrez le "Twilio Sandbox Whatsapp Number" dans votre contact avec le nom de votre choix (par exemple CovBot)
  2. 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:

Comment ça marche et amélioration future
Comment ça marche et amélioration future
Comment ça marche et amélioration future
Comment ça marche et amélioration future
Comment ça marche et amélioration future
Comment ça marche et amélioration future
Comment ça marche et amélioration future
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:

  1. 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
  2. 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:

  1. Utiliser l'orientation objet de Python et les modèles de conception pour améliorer l'architecture du code et le DRYness
  2. Supprimer les variables globales
  3. La gestion des erreurs peut être améliorée
  4. Mettre à jour automatiquement l'adresse ngrok à l'aide de corn et Twilio CLI
  5. 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é: