CovBot - ein WhatsApp-basierter Chatbot für COVID-19-Infos und mehr - Gunook
CovBot - ein WhatsApp-basierter Chatbot für COVID-19-Infos und mehr - Gunook
Anonim
Image
Image
Erstellen Sie ein Twilio-Konto
Erstellen Sie ein Twilio-Konto

CoVbot ist ein einfacher und intuitiver Chatbot auf WhatsApp-Basis. Das Hauptmerkmal des Bots ist:

Es kann Ihnen auf einfache und intuitive Weise den neuesten Status von COVID-19 im Land Ihrer Wahl anzeigen.

Darüber hinaus kann der Bot lustige Aktivitäten für ZU HAUSE vorschlagen, wie zum Beispiel:

  1. Einen Film vorschlagen – Ein Film aus der Liste der Top-10-Filme mit einem kurzen Überblick über Handlung und Dauer. Da diese Liste nicht in Software fest codiert ist, erhalten Sie immer die neuesten Updates basierend auf aktuellen Trends.
  2. Eine TV-Show vorschlagen – Eine TV-Show aus den beliebtesten TV-Shows mit einem kurzen Überblick über die Handlung und Bewertungen. Da diese Liste nicht in Software fest codiert ist, erhalten Sie immer die neuesten Updates basierend auf aktuellen Trends.
  3. Buch vorschlagen - Ein Buch zum Lesen aus der Top-10-Buchliste mit Klappentext und Titelbild des Buches.
  4. Tägliche Workouts - Dies ist ein Video, das auf einem 7-tägigen Workout-Plan basiert, der von CRANK Gym auf ihrem Instagram-Konto bereitgestellt wird.

Wenn Sie dieses Instructable genießen, erwägen Sie bitte, im First Item Author Contest dafür zu stimmen. (und ja, dies ist mein erstes anweisbares, also wenn etwas nicht klar ist oder weitere Erklärungen benötigt, lassen Sie es mich bitte im Kommentarbereich wissen und ich kann Ihnen helfen:)

Lieferungen

Dieses Projekt ist ausschließlich ein softwarebasiertes Projekt, so dass jeder, der diesem mit einem Laptop / Desktop-PC / macOS / Linux und dem Internet folgt, dieses Projekt abschließen kann. Ich werde auch am Ende einen detaillierten Abschnitt einfügen, um den Code/Prozess für Leute mit Programmiererfahrung genauer zu erklären. Bitte beachten Sie, dass dies nicht erforderlich ist, um das Projekt abzuschließen

Schwierigkeitsgrad des Projekts:

Nicht ganz einfach, aber nicht sehr schwer

Die von uns verwendete Hardware:

  • Ein Laptop/Desktop mit Windows/macOS/Linux.
  • Ein Mobiltelefon mit installiertem WhatsApp Messenger

Die von uns verwendete Software:

  1. Python-Programmiersprache
  2. ngrok - ist ein Tool, mit dem wir von außerhalb unseres Netzwerks auf unseren Server zugreifen können
  3. Editor Ihrer Wahl: (z. B. Notepad++, Sublime Text, Vim etc.)

Schritt 1: Installieren Sie die erforderliche Software

Image
Image

In diesem Schritt werden wir Folgendes tun:

  1. Python > 3.6 installieren und testen
  2. Installieren Sie die erforderlichen Python-Bibliotheken
  3. ngrok. installieren

Wenn Sie beide Anwendungen installiert haben, können Sie diesen Schritt überspringen

Python installieren:

Die gesamte Backend-/Server-Codebasis für dieses Projekt ist in Python 3.6 geschrieben. Um unsere Anwendungen auszuführen, müssen wir daher Python > 3.6 auf unserem Computer installiert haben. Folgen Sie dem Tutorial von CoreySchafer zur Installation von Python für Windows und macOS

Sie können testen, ob alles richtig installiert ist, indem Sie Folgendes in das cmd/Terminal eingeben:

python -c 'print(f"Hallo Welt")'

Wenn alles richtig installiert wurde, sollte Hello World auf dem Bildschirm gedruckt werden. Wenn Sie einen ungültigen Syntaxfehler erhalten, haben Sie die falsche Version von Python installiert. Installieren Sie eine Python-Version >= 3.6

Installieren Sie die erforderlichen Python-Bibliotheken mit pip:

Wir werden die folgenden Python-Bibliotheken verwenden, damit unsere Software funktioniert:

  1. Flask - Dies ist das Framework für unseren Server
  2. Twilio - Diese Bibliothek bietet Python die Möglichkeit, mit WhatsApp zu kommunizieren
  3. Request - Diese Bibliothek wird verwendet, um Daten von APIs anzufordern
  4. BeautifulSoup4 - Diese Bibliothek wird verwendet, um Informationen von Websites abzukratzen
  5. lxml - Diese Bibliothek wird in Kombination mit BeautifulSoup verwendet, um die relevanten Informationen aus einer Website zu extrahieren

Um diese Bibliotheken zu installieren, können Sie Folgendes tun:

Öffnen Sie CMD/Terminal und geben Sie den folgenden Befehl ein:

pip install flasche, twilio, anfrage, beautifulsoup4, lxml

ODER

Laden Sie die Datei requirements.txt herunter, öffnen Sie ein Terminal in dem Verzeichnis, in dem sich die Datei befindet, und geben Sie Folgendes ein:

pip install -r anforderungen.txt

ngrok. installieren

Mit ngrok können Sie einen Server, der auf Ihrem lokalen Computer ausgeführt wird, dem Internet zugänglich machen. Sagen Sie ngrok einfach, auf welchem Port Ihr Server lauscht.

Befolgen Sie die Anleitung auf der ngrok-Website, um ngrok für das von Ihnen verwendete Betriebssystem zu installieren.

Tipp: Schritt 3 der Anleitung ist für dieses Projekt nicht relevant und kann daher übersprungen werden

Schritt 2: Erstellen Sie ein Twilio-Konto

In diesem Schritt werden wir Folgendes tun:

  1. Registrieren Sie sich für ein Twilio-Konto
  2. Schnelle Einführung in nützliche Abschnitte der Twilio-Konsole

Anmeldung:

In diesem Projekt werden wir die Twilio Whatsapp API verwenden, um unser Python-Programm mit Whatsapp zu verbinden. Um die Twilio-API verwenden zu können, müssen wir zunächst ein Konto auf der offiziellen Website von Twilio erstellen. Für ein Testkonto bietet Twilio ein kostenloses Guthaben von 15 USD an, das wir verwenden können.

Schnelle Einführung:

Sobald Sie ein Konto erstellt haben, sind die interessantesten Abschnitte der Twilio-Konsole für dieses Projekt:

Dashboard - Über das Dashboard können Sie das noch verbleibende Guthaben sehen, Ihren Projektnamen bearbeiten und die Programmiersprache ändern

Whatsapp-Unterabschnitt im Abschnitt „Programmierbare SMS“- Über den WhatsApp-Abschnitt der Konsole können Sie auf den Beitrittscode für den Bot, die Anzahl der WhatsApps, die wir im Projekt verwenden, um mit unserem Bot zu sprechen, und auch auf die Einrichtung des Webhooks zugreifen. Weitere Details zu all diesen werden in den nächsten Schritten beschrieben

Schritt 3: API-Schlüssel für COVID-19-Daten, Filme und TV-Shows erhalten

Holen Sie sich den API-Schlüssel für COVID-19-Daten, Filme und TV-Shows
Holen Sie sich den API-Schlüssel für COVID-19-Daten, Filme und TV-Shows
Holen Sie sich den API-Schlüssel für COVID-19-Daten, Filme und TV-Shows
Holen Sie sich den API-Schlüssel für COVID-19-Daten, Filme und TV-Shows

Ein API-Schlüssel oder Anwendungsprogrammierschnittstellenschlüssel ist ein Code, der von Computeranwendungen übergeben wird. Das Programm oder die Anwendung ruft dann die API oder die Anwendungsprogrammierschnittstelle auf, um ihren Benutzer, Entwickler oder aufrufenden Programm für eine Website zu identifizieren.

Wir verwenden eine API, um Informationen zum neuesten COVID-19-Status, zu Filmen und Fernsehsendungen zu erhalten. Für den Zugriff auf die API benötigen Sie für jeden Benutzer einen persönlichen Schlüssel. In diesem Schritt erhalten wir diese Schlüssel

API-Schlüssel für COVID-19-Daten abrufen:

  • Melden Sie sich an oder registrieren Sie sich für Ihr RapidAPI-Konto.
  • Danach gehen Sie zu COVID-19 API von Gramzivi
  • Scrollen Sie nach unten zum Abschnitt "Header-Parameter" der API-Konsole.
  • Ihr API-Schlüssel sollte im Feld „X-RapidAPI-Key“sichtbar sein.

API-Schlüssel für Filme und Fernsehsendungsdaten abrufen:

  • Melden Sie sich an oder registrieren Sie sich für Ihr TMDB-Konto
  • Danach gehen Sie zu Ihrer Einstellung - API
  • Scrollen Sie nach unten zum Abschnitt "API-Schlüssel (v3-Authentifizierung)"
  • Ihr API-Schlüssel sollte darunter sichtbar sein

Datei "config.py" erstellen

Wir werden nun eine config.py-Datei erstellen, um unsere API-Schlüssel zu speichern. Wir erstellen für diese eine separate Datei, da API-Schlüssel vertrauliche Informationen sind und wenn Sie Ihr Projekt teilen, sollten Sie Ihren API-Schlüssel nicht weitergeben.

  • Erstellen Sie ein neues Projektverzeichnis
  • Erstellen Sie im neu erstellten Verzeichnis eine neue Datei namens "config.py".
  • Bearbeiten Sie diese Datei mit einem Editor Ihrer Wahl (Sublime, Notepad++) und kopieren und ersetzen Sie den folgenden Text durch die relevanten Informationen, die Sie im vorherigen Schritt erhalten haben:

session_key = "secret" #Das ist nicht sicher.. aber nur zum Testen ist es ok

rapid_api_key = "" api_key = ""

Speicher die Datei

Schritt 4: Python und Twilio über Ngrok verbinden

In diesem Schritt werden wir Folgendes tun:

  1. Laden Sie den Quellcode herunter
  2. Führen Sie das Programm aus und leiten Sie die lokale IP über ngrok an eine öffentliche Adresse weiter, damit wir eine Anfrage daran stellen können
  3. Konfigurieren Sie unser Twilio-Konto, um die Anfrage an unseren Server weiterzuleiten

Laden Sie den Quellcode für den Bot herunter:

Laden Sie alle angehängten Dateien in diesem Setup in das im letzten Schritt erstellte Projektverzeichnis herunter.

Führen Sie das Programm aus:

Gehen Sie im CMD/Terminal in das Verzeichnis des Quellcodes und führen Sie den folgenden Befehl aus:

python server_main.py

Stellen Sie sicher, dass Sie die im letzten Schritt erstellte "config.py" haben, sonst erhalten Sie eine Fehlermeldung

Die Ausgabe sollte in etwa so aussehen:

* Serving Flask-App "server_main" (Lazy Loading)

* Umgebung: Produktion WARNUNG: Dies ist ein Entwicklungsserver. Verwenden Sie es nicht in einer Produktionsbereitstellung. Verwenden Sie stattdessen einen Produktions-WSGI-Server. * Debug-Modus: on * Läuft auf https://127.0.0.1:5000/ (Drücken Sie STRG+C zum Beenden) * Neustart mit stat * Debugger ist aktiv! * Debugger-PIN: 740-257-236

Dies bedeutet, dass Ihr Server in Ihrem lokalen Netzwerk auf Port 5000 korrekt läuft. Um diesen Server von außerhalb Ihres lokalen Netzwerks zugänglich zu machen, verwenden wir ngrok

Lokale IP über ngrok. an eine öffentliche Adresse weiterleiten

Gehen Sie in das Verzeichnis, in das Sie ngrok über CMD/Terminal heruntergeladen haben, und führen Sie den folgenden Befehl aus:

ngrok http 5000

Die Ausgabe sollte in etwa so aussehen:

ngrok von @inconshreveable (Strg+C zum Beenden)

Sitzungsstatus online Sitzung läuft ab 7 Stunden, 59 Minuten Version 2.3.35 Region USA (us) Webinterface https://127.0.0.1:4040 Weiterleitung _https://d44c955749bf.ngrok.io_ -> _https://localhost:5000_ Weiterleitung _https://d44c955749bf.ngrok.io_ -> _https://localhost:5000_ Verbindungen ttl opn rt1 rt5 p50 p90 0 0 0,00 0,00 0,00 0,00

Kopieren Sie den HTTP-Link aus dem Teil "Forwading" (nur bis ngrok.io). (Ich habe das _ in diesem Beispiel hinzugefügt, um zu vermeiden, dass es als Link abgefangen wird)

Konfigurieren Sie Twilio so, dass die neue Adresse verwendet wird, um Serveranfragen weiterzuleiten an:

Nachdem wir unseren Server erfolgreich für den öffentlichen Zugriff weitergeleitet haben, müssen wir Twilio so konfigurieren, dass wir bei einer Anfrage über die Twilio Whatsapp API die Anfrage an unseren Server weiterleiten. Dazu müssen wir Folgendes tun:

  1. Gehen Sie zum WhatsApp-Bereich auf der Konsole von Twilio
  2. Navigieren Sie zum Unterabschnitt "Sanbox"
  3. Fügen Sie in das Textfeld "WHEN A MESSAGE COMES" den HTTP-Link von ngrok ein, der mit der /sms-Erweiterung kopiert wurde (KOPIEREN SIE DAS _ NICHT am Anfang und Ende):

_https://d44c955749bf.ngrok.io/sms_

Nun ist alles für den Chatbot eingerichtet. Im nächsten Schritt können wir testen, ob alles richtig funktioniert

Schritt 5: Testen Sie unsere Anwendung

Testen Sie unsere Anwendung
Testen Sie unsere Anwendung
Testen Sie unsere Anwendung
Testen Sie unsere Anwendung
Testen Sie unsere Anwendung
Testen Sie unsere Anwendung

In diesem Schritt werden wir Folgendes tun:

  1. Treten Sie unserem Bot mit dem Zugangscode bei
  2. Testen Sie unsere Anwendung

Treten Sie unserem Bot mit dem Zugangscode bei

In diesem Projekt verwenden wir die Whatsapp-Sandbox-Nummer von Twilio für unseren WhatsApp-Bot. Für jede Person wird diese Nummer unterschiedlich sein. So finden Sie Ihre Nummer:

  • Melden Sie sich bei Ihrem Twilio-Konto an
  • Gehen Sie zur Twilio-Konsole -> WhatsApp-Bereich -> Sandbox
  • Sie sehen Ihre Twilio Sandbox-Nummer mit folgendem Text:

Laden Sie Ihre Freunde in Ihre Sandbox ein. Bitten Sie sie, eine WhatsApp-Nachricht zu senden an:

Aufgrund einer Sicherheitsrichtlinie von Whatsapp muss sich jeder, der über Whatsapp mit einem automatisierten Bot sprechen möchte, explizit mit einem Code anmelden. Sie können Ihren Code herausfinden, indem Sie im gleichen Abschnitt wie Ihre Twilio-Sandbox-Nummer mit dem Text nachsehen:

Nachdem Sie Ihre Twilio Sandbox WhatsApp-Nummer und den Opt-In-Code erworben haben, gehen Sie zu Ihrem Mobiltelefon und gehen Sie wie folgt vor, um den Bot zu verwenden:

  1. Speichern Sie die "Twilio Sandbox Whatsapp Number" mit einem Namen Ihrer Wahl (z. B. CovBot) in Ihrem Kontakt
  2. Öffnen Sie WhatsApp und senden Sie die folgende Nachricht an diesen Kontakt:

beitreten

Sie sollten eine Nachricht wie diese sehen:

Twilio Sandbox: Du bist bereit ….

Das bedeutet, dass Sie sich mit Ihrem Bot verbunden haben und bereit sind, ihn zu fragen qs

Testen Sie unsere Anwendung:

Um die verschiedenen Funktionen Ihres Bots zu testen, nachdem Sie eine Verbindung hergestellt haben, senden Sie die folgende Nachricht an den Bot:

Hi

Sie sollten den folgenden Text sehen:

Willkommen bei CoVbot!

Ein einfacher Chatbot, der auf einfache, schnelle und einfache Weise die neuesten Updates zu COVID-19 bereitstellen kann. Da wir alle unter Quarantäne stehen, kann der Bot verwendet werden, um einige lustige Aktivitäten vorzuschlagen, um unsere Zeit zu Hause optimal zu nutzen, während wir uns bemühen, uns selbst, Freunde und Familie zu schützen. Wir hoffen, Sie genießen es und finden es nützlich! Senden Sie 4, um loszulegen!

Jetzt können Sie der Option folgen, die verschiedenen Funktionen des Bots auszuprobieren.

DAS IST ES! Ihr WhatsApp Chatbot ist fertig !!!! Herzliche Glückwünsche

Schritt 6: Wie funktioniert es und zukünftige Verbesserung:

Wie funktioniert es und zukünftige Verbesserungen
Wie funktioniert es und zukünftige Verbesserungen
Wie funktioniert es und zukünftige Verbesserungen
Wie funktioniert es und zukünftige Verbesserungen
Wie funktioniert es und zukünftige Verbesserungen
Wie funktioniert es und zukünftige Verbesserungen
Wie funktioniert es und zukünftige Verbesserungen
Wie funktioniert es und zukünftige Verbesserungen

Dieser Abschnitt ist für Leute gedacht, die Erfahrung in der Python-Programmierung haben. Wenn nicht, können Sie diesen Abschnitt überspringen

Code-Erklärung

Hauptschleife:

Wenn eine WhatsApp-Nachricht an die Nummer Ihres Twilio gesendet wird, stellt die Twilio-API eine POST-Anfrage an Ihren von Ihnen angegebenen Server. Der Server wird mit dem Flask-Framework implementiert, sodass wir das Flask-Request-Objekt verwenden können, um die während der POST-Anfrage empfangenen Daten abzurufen. Anhand der Daten (in diesem Fall Zahlen) entscheiden wir, welche Option der Benutzer gewählt hat und geben die entsprechenden Informationen an

COVID-Daten und Filme und Fernsehsendungen:

Die Daten zu COVID 19, Filmen und Fernsehsendungen werden von einer API abgerufen. Ich verwende die Request-Python-Bibliothek, um die Daten abzurufen und sie dann in ein JSON-Format zu konvertieren. Dann analysiere ich einfach die relevanten Informationen. Für die Filme und Fernsehsendungen habe ich auch die zufällige Python-Bibliothek verwendet, um eine zufällige Fernsehsendung und einen zufälligen Film auszuwählen

Buchdetails

Der im Projekt verwendete Buchvorschlagsalgorithmus ist nur ein Web-Scraper. Ich konnte keine API finden, die Ihnen ein zufälliges Buch mit Details liefert, also kratze ich einfach eine Website mit BeautifulSoup4 und extrahiere mit dem lxml-Parser die relevanten Informationen des Buches

Details des Untermenüs:

Die Implementierung der Untermenüs war etwas kniffliger als der Rest, da WhatsApp-Nachrichten wie SMS sind, ein zustandsloses Protokoll. Um dies zu lösen, habe ich zwei Techniken verwendet:

  1. Verwenden von globalen Variablen, um sich den Status der Nachricht zu merken - Dies ist nur für die COVID-19-Unteroption implementiert. Wenn ein Benutzer die Option "Status von COVID 19 in meinem Land" auswählt, wird dabei eine globale Variable namens "unvollständig_nachricht" auf "True" gesetzt, um anzuzeigen, dass noch eine weitere Nachricht basierend auf der vorherigen Option benötigt wird. Dann gibt es zu Beginn eine Prüfung, die prüft, ob eine Nachricht als unvollständig markiert ist, wenn ja, dass die Nachricht der Ländername für die COVID-Daten ist und die Informationen an die richtige Funktion weitergibt und die globale Variable unvollständige Nachricht auf False setzt
  2. Verwendung von Twilio-Cookies und Flask-Sitzungen - Cookies und Flask-Sitzungen werden im Untermenü "Quarantäneaktivität vorschlagen" verwendet, um Zustandszugehörigkeit zu implementieren, genau wie jede Webanwendung im Internet heutzutage verwendet wird, aber anstatt sich Dinge wie Ihren Benutzernamen zu merken oder Konto es sich an die Umrechnung zwischen zwei Zahlen erinnern. Wenn Sie weitere Informationen zu diesem Teil wünschen, empfehle ich Ihnen, diesen großartigen Leitfaden zu Twilio Cookies zu lesen, der vom Twilio-Team verfasst wurde

Zukünftige Verbesserungen:

  1. Nutzen Sie die Objektorientierung von Python und Design Patterns, um die Codearchitektur und DRYness zu verbessern
  2. Globale Variablen entfernen
  3. Fehlerbehandlung kann verbessert werden
  4. Aktualisieren Sie die ngrok-Adresse automatisch mit Mais und Twilio CLI
  5. Code-Dokumentation

Schritt 7: Abschließende Hinweise

Ich hoffe, Sie alle mögen dieses Projekt. Dies ist mein erstes anweisbares, also wenn etwas nicht klar ist oder weitere Erklärungen benötigt, lassen Sie es mich im Kommentarbereich wissen, und ich kann Ihnen helfen. Auch wenn Sie dieses Projekt mit einer anderen Technik oder Feature-Liste erstellt haben, teilen Sie es alle

Empfohlen: