CovBot - un chatbot bazat pe WhatsApp pentru informații COVID 19 și mai multe: 7 pași
CovBot - un chatbot bazat pe WhatsApp pentru informații COVID 19 și mai multe: 7 pași
Anonim
Image
Image
Creați un cont Twilio
Creați un cont Twilio

CoVbot este un chatbot simplu și intuitiv bazat pe Whatsapp. Principala caracteristică a botului este:

Vă poate oferi cel mai recent statut de COVID-19 în țara aleasă într-un mod simplu și intuitiv.

În plus, robotul poate sugera activități distractive de făcut acasă, cum ar fi:

  1. Sugerează un film - Un film de vizionat din lista de top 10 filme, cu o scurtă prezentare generală a complotului și a duratei. Deoarece această listă nu este codificată în software, aceasta vă va oferi întotdeauna cele mai recente actualizări bazate pe tendințele actuale.
  2. Sugerați o emisiune TV - O emisiune TV de vizionat din cele mai populare emisiuni TV, cu o scurtă prezentare generală a complotului și a ratingurilor. Deoarece această listă nu este codificată în software, aceasta vă va oferi întotdeauna cele mai recente actualizări bazate pe tendințele actuale.
  3. Sugerează o carte - O carte de citit din Top 10 Listă de cărți, cu imaginea de copertă și copertă a cărții.
  4. Antrenamente zilnice - Acesta este un videoclip bazat pe un program de antrenament de 7 zile oferit de sala CRANK pe contul lor de Instagram.

Dacă vă place acest Instructable, vă rugăm să luați în considerare votul pentru acesta în cadrul Concursului de autor pentru primul articol. (și da, acesta este primul meu instructable, deci dacă ceva nu este clar sau are nevoie de mai multe explicații, vă rugăm să ne anunțați în secțiunea de comentarii și vă pot ajuta:)

Provizii

Acest proiect este exclusiv un proiect bazat pe software, astfel încât oricine urmează acest instructable cu un laptop / desktop PC / macOS / Linux și internet poate finaliza acest proiect. Voi include, de asemenea, o secțiune detaliată la sfârșit pentru a explica codul / procesul mai detaliat pentru persoanele cu o anumită experiență în programare. Rețineți că nu este necesar pentru finalizarea proiectului

Nivelul de dificultate al proiectului:

Nu foarte ușor, dar nu foarte greu

Hardware-ul pe care îl vom folosi:

  • Un laptop / desktop care rulează Windows / macOS / Linux.
  • Un telefon mobil cu WhatsApp Messenger instalat

Software-ul pe care îl vom folosi:

  1. Limbaj de programare Python
  2. ngrok - este un instrument folosit pentru a ne permite accesul la serverul nostru din afara rețelei noastre
  3. Editor la alegere: (de ex. Notepad ++, Sublime Text, Vim etc.)

Pasul 1: Instalați software-ul necesar

Image
Image

În acest pas vom face următoarele:

  1. Instalați Python> 3.6 și testați-l
  2. Instalați bibliotecile Python necesare
  3. Instalați ngrok

Dacă aveți ambele aplicații instalate, puteți sări peste acest pas

Instalați Python:

Întreaga bază de cod backend / server pentru acest proiect este scrisă în Python 3.6. Prin urmare, pentru a rula aplicațiile noastre, trebuie să avem Python> 3.6 instalat pe computerul nostru. Urmați tutorialul CoreySchafer despre cum să instalați python pentru Windows și macOS

Puteți testa totul este instalat corect tastând următoarele în cmd / Terminal:

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

Dacă totul a fost instalat corect, atunci Hello World ar trebui să fie tipărit pe ecran. Dacă primiți o eroare de sintaxă nevalidă, atunci aveți instalată versiunea greșită de python. Instalați o versiune de python> = 3.6

Instalați bibliotecile Python necesare folosind pip:

Vom folosi următoarele biblioteci python pentru ca software-ul nostru să funcționeze:

  1. Flask - Acesta este cadrul pentru serverul nostru
  2. Twilio - Această bibliotecă oferă o modalitate prin care Python poate comunica cu WhatsApp
  3. Solicitare - Această bibliotecă este utilizată pentru a solicita date de la API-uri
  4. BeautifulSoup4 - Această bibliotecă este utilizată pentru răzuirea informațiilor de pe site-uri web
  5. lxml - Această bibliotecă este utilizată în combinație cu BeautifulSoup pentru a extrage informațiile relevante de pe un site web

Pentru a instala aceste biblioteci puteți face următoarele:

Deschideți CMD / Terminal și tastați următoarea comandă:

pip instalare balon, twilio, request, beautifulsoup4, lxml

SAU

Descărcați fișierul requirements.txt și deschideți un terminal în directorul în care se află fișierul și tastați:

pip install -r requirements.txt

Instalați ngrok

ngrok vă permite să expuneți la internet un server care rulează pe mașina dvs. locală. Spuneți doar ngrok pe ce port ascultă serverul dvs.

Urmează ghidul de pe site-ul web ngrok pentru a instala ngrok pentru sistemul de operare pe care îl utilizați.

Sfat: Pasul 3 al ghidului nu este relevant pentru acest proiect, deci poate fi omis

Pasul 2: Creați un cont Twilio

În acest pas vom face următoarele:

  1. Înscrieți-vă pentru un cont Twilio
  2. Introducere rapidă la secțiunile utile din Consola Twilio

Inscrie-te:

În acest proiect, vom folosi API-ul Twilio Whatsapp pentru a conecta programul nostru Python la Whatsapp. Pentru a putea utiliza Twilio API trebuie mai întâi să ne creăm un cont pe site-ul oficial al Twilio. Pentru un cont de probă, Twilio oferă un credit gratuit de 15 USD pentru a fi folosit de noi.

Introducere rapidă:

După ce ați creat un cont, cele mai interesante secțiuni ale consolei Twilio pentru acest proiect sunt:

Tablou de bord - Din tabloul de bord, puteți vedea suma de credit care vă mai rămâne, puteți edita numele proiectului și puteți schimba limbajul de programare

Subsecțiunea Whatsapp în secțiunea SMS programabil - Din secțiunea Whatsapp a consolei, puteți obține acces la codul de asociere pentru bot, numărul de Whatsapp pe care îl vom folosi în proiect pentru a vorbi cu botul nostru și, de asemenea, configurarea webhook-ului. Mai multe detalii despre toate acestea vor fi descrise în pașii următori

Pasul 3: obțineți cheia API pentru date, filme și emisiuni TV COVID 19

Obțineți cheia API pentru date, filme și emisiuni TV COVID 19
Obțineți cheia API pentru date, filme și emisiuni TV COVID 19
Obțineți cheia API pentru date, filme și emisiuni TV COVID 19
Obțineți cheia API pentru date, filme și emisiuni TV COVID 19

O cheie API sau o cheie de interfață de programare a aplicației este un cod care este transmis de aplicațiile computerizate. Programul sau aplicația apelează apoi API-ul sau interfața de programare a aplicației pentru a identifica utilizatorul, dezvoltatorul sau programul de apelare pe un site web.

Folosim un API pentru a obține informații pentru cele mai recente stări COVID 19, filme și emisiuni TV. Pentru a accesa API-ul aveți nevoie de o cheie personală pentru fiecare utilizator. În acest pas, vom obține aceste chei

Obțineți cheia API pentru datele COVID 19:

  • Conectați-vă sau înscrieți-vă pentru contul RapidAPI.
  • După aceea, mergeți la COVID-19 API de către Gramzivi
  • Derulați în jos până la secțiunea „Parametri antet” din consola API.
  • Cheia dvs. API ar trebui să fie vizibilă în câmpul „X-RapidAPI-Key”.

Obțineți cheia API pentru filme și date despre emisiuni TV:

  • Conectați-vă sau înscrieți-vă pentru contul dvs. TMDB
  • După aceea, accesați setarea dvs. - API
  • Derulați în jos până la secțiunea „API Key (v3 auth)”
  • Cheia dvs. API ar trebui să fie vizibilă sub ea

Creați fișierul „config.py”

Vom crea acum un fișier config.py pentru a stoca cheile API. Creăm un fișier separat pentru acestea, deoarece cheile API sunt informații confidențiale și dacă partajați proiectul dvs. nu ar trebui să partajați cheia API.

  • Creați un director de proiect nou
  • În directorul nou creat creați un fișier nou numit „config.py”
  • Editați acest fișier cu un editor la alegere (Sublime, Notepad ++) și copiați și înlocuiți următorul text cu informații relevante obținute în pasul anterior:

session_key = "secret" # Acest lucru nu este sigur.. dar doar pentru test este ok

rapid_api_key = "" api_key = ""

Salvați fișierul

Pasul 4: Conectați Python și Twilio Via Ngrok

În acest pas vom face următoarele:

  1. Descărcați codul sursă
  2. Executați programul și redirecționați IP local către o adresă publică prin ngrok, astfel încât să îi putem face o cerere
  3. Configurați contul nostru Twilio pentru a redirecționa cererea către serverul nostru

Descărcați codul sursă pentru bot:

Descărcați tot fișierul atașat din această configurare în directorul de proiect creat în ultimul pas.

Executați programul:

Mergeți la directorul codului sursă din terminalul CMD / și executați următoarea comandă:

python server_main.py

Asigurați-vă că aveți „config.py” pe care l-am creat în ultimul pas sau altfel veți primi o eroare

Rezultatul ar trebui să fie ceva de genul acesta:

* Servirea aplicației Flask „server_main” (încărcare leneșă)

* Mediu: producție AVERTISMENT: Acesta este un server de dezvoltare. Nu-l utilizați într-o implementare de producție. Folosiți în schimb un server WSGI de producție. * Mod de depanare: activat * Rularea pe https://127.0.0.1:5000/ (Apăsați CTRL + C pentru a ieși) * Repornirea cu stat * Debuggerul este activ! * PIN de depanare: 740-257-236

Aceasta înseamnă că serverul dvs. funcționează corect în rețeaua dvs. locală din portul 5000. Pentru a face acest server accesibil din afara rețelei locale vom folosi ngrok

Redirecționați IP local către o adresă publică prin ngrok

Mergeți la directorul de unde ați descărcat ngrok prin CMD / terminal și executați următoarea comandă:

ngrok http 5000

Rezultatul ar trebui să fie ceva de genul acesta:

ngrok de @inconshreveable (Ctrl + C pentru a renunța)

Starea sesiunii online Sesiunea expiră 7 ore, 59 minute Versiunea 2.3.35 Regiunea Statele Unite (noi) Interfață web https://127.0.0.1:4040 Redirecționare _https://d44c955749bf.ngrok.io_ -> _https:// localhost: 5000_ Redirecționare _https://d44c955749bf.ngrok.io_ -> _https:// localhost: 5000_ Conexiuni ttl opn rt1 rt5 p50 p90 0 0 0.00 0.00 0.00 0.00

Copiați linkul HTTP din partea „Forwading” (până la ngrok.io). (Am adăugat _ în acest exemplu pentru a evita ca să-l interceptăm ca un link)

Configurați Twilio pentru a utiliza noua adresă pentru a redirecționa cererea serverului către:

Acum, că am redirecționat cu succes serverul nostru pentru a fi accesat public, trebuie să configurăm Twilio astfel încât, atunci când o cerere este făcută folosind Twilio API Whatsapp, să redirecționăm solicitarea către serverul nostru. Pentru a face acest lucru, trebuie să facem următoarele:

  1. Accesați secțiunea Whatsapp din Consola Twilio
  2. Navigați la subsecțiunea „Sanbox”
  3. În caseta de text „Când vine un mesaj” lipiți linkul HTTP de la ngrok copiat cu extensia / sms (NU COPIAȚI _ la început și la sfârșit):

_https://d44c955749bf.ngrok.io/sms_

Acum totul este configurat pentru chatbot. În pasul următor, putem testa dacă totul funcționează corect

Pasul 5: testați aplicația noastră

Testați aplicația noastră
Testați aplicația noastră
Testați aplicația noastră
Testați aplicația noastră
Testați aplicația noastră
Testați aplicația noastră

În acest pas vom face următoarele:

  1. Alăturați-vă botului nostru folosind codul de acces
  2. Încercați aplicația noastră

Alăturați-vă botului nostru folosind codul de acces

În acest proiect, vom folosi numărul de sandbox Whatsapp Twilio pentru botul nostru Whatsapp. Pentru fiecare persoană, acest număr va fi diferit. Puteți găsi numărul dvs. astfel:

  • Conectați-vă la contul dvs. Twilio
  • Accesați Twilio Console -> Secțiunea Whatsapp -> Sandbox
  • Veți vedea numărul dvs. Twilio Sandbox cu următorul text:

Invitați-vă prietenii în Sandbox. Rugați-i să trimită un mesaj WhatsApp la:

Datorită politicii de securitate a Whatsapp, toți cei care doresc să vorbească cu un bot automat prin Whatsapp trebuie să opteze în mod explicit folosind un cod. Puteți afla codul dvs. uitându-vă în aceeași secțiune cu numărul dvs. de sandbox Twilio cu textul:

După ce ați achiziționat numărul de telefon Twilio Sandbox Whatsapp și codul de înscriere, pentru a începe să utilizați botul, accesați telefonul mobil și faceți următoarele:

  1. Salvați „Numărul WhatsApp Twilio Sandbox” la persoana de contact cu numele ales (de ex. CovBot)
  2. Deschideți Whatsapp și trimiteți următorul mesaj către persoana de contact:

a te alatura

Ar trebui să vedeți un mesaj ca acesta:

Twilio Sandbox: Sunteți gata …

Aceasta înseamnă că v-ați conectat cu botul dvs. și sunteți gata să-l întrebați qs

Încercați aplicația noastră:

Pentru a testa diferitele caracteristici ale botului dvs. după ce v-ați conectat, trimiteți următorul mesaj către bot:

Salut

Ar trebui să vedeți următorul text:

Bine ați venit la CoVbot!

Un chatbot simplu care poate oferi cele mai recente actualizări ale COVID-19 într-un mod simplu, rapid și ușor. Deoarece suntem cu toții în carantină, robotul poate fi folosit pentru a sugera câteva activități distractive pentru a profita la maximum de timpul nostru acasă, în timp ce ne străduim să ne păstrăm în siguranță pe noi înșine, prietenii și familia. Sperăm să vă bucurați și să vi se pară util! Trimite 4 pentru a începe!

Acum puteți urmări opțiunea de a încerca diferitele caracteristici ale botului.

ASTA E! Chatbot-ul dvs. Whatsapp este gata !!!! Felicitări

Pasul 6: Cum funcționează și îmbunătățiri viitoare:

Cum funcționează și îmbunătățiri viitoare
Cum funcționează și îmbunătățiri viitoare
Cum funcționează și îmbunătățiri viitoare
Cum funcționează și îmbunătățiri viitoare
Cum funcționează și îmbunătățiri viitoare
Cum funcționează și îmbunătățiri viitoare
Cum funcționează și îmbunătățiri viitoare
Cum funcționează și îmbunătățiri viitoare

Această secțiune este destinată persoanelor care au o experiență de programare Python. Dacă nu, puteți sări peste această secțiune

Explicarea codului

Bucla principală:

Când un mesaj Whatsapp este trimis la numărul dvs. Twilio, API-ul Twilio face o cerere POST către serverul dvs. pe care l-ați specificat. Serverul este implementat folosind cadrul Flask și astfel putem folosi obiectul Flask Request pentru a prelua datele primite în timpul cererii POST. Pe baza datelor (Numere în acest caz) decidem ce opțiune a selectat utilizatorul și oferim informațiile corespunzătoare

Date și filme COVID și emisiuni TV:

Datele COVID 19, filme și emisiuni TV sunt preluate dintr-un API. Folosesc biblioteca python de solicitare pentru a obține datele și apoi le convertesc într-un format JSON. Apoi analizez doar informațiile relevante. Pentru filme și emisiuni TV, am folosit și biblioteca aleatorie python pentru a alege o emisiune TV și un film aleatoriu

Detalii carte

Algoritmul de sugestie de carte utilizat în proiect este doar un răzuitor web. Nu am putut găsi niciun API care să vă ofere o carte aleatorie cu detalii, așa că am răzuit un site web folosind BeautifulSoup4 și folosind parser-ul lxml extrag informațiile relevante ale cărții

Detalii submeniu:

Implementarea submeniurilor a fost puțin mai complicată decât restul, deoarece mesajele Whatsapp sunt ca SMS-uri, care este un protocol fără stat. Pentru a rezolva acest lucru, am folosit două tehnici:

  1. Utilizarea variabilelor globale pentru a vă aminti starea mesajului - Aceasta este implementată numai pentru subopțiunea COVID 19. În acest caz, atunci când un utilizator selectează „Starea COVID 19 în opțiunea țării mele”, o variabilă globală numită incomplete_message este setată la Adevărat pentru a indica atunci este necesară încă o altă mesagerie bazată pe opțiunea anterioară. Apoi există o verificare la început care verifică dacă un mesaj este marcat ca incomplet, dacă este așa, presupune că mesajul este numele țării pentru datele COVID și trece informațiile la funcția corectă și setează variabila globală mesajul incomplet la False
  2. Utilizarea cookie-urilor și sesiunilor Flask Twilio - Cookie-urile și sesiunile Flask sunt folosite în submeniul „Sugerează o activitate de carantină” pentru a implementa starea de stat, la fel ca orice aplicație web de pe internet care o folosește în aceste zile, dar în loc să-ți amintești lucruri precum numele de utilizator sau cont, amintiți-vă conversia dintre două numere. Dacă vă plac mai multe informații despre această parte, v-am recomandat să citiți acest ghid minunat despre cookie-urile Twilio, scris de Echipa Twilio

Îmbunătățiri viitoare:

  1. Folosiți Orientarea obiectelor Python și modelele de proiectare pentru a îmbunătăți arhitectura codului și DRYness
  2. Eliminați variabilele globale
  3. Tratarea erorilor poate fi îmbunătățită
  4. Actualizați automat adresa ngrok folosind porumb și Twilio CLI
  5. Documentarea codului

Pasul 7: Note finale

Sper să vă placă tuturor acestui proiect. Acesta este primul meu instructable, deci dacă ceva nu este clar sau are nevoie de mai multe explicații, anunțați-mă în secțiunea de comentarii și vă pot ajuta. De asemenea, dacă ați făcut acest proiect cu o altă tehnică sau o listă de caracteristici, împărtășiți-l cu toții

Recomandat: