CovBot - en WhatsApp -baserad chatbot för COVID 19 -information och mer: 7 steg
CovBot - en WhatsApp -baserad chatbot för COVID 19 -information och mer: 7 steg
Anonim
Image
Image
Skapa ett Twilio -konto
Skapa ett Twilio -konto

CoVbot är en enkel och intuitiv Whatsapp -baserad chatbot. Botens huvuddrag är:

Det kan ge dig den senaste statusen för COVID-19 i det valda landet på ett enkelt och intuitivt sätt.

Dessutom kan boten föreslå roliga aktiviteter att göra hemma som:

  1. Föreslå en film - En film att titta på från listan över de 10 bästa filmerna, med en kort översikt över handlingen och varaktigheten. Eftersom listan inte är hårdkodad i programvara ger den dig alltid de senaste uppdateringarna baserat på aktuella trender.
  2. Föreslå ett tv -program - Ett tv -program att titta på från de mest populära tv -programmen, med en kort översikt av handlingen och betyg. Eftersom listan inte är hårdkodad i programvara ger den dig alltid de senaste uppdateringarna baserat på aktuella trender.
  3. Föreslå en bok - En bok att läsa från topp 10 -boklistan, med text och omslagsbild av boken.
  4. Dagliga träningspass-Detta är en videobaserad på ett 7-dagars träningsschema som tillhandahålls av CRANK gym på deras Instagram-konto.

Om du gillar den här instruktionsboken kan du överväga att rösta på den i författartävlingen för första objekt. (och ja det här är min första instruerbara så om något inte är klart eller behöver mer förklaring, meddela mig i kommentarsfältet så kan jag hjälpa dig:)

Tillbehör

Detta projekt är enbart mjukvarubaserat projekt, så alla som följer detta instruerbara med en bärbar dator/stationär PC/macOS/Linux och internet kan slutföra detta projekt. Jag kommer också att inkludera ett detaljerat avsnitt som i slutet för att förklara koden/processen mer detaljerat för personer med viss programmeringserfarenhet. Observera att detta inte behövs för att slutföra projektet

Projektets svårighetsgrad:

Inte särskilt lätt, men inte särskilt svårt

Hårdvaran vi kommer att använda:

  • En bärbar dator/stationär dator med Windows/macOS/Linux.
  • En mobiltelefon med WhatsApp Messenger installerad

Programvaran vi kommer att använda:

  1. Python programmeringsspråk
  2. ngrok - är ett verktyg som används för att ge oss åtkomst till vår server utanför vårt nätverk
  3. Redaktör du väljer: (t.ex. anteckningsblock ++, sublim text, Vim etc)

Steg 1: Installera erforderlig programvara

Image
Image

I det här steget kommer vi att göra följande:

  1. Installera Python> 3.6 och testa det
  2. Installera nödvändiga pythonbibliotek
  3. Installera ngrok

Om du har båda programmet installerat kan du hoppa över det här steget

Installera Python:

Hela backend/server -kodbasen för detta projekt är skriven i Python 3.6. Därför måste vi ha Python> 3.6 installerat på vår dator för att köra våra applikationer. Följ guiden från CoreySchafer om hur du installerar python för Windows och macOS

Du kan testa att allt är korrekt installerat genom att skriva följande i cmd/Terminal:

python -c 'print (f "Hello World")'

Om allt har installerats korrekt ska Hello World skrivas ut på skärmen. Om du får ett ogiltigt syntaxfel har du installerat fel version av python. Installera en version av python> = 3.6

Installera nödvändiga pythonbibliotek med pip:

Vi kommer att använda följande pythonbibliotek för att få vår programvara att fungera:

  1. Kolv - Detta är ramverket för vår server
  2. Twilio - Detta bibliotek ger ett sätt för python att kommunicera med WhatsApp
  3. Begäran - Detta bibliotek används för att begära data från API: er
  4. BeautifulSoup4 - Detta bibliotek används för att skrapa information från webbplatser
  5. lxml - Detta bibliotek används i kombination med BeautifulSoup för att extrahera relevant information från en webbplats

För att installera dessa bibliotek kan du göra följande:

Öppna CMD/Terminal och skriv följande kommando:

pip installera kolv, twilio, förfrågan, beautifulsoup4, lxml

ELLER

Ladda ner filen requirements.txt och öppna en terminal i katalogen där filen finns och skriv:

pip install -r krav.txt

Installera ngrok

ngrok låter dig exponera en server som körs på din lokala dator för internet. Berätta bara för ngrok vilken port din server lyssnar på.

Följ guiden på ngroks webbplats för att installera ngrok för det operativsystem du använder.

Tips: Steg 3 i guiden är inte relevant för detta projekt så kan hoppas över

Steg 2: Skapa ett Twilio -konto

I det här steget kommer vi att göra följande:

  1. Registrera dig för ett Twilio -konto
  2. Snabb introduktion till användbara avsnitt på Twilios konsol

Bli Medlem:

I detta projekt kommer vi att använda Twilio Whatsapp API för att ansluta vårt pythonprogram till Whatsapp. För att kunna använda Twilio API måste vi först skapa ett konto på Twilios officiella webbplats. För ett provkonto erbjuder Twilio en $ 15 gratis kredit till oss att använda.

Snabb introduktion:

När du har skapat ett konto är de mest intressanta delarna av Twilio -konsolen för detta projekt:

Instrumentpanel - Från instrumentpanelen kan du se hur mycket kredit du fortfarande har kvar, du kan redigera ditt projektnamn och ändra programmeringsspråket

Whatsapp -underavsnitt i programmerbart SMS -avsnitt - Från Whatsapp -sektionen på konsolen kan du få tillgång till kopplingskoden för boten, antalet Whatsapp som vi kommer att använda i projektet för att prata med vår bot och även konfigurationen av webhooken. Mer information om alla dessa kommer att beskrivas i nästa steg

Steg 3: Skaffa API -nyckel för COVID 19 -data, filmer och tv -program

Skaffa API -nyckel för COVID 19 -data, filmer och tv -program
Skaffa API -nyckel för COVID 19 -data, filmer och tv -program
Skaffa API -nyckel för COVID 19 -data, filmer och tv -program
Skaffa API -nyckel för COVID 19 -data, filmer och tv -program

En API -nyckel eller applikationsprogrammeringsgränssnittsnyckel är en kod som skickas in av datorprogram. Programmet eller applikationen anropar sedan API- eller applikationsprogrammeringsgränssnittet för att identifiera dess användare, utvecklare eller anropsprogram till en webbplats.

Vi använder ett API för att få information om den senaste COVID -19 -statusen, filmer och tv -program. För att komma åt API: et behöver du en nyckel som är personlig för varje användare. I det här steget får vi dessa nycklar

Skaffa API -nyckel för COVID 19 -data:

  • Logga in eller registrera dig för ditt RapidAPI -konto.
  • Gå sedan till COVID-19 API av Gramzivi
  • Rulla ner till avsnittet "Rubrikparametrar" i API -konsolen.
  • Din API-nyckel ska vara synlig i fältet "X-RapidAPI-Key".

Skaffa API -nyckel för filmer och tv -programdata:

  • Logga in eller registrera dig för ditt TMDB -konto
  • Gå sedan till din inställning - API
  • Rulla ner till avsnittet "API -nyckel (v3 -autentisering)"
  • Din API -nyckel ska vara synlig under den

Skapa "config.py" -fil

Vi kommer nu att skapa en config.py -fil för att lagra våra API -nycklar. Vi skapar en separat fil för dessa, eftersom API -nycklar är konfidentiell information och om du delar ditt projekt ska du inte dela din API -nyckel.

  • Skapa en ny projektkatalog
  • Skapa en ny fil som heter "config.py" i den nyskapade katalogen
  • Redigera den här filen med en valfri redigerare (Sublime, Notepad ++) och kopiera och ersätt följande text med relevant information från föregående steg:

session_key = "secret" #Detta är inte säkert.. men bara för test är det ok

rapid_api_key = "" api_key = ""

Spara filen

Steg 4: Anslut Python och Twilio Via Ngrok

I det här steget kommer vi att göra följande:

  1. Ladda ner källkoden
  2. Kör programmet och vidarebefordra lokal IP till en offentlig adress via ngrok så att vi kan göra en förfrågan till det
  3. Konfigurera vårt Twilio -konto för att vidarebefordra begäran till vår server

Ladda ner källkoden för boten:

Ladda ner all bifogad fil i den här installationen till projektkatalogen som skapades i det sista steget.

Kör programmet:

Gå till katalogen för källkoden i CMD/terminalen och kör följande kommando:

python server_main.py

Se till att ha "config.py" som vi skapade i det sista steget, annars får du ett fel

Utdata ska vara ungefär så här:

* Visar kolv -appen "server_main" (lat laddning)

* Miljö: produktion VARNING: Detta är en utvecklingsserver. Använd den inte i en produktionsdistribution. Använd en produktions -WSGI -server istället. * Felsökningsläge: på * Körs på https://127.0.0.1:5000/ (Tryck på CTRL+C för att avsluta) * Starta om med stat * Debugger är aktivt! * Felsöknings-PIN: 740-257-236

Det betyder att din server fungerar korrekt i ditt lokala nätverk på port 5000. För att göra denna server tillgänglig från ditt lokala nätverk använder vi ngrok

Vidarebefordra lokal IP till en offentlig adress via ngrok

Gå till katalogen där du laddade ner ngrok via CMD/terminal och kör följande kommando:

ngrok http 5000

Utdata ska vara ungefär så här:

ngrok av @inconshreveable (Ctrl+C för att sluta)

Sessionstatus online Sessionen löper ut 7 timmar, 59 minuter Version 2.3.35 Region USA (oss) webbgränssnitt https://127.0.0.1:4040 Vidarebefordran _https://d44c955749bf.ngrok.io_ -> _https:// localhost: 5000_ Vidarebefordran _https://d44c955749bf.ngrok.io_ -> _https:// localhost: 5000_ Anslutningar ttl opn rt1 rt5 p50 p90 0 0 0.00 0.00 0.00 0.00 0.00

Kopiera HTTP -länken från "Forwading" -delen (bara till ngrok.io). (Jag har lagt till _ i detta exempel för att undvika att instruera att fånga upp det som en länk)

Konfigurera Twilio för att använda den nya adressen för att vidarebefordra serverförfrågan till:

Nu när vi framgångsrikt har vidarebefordrat vår server för att nås offentligt måste vi konfigurera Twilio så att när en begäran görs med Twilio Whatsapp API vidarebefordrar vi begäran till vår server. För att göra detta måste vi göra följande:

  1. Gå till Whatsapp -sektionen på Twilios konsol
  2. Navigera till avsnittet "Sanbox"
  3. I textrutan "NÄR ETT MEDDELANDE KOMMER" klistra in HTTP -länken från ngrok kopierad med tillägget /sms (KOPIERA INTE _ i början och slutet):

_https://d44c955749bf.ngrok.io/sms_

Nu är allt för chatbot konfigurerat. I nästa steg kan vi testa om allt fungerar korrekt

Steg 5: Testa vår applikation

Testa vår applikation
Testa vår applikation
Testa vår applikation
Testa vår applikation
Testa vår applikation
Testa vår applikation

I det här steget kommer vi att göra följande:

  1. Gå med i vår bot med åtkomstkoden
  2. Prova vår ansökan

Gå med i vår bot med åtkomstkoden

I det här projektet kommer vi att använda Twilios Whatsapp Sandbox -nummer för vår Whatsapp -bot. För varje person kommer detta nummer att vara annorlunda. Du kan hitta ditt nummer så här:

  • Logga in på ditt Twilio -konto
  • Gå till Twilio Console -> Whatsapp -sektionen -> Sandlåda
  • Du kommer att se ditt Twilio Sandbox -nummer med följande text:

Bjud in dina vänner till din sandlåda. Be dem skicka ett WhatsApp -meddelande till:

På grund av Whatsapps säkerhetspolicy måste alla som vill prata med en automatiserad bot via Whatsapp uttryckligen välja att använda en kod. Du kan ta reda på din kod genom att titta i samma avsnitt som ditt Twilio -sandlådanummer med texten:

När du har skaffat ditt Twilio Sandbox Whatsapp-nummer och din kod för att börja använda botten, gå till din mobiltelefon och gör följande:

  1. Spara "Twilio Sandbox Whatsapp Number" till din kontakt med ditt namnval (t.ex. CovBot)
  2. Öppna Whatsapp och skicka följande meddelande till den kontakten:

Ansluta sig

Du bör se ett meddelande så här:

Twilio Sandbox: Du är klar …

Det betyder att du har anslutit till din bot och är redo att fråga den qs

Prova vår ansökan:

För att testa de olika funktionerna i din bot efter att du har anslutit, skicka följande meddelande till boten:

Hej

Du bör se följande text:

Välkommen till CoVbot!

En enkel chatbot som kan ge de senaste uppdateringarna av COVID-19 på ett enkelt, snabbt och enkelt sätt. Eftersom vi alla är i karantän kan boten användas för att föreslå några roliga aktiviteter för att få ut det mesta av vår tid hemma när vi strävar efter att skydda oss själva, vänner och familj. Vi hoppas att du gillar det och tycker att det är användbart! Skicka 4 för att komma igång!

Nu kan du följa alternativet för att testa botens olika funktioner.

DET ÄR ALLT! Din Whatsapp Chatbot är klar !!!! Grattis

Steg 6: Hur fungerar det och framtida förbättringar:

Hur fungerar det och framtida förbättringar
Hur fungerar det och framtida förbättringar
Hur fungerar det och framtida förbättringar
Hur fungerar det och framtida förbättringar
Hur fungerar det och framtida förbättringar
Hur fungerar det och framtida förbättringar
Hur fungerar det och framtida förbättringar
Hur fungerar det och framtida förbättringar

Det här avsnittet är för personer som har erfarenhet av pythonprogrammering. Om du inte gör det kan du hoppa över det här avsnittet

Kod Förklaring

Huvudsak:

När ett Whatsapp -meddelande skickas till ditt Twilios nummer skickar Twilio API en POST -begäran till din server som du angav. Servern implementeras med hjälp av Flask -ramverket och så kan vi använda objektet Flask Request för att hämta data som tas emot under POST -begäran. Baserat på data (siffror i det här fallet) bestämmer vi vilket alternativ användaren har valt och ger lämplig information

COVID -data och filmer och tv -program:

Informationen om COVID 19, filmer och TV -program hämtas från ett API. Jag använder python -biblioteket för begäran för att hämta data och sedan konvertera dem till ett JSON -format. Sedan analyserar jag bara relevant information. För filmer och tv -program använde jag också slumpmässigt pythonbibliotek för att välja ett slumpmässigt tv -program och film

Bokinformation

Bokförslagalgoritmen som används i projektet är bara en webbskrapa. Jag kunde inte hitta något API som ger dig en slumpmässig bok med detaljer, så jag skrapar bara en webbplats med BeautifulSoup4 och med hjälp av lxml -parsern extraherar jag relevant information om boken

Undermenyinformation:

Att implementera undermenyerna var lite mer knepigt än resten eftersom Whatsapp-meddelanden är som SMS, vilket är ett statslöst protokoll. För att lösa detta har jag använt två tekniker:

  1. Använda globala variabler för att komma ihåg meddelandets tillstånd - Detta implementeras endast för alternativet COVID 19. I detta när en användare väljer "Status för COVID 19 i mitt land" är en global variabel som heter incomplete_message inställd på True för att indikera att ytterligare ett meddelande baserat på föregående alternativ fortfarande behövs. Sedan finns det en kontroll i början som kontrollerar om ett meddelande är markerat som ofullständigt om det antar att meddelandet är landets namn för COVID -data och skickar informationen till rätt funktion och ställer in den globala variabeln ofullständigt meddelande till False
  2. Använda Twilio -kakor och kolvsessioner - Kakor och kolvsessioner används i undermenyn "Föreslå en karantänaktivitet" för att implementera statethet, precis som alla webbapplikationer på internet använder det nu för tiden, men istället för att komma ihåg saker som ditt användarnamn eller konto det kom ihåg konverteringen mellan två nummer. Om du gillar mer information om denna del rekommenderade jag att läsa den här fantastiska guiden om Twilio Cookies skriven av Twilio Team

Framtida förbättringar:

  1. Använd objektorientering av Python och designmönster för att förbättra kodarkitekturen och DRYness
  2. Ta bort globala variabler
  3. Felhantering kan förbättras
  4. Uppdatera ngrok -adressen automatiskt med majs och Twilio CLI
  5. Koddokumentation

Steg 7: Slutanteckningar

Jag hoppas att ni alla gillar det här projektet. Detta är min första instruerbara, så om något inte är klart eller behöver mer förklaring, meddela mig i kommentarsfältet, så kan jag hjälpa dig. Även om du gjorde det här projektet med en annan teknik eller funktionslista, dela alla det

Rekommenderad: