CovBot - 'n WhatsApp -gebaseerde chatbot vir COVID 19 -inligting en meer: 7 stappe
CovBot - 'n WhatsApp -gebaseerde chatbot vir COVID 19 -inligting en meer: 7 stappe
Anonim
Image
Image
Skep 'n Twilio -rekening
Skep 'n Twilio -rekening

CoVbot is 'n eenvoudige en intuïtiewe chatbot op Whatsapp. Die belangrikste kenmerk van die bot is:

Dit kan u op 'n eenvoudige en intuïtiewe manier die nuutste status van COVID-19 in die land van keuse gee.

Boonop kan die bot prettige aktiwiteite voorstel om tuis te doen, soos:

  1. Stel 'n film voor - 'n film om te kyk uit die lys van die top 10 -films, met 'n kort oorsig van die plot en duur. Aangesien hierdie lys nie met sagteware gekodeer is nie, gee dit u altyd die nuutste opdaterings op grond van huidige tendense.
  2. Stel 'n TV -program voor - 'n TV -program om van die gewildste TV -reekse te kyk, met 'n kort oorsig van die plot en graderings. Aangesien hierdie lys nie met sagteware gekodeer is nie, gee dit u altyd die nuutste opdaterings op grond van huidige tendense.
  3. Stel 'n boek voor - 'n boek om te lees uit die top 10 boeklys, met die prent en voorblad van die boek.
  4. Daaglikse oefensessies-Dit is 'n video-gebaseerde op 'n 7-dae oefensessie wat deur CRANK gym op hul Instagram-rekening verskaf word.

As u van hierdie instruksies hou, kan u dit oorweeg om daarvoor te stem in die eerste item -outeurskompetisie. (en ja, dit is my eerste instruksie, so as iets nie duidelik is nie of meer verduideliking benodig, laat weet my dan in die kommentaarafdeling, en ek kan u help:)

Voorrade

Hierdie projek is slegs 'n sagteware-gebaseerde projek, sodat almal wat hierdie instruksies volg met 'n skootrekenaar/tafelrekenaar/macOS/Linux en internet, hierdie projek kan voltooi. Ek sal ook 'n gedetailleerde gedeelte aan die einde bevat om die kode/proses in meer besonderhede te verduidelik vir mense met 'n mate van programmeringservaring. Let daarop dat dit nie nodig is om die projek te voltooi nie

Probleem moeilikheidsgraad:

Nie baie maklik nie, maar nie baie moeilik nie

Die hardeware wat ons sal gebruik:

  • 'N Skootrekenaar/lessenaar met Windows/macOS/Linux.
  • 'N Selfoon met WhatsApp Messenger geïnstalleer

Die sagteware wat ons sal gebruik:

  1. Python programmeertaal
  2. ngrok - is 'n instrument waarmee ons toegang tot ons bediener van buite ons netwerk kan verkry
  3. Redakteur van u keuse: (bv. Notepad ++, Sublime Text, Vim, ens.)

Stap 1: Installeer die vereiste sagteware

Image
Image

In hierdie stap sal ons die volgende doen:

  1. Installeer Python> 3.6 en toets dit
  2. Installeer die vereiste python -biblioteke
  3. Installeer ngrok

As u albei die toepassing geïnstalleer het, kan u hierdie stap oorslaan

Installeer Python:

Die hele backend/server -kodebasis vir hierdie projek is in Python 3.6 geskryf. Daarom moet ons Python> 3.6 op ons rekenaar hê om ons toepassings te laat loop. Volg die handleiding van CoreySchafer oor hoe om python vir Windows en macOS te installeer

U kan toets of alles korrek geïnstalleer is deur die volgende in die cmd/Terminal te tik:

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

As alles korrek geïnstalleer is, moet Hello World op die skerm gedruk word. As u 'n ongeldige sintaksisfout kry, het u die verkeerde weergawe van python geïnstalleer. Installeer 'n weergawe van python> = 3.6

Installeer vereiste python -biblioteke met behulp van pip:

Ons sal die volgende python -biblioteke gebruik om ons sagteware te laat werk:

  1. Fles - Dit is die raamwerk vir ons bediener
  2. Twilio - Hierdie biblioteek bied 'n manier waarop python met WhatsApp kan kommunikeer
  3. Versoek - Hierdie biblioteek word gebruik om data van API's aan te vra
  4. BeautifulSoup4 - Hierdie biblioteek word gebruik om inligting van webwerwe af te skrap
  5. lxml - Hierdie biblioteek word in kombinasie met BeautifulSoup gebruik om die relevante inligting van 'n webwerf te haal

Om hierdie biblioteke te installeer, kan u die volgende doen:

Maak CMD/Terminal oop en tik die volgende opdrag:

pip installeer fles, twilio, versoek, beautifulsoup4, lxml

OF

Laai die requirements.txt -lêer af en maak 'n terminale oop in die gids waar die lêer is en tik:

pip installeer -r requirements.txt

Installeer ngrok

Met ngrok kan u 'n bediener wat op u plaaslike masjien werk, blootstel aan die internet. Vertel net vir ngrok na watter poort u bediener luister.

Volg die gids op die ngrok -webwerf om ngrok te installeer vir die bedryfstelsel wat u gebruik.

Wenk: Stap 3 van die gids is nie relevant vir hierdie projek nie, so dit kan oorgeslaan word

Stap 2: Skep 'n Twilio -rekening

In hierdie stap sal ons die volgende doen:

  1. Teken in vir 'n Twilio -rekening
  2. Vinnige inleiding tot nuttige afdelings op Twilio se konsole

Teken aan:

In hierdie projek gebruik ons die Twilio Whatsapp API om ons python -program aan Whatsapp te koppel. Om Twilio API te kan gebruik, moet ons eers 'n rekening op die amptelike webwerf van die Twilio skep. Vir 'n proefrekening bied Twilio 'n gratis krediet van $ 15 aan wat ons kan gebruik.

Vinnige inleiding:

Nadat u 'n rekening geskep het, is die interessantste gedeeltes van die Twilio -konsole vir hierdie projek:

Dashboard - Op die paneelbord kan u die hoeveelheid krediet wat u nog oor het, sien, u kan die naam van u projek wysig en die programmeertaal verander

Whatsapp -onderafdeling in die programmeerbare SMS -afdeling - In die Whatsapp -afdeling van die konsole kry u toegang tot die join -kode vir die bot, die aantal Whatsapp wat ons in die projek sal gebruik om met ons bot te praat en ook die opstel van die webhook. Meer besonderhede hieroor sal in die volgende stappe beskryf word

Stap 3: Kry API -sleutel vir COVID 19 -data, films en TV -reekse

Kry API -sleutel vir COVID 19 -data, films en TV -reekse
Kry API -sleutel vir COVID 19 -data, films en TV -reekse
Kry API -sleutel vir COVID 19 -data, films en TV -reekse
Kry API -sleutel vir COVID 19 -data, films en TV -reekse

'N API -sleutel of toepassingsprogrammeerkoppelvlak -sleutel is 'n kode wat deur rekenaartoepassings deurgegee word. Die program of toepassing skakel dan die API of toepassingsprogrammeerkoppelvlak om die gebruiker, ontwikkelaar of oproepprogram daarvan na 'n webwerf te identifiseer.

Ons gebruik 'n API om inligting te kry oor die nuutste COVID 19 -status, films en TV -programme. Om toegang tot die API te verkry, benodig u 'n sleutel wat vir elke gebruiker persoonlik is. In hierdie stap kry ons hierdie sleutels

Kry API -sleutel vir COVID 19 -data:

  • Meld aan of meld aan by u RapidAPI -rekening.
  • Gaan daarna na die COVID-19 API deur Gramzivi
  • Rol af na die afdeling 'Koptekstparameters' van die API -konsole.
  • U API-sleutel moet sigbaar wees in die veld "X-RapidAPI-sleutel".

Kry API -sleutel vir films en TV -programdata:

  • Meld aan of meld aan by u TMDB -rekening
  • Gaan daarna na u instelling - API
  • Rol af na die afdeling "API -sleutel (v3 -outeur)"
  • U API -sleutel moet daaronder sigbaar wees

Skep 'config.py' lêer

Ons sal nou 'n config.py -lêer skep om ons API -sleutels te stoor. Ons skep 'n aparte lêer hiervoor, want API -sleutels is vertroulike inligting, en as u u projek deel, moet u nie u API -sleutel deel nie.

  • Skep 'n nuwe projekgids
  • Skep 'n nuwe lêer genaamd "config.py" in die nuutgeskepte gids
  • Wysig hierdie lêer met 'n redakteur van u keuse (Sublime, Notepad ++) en kopieer en vervang die volgende teks met relevante inligting wat in die vorige stap verkry is:

session_key = "geheim" #Dit is nie veilig nie, maar dit is goed om dit te toets

rapid_api_key = "" api_key = ""

Stoor die lêer

Stap 4: Koppel Python en Twilio Via Ngrok

In hierdie stap sal ons die volgende doen:

  1. Laai die bronkode af
  2. Voer die program uit en stuur die plaaslike IP via ngrok na 'n openbare adres sodat ons 'n versoek kan rig
  3. Stel ons Twilio -rekening op om die versoek na ons bediener deur te stuur

Laai die bronkode vir die bot af:

Laai al die aangehegte lêer in hierdie opstelling af in die projekgids wat in die laaste stap geskep is.

Voer die program uit:

Gaan na die gids van die bronkode in die CMD/terminale en voer die volgende opdrag uit:

python server_main.py

Maak seker dat u die "config.py" het wat ons in die laaste stap geskep het, anders kry u 'n fout

Die uitset moet so iets wees:

* Bedien fles -app "server_main" (lui laai)

* Omgewing: produksie WAARSKUWING: Dit is 'n ontwikkelingsbediener. Moenie dit in 'n produksie -ontplooiing gebruik nie. Gebruik eerder 'n produksie WSGI -bediener. * Ontfoutmodus: aan * Begin op https://127.0.0.1:5000/ (Druk CTRL+C om op te hou) * Herbegin met stat * Ontfouter is aktief! * Ontfouter-PIN: 740-257-236

Dit beteken dat u bediener korrek op u plaaslike netwerk op poort 5000 werk. Om hierdie bediener buite u plaaslike netwerk toeganklik te maak, gebruik ons ngrok

Stuur plaaslike IP deur na ngrok na 'n openbare adres

Gaan na die gids waar u ngrok afgelaai het via CMD/terminal en voer die volgende opdrag uit:

ngrok http 5000

Die uitset moet so iets wees:

ngrok deur @inconshreveable (Ctrl+C om op te hou)

Sessie status aanlyn Sessie verval 7 uur, 59 minute Weergawe 2.3.35 Streek Verenigde State (ons) Webkoppelvlak https://127.0.0.1:4040 Aanstuur _https://d44c955749bf.ngrok.io_ -> _https:// localhost: 5000_ Aanstuur _https://d44c955749bf.ngrok.io_ -> _https:// localhost: 5000_ Verbindings ttl opn rt1 rt5 p50 p90 0 0 0.00 0.00 0.00 0.00

Kopieer die HTTP -skakel vanaf die gedeelte "Voorlaai" (net tot ngrok.io). (Ek het die _ in hierdie voorbeeld bygevoeg om te verhoed dat dit as 'n skakel onderskep kan word)

Stel Twilio op om die nuwe adres te gebruik om bedienerversoeke deur te stuur na:

Noudat ons ons bediener suksesvol aangestuur het om in die openbaar oopgemaak te word, moet ons Twilio so opstel dat wanneer 'n versoek met die Twilio Whatsapp API gerig word, ons die versoek na ons bediener stuur. Om dit te kan doen, moet ons die volgende doen:

  1. Gaan na die Whatsapp -afdeling op Twilio's Console
  2. Gaan na die onderafdeling "Sanbox"
  3. In die "WANNEER 'N Boodskap kom" plak die HTTP -skakel van ngrok wat met die /sms -uitbreiding gekopieer is (MOENIE DIE _ aan die begin en einde kopieer nie):

_https://d44c955749bf.ngrok.io/sms_

Nou is alles vir die chatbot opgestel. In die volgende stap kan ons toets of alles reg werk

Stap 5: Toets ons aansoek

Toets ons aansoek
Toets ons aansoek
Toets ons aansoek
Toets ons aansoek
Toets ons aansoek
Toets ons aansoek

In hierdie stap sal ons die volgende doen:

  1. Sluit aan by ons bot met behulp van die toegangskode
  2. Probeer ons aansoek

Sluit aan by ons bot met behulp van die toegangskode

In hierdie projek gebruik ons die Twilio se Whatsapp Sandbox -nommer vir ons Whatsapp -bot. Vir elke persoon sal hierdie getal anders wees. U kan u nommer so vind:

  • Meld aan by u Twilio -rekening
  • Gaan na Twilio Console -> Whatsapp -afdeling -> Sandbox
  • U sal u Twilio Sandbox -nommer met die volgende teks sien:

Nooi u vriende na u Sandbox. Vra hulle om 'n WhatsApp -boodskap te stuur na:

Weens die veiligheidsbeleid van Whatsapp, moet almal wat met Whatsapp met 'n outomatiese bot wil praat, uitdruklik inteken met 'n kode. U kan u kode vind deur in dieselfde afdeling as u Twilio -sandboxnommer te kyk met die teks:

Nadat u u Twilio Sandbox Whatsapp-nommer en die aanmeldingskode aangeskaf het, kan u na die selfoon begin en die volgende doen:

  1. Stoor die "Twilio Sandbox Whatsapp -nommer" by u kontakpersoon met u naamkeuse (bv. CovBot)
  2. Maak Whatsapp oop en stuur die volgende boodskap aan die kontakpersoon:

aansluit

U behoort 'n boodskap soos hierdie te sien:

Twilio Sandbox: U is gereed …

Dit beteken dat u met u bot gekoppel is en gereed is om dit te vra

Probeer ons aansoek:

Om die verskillende funksies van u bot te toets nadat u gekoppel het, stuur die volgende boodskap na die bot:

Hi

U behoort die volgende teks te sien:

Welkom by CoVbot!

'N Eenvoudige chatbot wat die nuutste opdaterings van COVID-19 op 'n eenvoudige, vinnige en maklike manier kan gee. Aangesien ons almal in kwarantyn geplaas is, kan die bot gebruik word om 'n paar prettige aktiwiteite voor te stel om ons tyd tuis te benut terwyl ons daarna streef om onsself, vriende en familie veilig te hou. Ons hoop dat u dit geniet en dit nuttig vind! Stuur 4 om te begin!

Nou kan u die opsie volg om die verskillende funksies van die bot uit te probeer.

DIS DIT! Jou Whatsapp Chatbot is gereed !!!! Baie geluk

Stap 6: Hoe werk dit en toekomstige verbetering:

Hoe werk dit en toekomstige verbetering
Hoe werk dit en toekomstige verbetering
Hoe werk dit en toekomstige verbetering
Hoe werk dit en toekomstige verbetering
Hoe werk dit en toekomstige verbetering
Hoe werk dit en toekomstige verbetering
Hoe werk dit en toekomstige verbetering
Hoe werk dit en toekomstige verbetering

Hierdie afdeling is vir mense met 'n paar ervaring met pythonprogrammering. As u dit nie doen nie, kan u hierdie afdeling oorslaan

Kode Verduideliking

Hooflus:

As 'n Whatsapp -boodskap na die nommer van u Twilio gestuur word, rig die Twilio API 'n POST -versoek aan u bediener wat u gespesifiseer het. Die bediener word geïmplementeer met behulp van die Flask -raamwerk, en ons kan dus die Flask Request -voorwerp gebruik om die data wat tydens die POST -versoek ontvang is, op te haal. Op grond van die data (getalle in hierdie geval) besluit ons watter opsie die gebruiker gekies het en gee die toepaslike inligting

COVID -data en films en TV -programme:

Die data van COVID 19, films en TV -programme word van 'n API gehaal. Ek gebruik die versoek -python -biblioteek om die data te kry en omskep dit dan in 'n JSON -formaat. Dan ontleed ek net die relevante inligting. Vir die films en TV -programme het ek ook die random python -biblioteek gebruik om 'n ewekansige TV -program en film te kies

Boekbesonderhede

Die boekvoorstel -algoritme wat in die projek gebruik word, is slegs 'n webskraper. Ek kon geen API vind wat 'n ewekansige boek met besonderhede gee nie, so ek skraap net 'n webwerf met behulp van BeautifulSoup4 en gebruik die lxml parser en haal die relevante inligting uit die boek uit

Subkieslysbesonderhede:

Die implementering van die sub-spyskaarte was 'n bietjie moeiliker as die res, aangesien Whatsapp-boodskappe soos SMS'e is, wat 'n staatlose protokol is. Om dit op te los, het ek twee tegnieke gebruik:

  1. Gebruik globale veranderlikes om die toestand van die boodskap te onthou - dit word slegs geïmplementeer vir die COVID 19 -subopsie. As 'n gebruiker 'Status van COVID 19 in my land -opsie' kies, word 'n globale veranderlike met die naam incomplete_message op True gestel om aan te dui dat 'n ander boodskap gebaseer op die vorige opsie nog steeds nodig is. Dan is daar 'n tjek aan die begin wat kyk of 'n boodskap as onvolledig gemerk is, as dit aanvaar word dat die boodskap die landnaam vir die COVID -data is en die inligting na die korrekte funksie stuur en die globale veranderlike onvolledige boodskap op Onwaar stel
  2. Gebruik Twilio -koekies en kolfsessies - Koekies en kolfsessies word gebruik in die submenu "Stel 'n kwarantynaktiwiteit voor" om statigheid te implementeer, net soos enige webtoepassing op die internet dit deesdae gebruik, maar in plaas daarvan om die dinge soos u gebruikersnaam te onthou of rekening dit onthou die omskakeling tussen twee getalle. As u meer inligting oor hierdie deel wil hê, het ek aanbeveel om hierdie wonderlike gids oor Twilio -koekies te lees, geskryf deur die Twilio -span

Toekomstige verbeterings:

  1. Maak gebruik van Object Orientedness van Python en Design Patterns om kode -argitektuur en DRYness te verbeter
  2. Verwyder globale veranderlikes
  3. Fouthantering kan verbeter word
  4. Dateer ngrok -adres outomaties op met mielies en Twilio CLI
  5. Kode Dokumentasie

Stap 7: Laaste aantekeninge

Ek hoop julle hou almal van hierdie projek. Dit is my eerste opdrag, so as iets nie duidelik is nie of meer verduideliking benodig, laat weet my dan in die kommentaar afdeling, en ek kan u help. Deel dit ook as u hierdie projek met 'n ander tegniek of funksielys gemaak het

Aanbeveel: