CovBot - en WhatsApp -basert chatbot for COVID 19 -informasjon og mer: 7 trinn
CovBot - en WhatsApp -basert chatbot for COVID 19 -informasjon og mer: 7 trinn
Anonim
Image
Image
Opprett en Twilio -konto
Opprett en Twilio -konto

CoVbot er en enkel og intuitiv Whatsapp -basert chatbot. Hovedtrekk ved boten er:

Det kan gi deg den siste statusen for COVID-19 i det valgte landet på en enkel og intuitiv måte.

I tillegg kan boten foreslå morsomme aktiviteter å gjøre hjemme, for eksempel:

  1. Foreslå en film - En film å se fra Topp 10 -filmlisten, med en kort oversikt over handlingen og varigheten. Siden denne listen ikke er hardkodet i programvare, vil denne alltid gi deg de siste oppdateringene basert på nåværende trender.
  2. Foreslå et TV -program - Et tv -program å se fra de mest populære TV -programmene, med en kort oversikt over handlingen og karakterer. Siden denne listen ikke er hardkodet i programvare, vil denne alltid gi deg de siste oppdateringene basert på nåværende trender.
  3. Foreslå en bok - En bok å lese fra topp 10 -boklisten, med tekst og omslagsbilde av boken.
  4. Daglige treningsøkter-Dette er en video-basert på en 7-dagers treningsplan levert av CRANK gym på sin Instagram-konto.

Hvis du liker denne instruksjonsboken, kan du vurdere å stemme på den i den første artikkekonkurransen. (og ja dette er min første instruks, så hvis noe ikke er klart eller trenger mer forklaring, vennligst gi meg beskjed i kommentarfeltet, så kan jeg hjelpe deg:)

Rekvisita

Dette prosjektet er utelukkende programvarebasert prosjekt, så alle som følger dette kan instrueres med en bærbar/stasjonær PC/macOS/Linux og internett kan fullføre dette prosjektet. Jeg vil også inkludere en detaljert del på slutten for å forklare koden/prosessen mer detaljert for personer med litt programmeringserfaring. Vær oppmerksom på at dette ikke er nødvendig for å fullføre prosjektet

Prosjektets vanskelighetsgrad:

Ikke veldig lett, men ikke veldig vanskelig

Maskinvaren vi skal bruke:

  • En bærbar PC/stasjonær datamaskin som kjører Windows/macOS/Linux.
  • En mobiltelefon med WhatsApp Messenger installert

Programvaren vi skal bruke:

  1. Python programmeringsspråk
  2. ngrok - er et verktøy som brukes for å gi oss tilgang til serveren vår utenfor vårt nettverk
  3. Redaktør du ønsker: (f.eks. Notepad ++, Sublime Text, Vim etc)

Trinn 1: Installer nødvendig programvare

Image
Image

I dette trinnet skal vi gjøre følgende:

  1. Installer Python> 3.6 og test den
  2. Installer nødvendige python -biblioteker
  3. Installer ngrok

Hvis du har begge applikasjonen installert, kan du hoppe over dette trinnet

Installer Python:

Hele backend/server -kodebasen for dette prosjektet er skrevet i Python 3.6. Derfor må vi ha Python> 3.6 installert på datamaskinen vår for å kjøre applikasjonene våre. Følg opplæringen av CoreySchafer om hvordan du installerer python for Windows og macOS

Du kan teste alt er riktig installert ved å skrive følgende i cmd/Terminal:

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

Hvis alt ble installert riktig, bør Hello World skrives ut på skjermen. Hvis du får en ugyldig syntaksfeil, har du installert feil versjon av python. Installer en versjon av python> = 3.6

Installer nødvendige python -biblioteker ved hjelp av pip:

Vi bruker følgende python -biblioteker for å få programvaren til å fungere:

  1. Kolbe - Dette er rammen for serveren vår
  2. Twilio - Dette biblioteket gir en måte for python å kommunisere med WhatsApp
  3. Forespørsel - Dette biblioteket brukes til å be om data fra API -er
  4. BeautifulSoup4 - Dette biblioteket brukes til å skrape informasjon fra nettsteder
  5. lxml - Dette biblioteket brukes i kombinasjon med BeautifulSoup for å trekke ut relevant informasjon fra et nettsted

For å installere disse bibliotekene kan du gjøre følgende:

Åpne CMD/Terminal og skriv inn følgende kommando:

pip installere kolbe, twilio, forespørsel, beautifulsoup4, lxml

ELLER

Last ned filen requirements.txt og åpne en terminal i katalogen der filen er, og skriv inn:

pip install -r krav.txt

Installer ngrok

ngrok lar deg eksponere en server som kjører på din lokale maskin for internett. Bare fortell ngrok hvilken port serveren din lytter til.

Følger veiledningen på ngroks nettsted for å installere ngrok for operativsystemet du bruker.

Tips: Trinn 3 i guiden er ikke relevant for dette prosjektet, så det kan hoppes over

Trinn 2: Opprett en Twilio -konto

I dette trinnet skal vi gjøre følgende:

  1. Registrer deg for en Twilio -konto
  2. Rask introduksjon til nyttige seksjoner på Twilios konsoll

Melde deg på:

I dette prosjektet bruker vi Twilio Whatsapp API for å koble vårt pythonprogram til Whatsapp. For å kunne bruke Twilio API må vi først opprette en konto på Twilios offisielle nettsted. For en prøvekonto tilbyr Twilio en $ 15 gratis kreditt som vi kan bruke.

Rask introduksjon:

Når du har opprettet en konto, er de mest interessante delene av Twilio -konsollen for dette prosjektet:

Dashboard - Fra dashbordet kan du se hvor mye kreditt du fortsatt har igjen, du kan redigere prosjektnavnet og endre programmeringsspråket

Whatsapp -underseksjon i Programmerbar SMS -seksjon - Fra Whatsapp -delen av konsollen kan du få tilgang til join in -koden for boten, antall Whatsapp vi skal bruke i prosjektet for å snakke med boten vår og også konfigurasjonen av webhook. Flere detaljer om alle disse vil bli beskrevet i de neste trinnene

Trinn 3: Få API -nøkkel for COVID 19 -data, filmer og TV -programmer

Få API -nøkkel for COVID 19 -data, filmer og TV -programmer
Få API -nøkkel for COVID 19 -data, filmer og TV -programmer
Få API -nøkkel for COVID 19 -data, filmer og TV -programmer
Få API -nøkkel for COVID 19 -data, filmer og TV -programmer

En API -nøkkel eller applikasjonsprogrammeringsgrensesnittnøkkel er en kode som blir sendt inn av dataprogrammer. Programmet eller applikasjonen kaller deretter API- eller applikasjonsprogrammeringsgrensesnittet for å identifisere brukeren, utvikleren eller ringeprogrammet til et nettsted.

Vi bruker et API for å få informasjon om den siste COVID 19 -statusen, filmer og TV -programmer. For å få tilgang til API -en trenger du en nøkkel som er personlig for hver bruker. I dette trinnet får vi disse nøklene

Få API -nøkkel for COVID 19 -data:

  • Logg deg på eller registrer deg for RapidAPI -kontoen din.
  • Deretter går du til COVID-19 API av Gramzivi
  • Rull ned til delen "Toppparametere" i API -konsollen.
  • API-nøkkelen din skal være synlig i feltet "X-RapidAPI-nøkkel".

Få API -nøkkel for data om filmer og tv -programmer:

  • Logg deg på eller registrer deg for din TMDB -konto
  • Gå deretter til innstillingen din - API
  • Rull ned til delen "API -nøkkel (v3 -autentisering)"
  • API -nøkkelen din skal være synlig under den

Lag "config.py" -fil

Vi vil nå opprette en config.py -fil for å lagre API -nøklene våre. Vi lager en egen fil for disse, fordi API -nøkler er konfidensiell informasjon, og hvis du deler prosjektet ditt, bør du ikke dele API -nøkkelen din.

  • Lag en ny prosjektkatalog
  • Opprett en ny fil kalt "config.py" i den nyopprettede katalogen
  • Rediger denne filen med en valgfri redaktør (Sublime, Notepad ++), og kopier og erstatt følgende tekst med relevant informasjon innhentet i forrige trinn:

session_key = "secret" #Dette er ikke trygt.. men bare for test er det ok

rapid_api_key = "" api_key = ""

Lagre filen

Trinn 4: Koble Python og Twilio Via Ngrok

I dette trinnet vil vi gjøre følgende:

  1. Last ned kildekoden
  2. Utfør programmet og videresend lokal IP til en offentlig adresse via ngrok, slik at vi kan be om det
  3. Konfigurer vår Twilio -konto for å videresende forespørselen til serveren vår

Last ned kildekoden for boten:

Last ned hele den vedlagte filen i dette oppsettet til prosjektkatalogen som ble opprettet i det siste trinnet.

Utfør programmet:

Gå til katalogen for kildekoden i CMD/terminalen og utfør følgende kommando:

python server_main.py

Sørg for å ha "config.py" som vi opprettet i det siste trinnet, ellers får du en feilmelding

Utgangen skal være omtrent slik:

* Serverer kolbe -appen "server_main" (lat laster)

* Miljø: produksjon ADVARSEL: Dette er en utviklingsserver. Ikke bruk den i en produksjonsdistribusjon. Bruk en produksjons -WSGI -server i stedet. * Debug -modus: på * Kjører på https://127.0.0.1:5000/ (Trykk CTRL+C for å avslutte) * Start på nytt med stat * Debugger er aktiv! * Feilsøkings-PIN: 740-257-236

Dette betyr at serveren din kjører riktig på ditt lokale nettverk på port 5000. For å gjøre denne serveren tilgjengelig fra ditt lokale nettverk bruker vi ngrok

Videresend lokal IP til en offentlig adresse via ngrok

Gå til katalogen der du lastet ned ngrok via CMD/terminal og utfør følgende kommando:

ngrok http 5000

Utgangen skal være omtrent slik:

ngrok av @inconshreveable (Ctrl+C for å avslutte)

Øktstatus online Økten utløper 7 timer, 59 minutter Versjon 2.3.35 Region USA (oss) Webgrensesnitt https://127.0.0.1:4040 Videresending _https://d44c955749bf.ngrok.io_ -> _https:// localhost: 5000_ Videresending _https://d44c955749bf.ngrok.io_ -> _https:// localhost: 5000_ Tilkoblinger ttl opn rt1 rt5 p50 p90 0 0 0.00 0.00 0.00 0.00 0.00

Kopier HTTP -lenken fra "Forwading" -delen (bare til ngrok.io). (Jeg har lagt til _ i dette eksemplet for å unngå å instruere å fange det opp som en lenke)

Konfigurer Twilio til å bruke den nye adressen til å videresende serverforespørsel til:

Nå som vi har videresendt serveren vår for å få offentlig tilgang, må vi konfigurere Twilio slik at når vi sender en forespørsel ved hjelp av Twilio Whatsapp API, sender vi forespørselen til serveren vår. For å gjøre dette må vi gjøre følgende:

  1. Gå til Whatsapp -delen på Twilios konsoll
  2. Naviger til underdelen "Sanbox"
  3. I tekstboksen "NÅR EN MELDING KOMMER" limer du inn HTTP -lenken fra ngrok kopiert med /sms -utvidelsen (IKKE KOPIER _ i begynnelsen og slutten):

_https://d44c955749bf.ngrok.io/sms_

Nå er alt for chatboten satt opp. I neste trinn kan vi teste om alt fungerer som det skal

Trinn 5: Test applikasjonen vår

Test søknaden vår
Test søknaden vår
Test søknaden vår
Test søknaden vår
Test søknaden vår
Test søknaden vår

I dette trinnet vil vi gjøre følgende:

  1. Bli med i vår bot ved hjelp av tilgangskoden
  2. Prøv søknaden vår

Bli med i vår bot ved hjelp av tilgangskoden

I dette prosjektet vil vi bruke Twilios Whatsapp Sandbox -nummer for vår Whatsapp -bot. For hver person vil dette tallet være annerledes. Du kan finne nummeret ditt slik:

  • Logg deg på Twilio -kontoen din
  • Gå til Twilio Console -> Whatsapp -seksjon -> Sandkasse
  • Du vil se Twilio Sandbox -nummeret ditt med følgende tekst:

Inviter vennene dine til sandkassen din. Be dem om å sende en WhatsApp -melding til:

På grunn av en sikkerhetspolicy for Whatsapp, må alle som ønsker å snakke med en automatisert bot via Whatsapp, eksplisitt melde seg på med en kode. Du kan finne ut koden din ved å se i samme seksjon som Twilio -sandkassenummeret ditt med teksten:

Etter at du har fått ditt Twilio Sandbox Whatsapp-nummer og opt-in-kode, kan du begynne å bruke boten ved å gå til mobiltelefonen og gjøre følgende:

  1. Lagre "Twilio Sandbox Whatsapp Number" til kontakten din med ditt navn (f.eks. CovBot)
  2. Åpne Whatsapp og send følgende melding til den kontakten:

bli med

Du bør se en melding som denne:

Twilio Sandbox: Du er klar …

Dette betyr at du har koblet deg til boten din og er klar til å spørre den

Prøv søknaden vår:

For å teste de forskjellige funksjonene i boten din etter at du har koblet til, send følgende melding til boten:

Hei

Du bør se følgende tekst:

Velkommen til CoVbot!

En enkel chatbot som kan gi de siste oppdateringene av COVID-19 på en enkel, rask og enkel måte. Siden vi alle er i karantene, kan boten brukes til å foreslå noen morsomme aktiviteter for å få mest mulig ut av vår tid hjemme mens vi prøver å holde oss selv, venner og familie trygge. Vi håper du liker det og synes det er nyttig! Send 4 for å komme i gang!

Nå kan du følge alternativet for å prøve ut de forskjellige funksjonene i boten.

DET ER DET! Din Whatsapp Chatbot er klar !!!! Gratulerer

Trinn 6: Hvordan fungerer det og fremtidig forbedring:

Hvordan fungerer det og fremtidig forbedring
Hvordan fungerer det og fremtidig forbedring
Hvordan fungerer det og fremtidig forbedring
Hvordan fungerer det og fremtidig forbedring
Hvordan fungerer det og fremtidig forbedring
Hvordan fungerer det og fremtidig forbedring
Hvordan fungerer det og fremtidig forbedring
Hvordan fungerer det og fremtidig forbedring

Denne delen er for folk som har erfaring med python -programmering. Hvis du ikke gjør det, kan du hoppe over denne delen

Kode Forklaring

Hovedløyfe:

Når en Whatsapp -melding blir sendt til Twilios nummer, sender Twilio API en POST -forespørsel til serveren din som du angav. Serveren implementeres ved hjelp av Flask -rammeverket, og så kan vi bruke Flask Request -objektet til å hente dataene som ble mottatt under POST -forespørselen. Basert på dataene (tall i dette tilfellet) bestemmer vi hvilket alternativ brukeren har valgt og gir riktig informasjon

COVID -data og filmer og TV -programmer:

COVID 19, filmer og TV -programmer blir hentet fra et API. Jeg bruker forespørsels -python -biblioteket for å hente dataene og deretter konvertere dem til et JSON -format. Da analyserer jeg bare den relevante informasjonen. For filmer og TV -programmer brukte jeg også det tilfeldige python -biblioteket til å velge et tilfeldig TV -program og film

Bokdetaljer

Bokforslagalgoritmen som ble brukt i prosjektet er bare en nettskraper. Jeg kunne ikke finne noen API som gir deg en tilfeldig bok med detaljer, så jeg skraper bare et nettsted ved hjelp av BeautifulSoup4 og ved hjelp av lxml -parseren trekker jeg ut relevant informasjon om boken

Undermeny detaljer:

Implementering av undermenyene var litt mer vanskelig enn resten siden Whatsapp-meldinger er som SMSer, som er en stateless protokoll. For å løse dette har jeg brukt to teknikker:

  1. Bruke globale variabler til å huske statusen for meldingen - Dette er bare implementert for alternativet COVID 19. I dette når en bruker velger "Status for COVID 19 i alternativet mitt land", er en global variabel som heter incomplete_message satt til True for å indikere at det fortsatt er behov for en annen melding basert på det forrige alternativet. Deretter er det en sjekk i starten som sjekker om en melding er merket som ufullstendig hvis den antar at meldingen er landnavnet for COVID -dataene og sender informasjonen til riktig funksjon og setter den globale variabelen ufullstendig melding til False
  2. Bruke Twilio -informasjonskapsler og kolbeøkter - Informasjonskapsler og kolbeøkter brukes i undermenyen "Foreslå en karanteneaktivitet" for å implementere statethet, akkurat som alle webprogrammer på internett bruker det i disse dager, men i stedet for å huske ting som brukernavnet ditt eller konto det husker konverteringen mellom To tall. Hvis du liker mer informasjon om denne delen, anbefalte jeg å lese denne fantastiske guiden om Twilio Cookies skrevet av Twilio Team

Fremtidige forbedringer:

  1. Benytt deg av objektorientertitet til Python og designmønstre for å forbedre kodearkitektur og TØRRIGHET
  2. Fjern globale variabler
  3. Feilhåndtering kan forbedres
  4. Oppdater ngrok -adressen automatisk med mais og Twilio CLI
  5. Kodedokumentasjon

Trinn 7: Sluttnotater

Jeg håper dere alle liker dette prosjektet. Dette er min første instruks, så hvis noe ikke er klart eller trenger mer forklaring, gi meg beskjed i kommentarfeltet, så kan jeg hjelpe deg. Hvis du har laget dette prosjektet med en annen teknikk eller funksjonsliste, må du dele det

Anbefalt: