Sommario:

CovBot: un chatbot basato su WhatsApp per COVID 19 Informazioni e altro: 7 passaggi
CovBot: un chatbot basato su WhatsApp per COVID 19 Informazioni e altro: 7 passaggi

Video: CovBot: un chatbot basato su WhatsApp per COVID 19 Informazioni e altro: 7 passaggi

Video: CovBot: un chatbot basato su WhatsApp per COVID 19 Informazioni e altro: 7 passaggi
Video: [WEBINAR] - "Un Chatbot pour faire face à la crise COVID-19 ? : Le cas Engie" (24.04.2020) 2024, Novembre
Anonim
Image
Image
Crea un account Twilio
Crea un account Twilio

CoVbot è un chatbot basato su Whatsapp semplice e intuitivo. La caratteristica principale del bot è:

Può darti l'ultimo stato di COVID-19 nel paese di scelta in modo semplice e intuitivo.

Inoltre, il bot può suggerire attività divertenti da fare A CASA come:

  1. Suggerisci un film - Un film da guardare dall'elenco dei migliori 10 film, con una breve panoramica della trama e della durata. Poiché questo elenco non è codificato nel software, questo ti fornirà sempre gli ultimi aggiornamenti in base alle tendenze attuali.
  2. Suggerisci un programma TV - Un programma TV da guardare dai programmi TV più popolari, con una breve panoramica della trama e delle valutazioni. Poiché questo elenco non è codificato nel software, questo ti fornirà sempre gli ultimi aggiornamenti in base alle tendenze attuali.
  3. Suggerisci un libro - Un libro da leggere dalla Top 10 Booklist, con la descrizione e l'immagine di copertina del libro.
  4. Allenamenti giornalieri - Questo è un video basato su un programma di allenamento di 7 giorni fornito dalla palestra CRANK sul proprio account Instagram.

Se ti piace questo Instructable, considera di votarlo nel concorso per l'autore del primo articolo. (e sì, questo è il mio primo istruibile, quindi se qualcosa non è chiaro o ha bisogno di ulteriori spiegazioni, faccelo sapere nella sezione commenti e posso aiutarti:)

Forniture

Questo progetto è esclusivamente un progetto basato su software, quindi chiunque segua questa istruzione con un laptop/PC desktop/macOS/Linux e Internet può completare questo progetto. Includerò anche una sezione dettagliata alla fine per spiegare il codice/processo in modo più dettagliato per le persone con una certa esperienza di programmazione, si prega di notare che questo non è necessario per completare il progetto

Livello di difficoltà del progetto:

Non molto facile, ma non molto difficile

L'hardware che utilizzeremo:

  • Un laptop/desktop con Windows/macOS/Linux.
  • Un telefono cellulare con WhatsApp Messenger installato

Il software che utilizzeremo:

  1. Linguaggio di programmazione Python
  2. ngrok - è uno strumento utilizzato per permetterci di accedere al nostro server dall'esterno della nostra rete
  3. Editor di tua scelta: (ad es. Notepad ++, Sublime Text, Vim ecc.)

Passaggio 1: installare il software richiesto

Image
Image

In questo passaggio faremo quanto segue:

  1. Installa Python > 3.6 e provalo
  2. Installa le librerie Python richieste
  3. Installa ngrok

Se hai installato entrambe le applicazioni, puoi saltare questo passaggio

Installa Python:

L'intera base di codice backend/server per questo progetto è scritta in Python 3.6. Quindi per eseguire le nostre applicazioni dobbiamo avere Python > 3.6 installato sul nostro computer. Segui il tutorial di CoreySchafer su come installare Python per Windows e macOS

Puoi verificare che tutto sia installato correttamente digitando quanto segue nel cmd/Terminale:

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

Se tutto è stato installato correttamente, sullo schermo dovrebbe essere stampato Hello World. Se ricevi un errore di sintassi non valido, allora hai installato la versione sbagliata di Python. Installa una versione di Python >= 3.6

Installa le librerie Python richieste usando pip:

Useremo le seguenti librerie Python per far funzionare il nostro software:

  1. Flask - Questo è il framework per il nostro server
  2. Twilio - Questa libreria fornisce a Python un modo per comunicare con WhatsApp
  3. Richiesta: questa libreria viene utilizzata per richiedere dati dalle API
  4. BeautifulSoup4 - Questa libreria viene utilizzata per raschiare informazioni dai siti Web
  5. lxml - Questa libreria viene utilizzata in combinazione con BeautifulSoup per estrarre le informazioni rilevanti da un sito web

Per installare queste librerie puoi fare quanto segue:

Apri CMD/Terminale e digita il seguente comando:

pip install flask, twilio, request, beautifulsoup4, lxml

O

Scarica il file require.txt e apri un terminale nella directory in cui si trova il file e digita:

pip install -r requisiti.txt

Installa ngrok

ngrok ti consente di esporre a Internet un server in esecuzione sul tuo computer locale. Basta dire a ngrok su quale porta è in ascolto il tuo server.

Segue la guida sul sito web di ngrok per installare ngrok per il sistema operativo che stai utilizzando.

Suggerimento: il passaggio 3 della guida non è rilevante per questo progetto, quindi può essere saltato

Passaggio 2: crea un account Twilio

In questo passaggio faremo quanto segue:

  1. Registrati per un account Twilio
  2. Introduzione rapida alle sezioni utili sulla console di Twilio

Iscriviti:

In questo progetto, utilizzeremo l'API Twilio Whatsapp per connettere il nostro programma Python a Whatsapp. Per poter utilizzare l'API Twilio dobbiamo prima creare un account sul sito Web ufficiale di Twilio. Per un account di prova, Twilio offre un credito gratuito di $ 15 da utilizzare.

Introduzione rapida:

Una volta creato un account, le sezioni più interessanti della console Twilio per questo progetto sono:

Dashboard - Dalla dashboard puoi vedere l'importo del credito che ti rimane, puoi modificare il nome del tuo progetto e cambiare il linguaggio di programmazione

Sottosezione Whatsapp nella sezione SMS programmabili - Dalla sezione Whatsapp della console, puoi accedere al codice di accesso al bot, al numero di Whatsapp che utilizzeremo nel progetto per parlare con il nostro bot e anche alla configurazione del webhook. Maggiori dettagli su tutti questi saranno descritti nei prossimi passaggi

Passaggio 3: ottenere la chiave API per dati, film e programmi TV COVID 19

Ottieni la chiave API per dati, film e programmi TV COVID 19
Ottieni la chiave API per dati, film e programmi TV COVID 19
Ottieni la chiave API per dati, film e programmi TV COVID 19
Ottieni la chiave API per dati, film e programmi TV COVID 19

Una chiave API o una chiave dell'interfaccia di programmazione dell'applicazione è un codice che viene passato dalle applicazioni del computer. Il programma o l'applicazione chiama quindi l'API o l'interfaccia di programmazione dell'applicazione per identificare il suo utente, sviluppatore o programma chiamante a un sito web.

Utilizziamo un'API per ottenere informazioni per l'ultimo stato COVID 19, film e programmi TV. Per accedere all'API è necessaria una chiave personale per ogni utente. In questo passaggio, otterremo queste chiavi

Ottieni la chiave API per i dati COVID 19:

  • Accedi o registrati per il tuo account RapidAPI.
  • Dopodiché vai all'API COVID-19 di Gramzivi
  • Scorri verso il basso fino alla sezione "Parametri intestazione" della console API.
  • La tua chiave API dovrebbe essere visibile nel campo "X-RapidAPI-Key".

Ottieni la chiave API per i dati di film e programmi TV:

  • Accedi o registrati per il tuo account TMDB
  • Dopodiché vai alle tue impostazioni - API
  • Scorri verso il basso fino alla sezione "Chiave API (autenticazione v3)"
  • La tua chiave API dovrebbe essere visibile sotto di essa

Crea il file "config.py"

Ora creeremo un file config.py per memorizzare le nostre chiavi API. Creiamo un file separato per questi, perché le chiavi API sono informazioni riservate e se condividi il tuo progetto non dovresti condividere la tua chiave API.

  • Crea una nuova directory di progetto
  • All'interno della directory appena creata crea un nuovo file chiamato "config.py"
  • Modifica questo file con un editor a tua scelta (Sublime, Notepad++) e copia e sostituisci il testo seguente con le informazioni pertinenti ottenute nel passaggio precedente:

session_key = "segreto" #Questo non è sicuro.. ma solo per il test va bene

rapid_api_key = "" api_key = ""

Salva il file

Passaggio 4: collega Python e Twilio tramite Ngrok

In questo passaggio faremo quanto segue:

  1. Scarica il codice sorgente
  2. Esegui il programma e inoltra l'IP locale a un indirizzo pubblico tramite ngrok in modo che possiamo inviargli una richiesta
  3. Configura il nostro account Twilio per inoltrare la richiesta al nostro server

Scarica il codice sorgente per il bot:

Scarica tutti i file allegati in questa configurazione nella directory del progetto creata nell'ultimo passaggio.

Esegui il programma:

Vai alla directory del codice sorgente nel CMD/terminale ed esegui il seguente comando:

python server_main.py

Assicurati di avere il "config.py" che abbiamo creato nell'ultimo passaggio, altrimenti otterrai un errore

L'output dovrebbe essere qualcosa del genere:

* Servire l'app Flask "server_main" (caricamento lento)

* Ambiente: produzione ATTENZIONE: Questo è un server di sviluppo. Non utilizzarlo in una distribuzione di produzione. Utilizzare invece un server WSGI di produzione. * Modalità debug: attiva * In esecuzione su https://127.0.0.1:5000/ (premere CTRL+C per uscire) * Riavvio con stat * Il debugger è attivo! * PIN del debugger: 740-257-236

Ciò significa che il tuo server funziona correttamente sulla tua rete locale sulla porta 5000. Per rendere questo server accessibile dall'esterno della tua rete locale useremo ngrok

Inoltra IP locale a un indirizzo pubblico tramite ngrok

Vai alla directory in cui hai scaricato ngrok tramite CMD/terminal ed esegui il seguente comando:

ngrok http 5000

L'output dovrebbe essere qualcosa del genere:

ngrok di @inconshreveable (Ctrl+C per uscire)

Stato sessione online La sessione scade 7 ore, 59 minuti Versione 2.3.35 Regione Stati Uniti (us) Interfaccia Web https://127.0.0.1:4040 Inoltro _https://d44c955749bf.ngrok.io_ -> _https://localhost:5000_ Inoltro _https://d44c955749bf.ngrok.io_ -> _https://localhost:5000_ Connessioni ttl opn rt1 rt5 p50 p90 0 0 0,00 0,00 0,00 0,00

Copia il link HTTP dalla parte "Inoltro" (solo fino a ngrok.io). (Ho aggiunto il _ in questo esempio per evitare che possa essere intercettato come collegamento)

Configura Twilio per utilizzare il nuovo indirizzo per inoltrare la richiesta del server a:

Ora che abbiamo inoltrato con successo il nostro server per l'accesso pubblico, dobbiamo configurare Twilio in modo tale che quando viene effettuata una richiesta utilizzando l'API Twilio Whatsapp, inoltriamo la richiesta al nostro server. Per fare questo dobbiamo fare quanto segue:

  1. Vai alla sezione Whatsapp sulla Console di Twilio
  2. Vai alla sottosezione "Sanbox"
  3. Nella casella di testo "QUANDO ARRIVA UN MESSAGGIO" incolla il link HTTP da ngrok copiato con l'estensione /sms (NON COPIARE IL _ all'inizio e alla fine):

_https://d44c955749bf.ngrok.io/sms_

Ora tutto per il chatbot è pronto. Nella fase successiva, possiamo verificare se tutto funziona correttamente

Passaggio 5: prova la nostra applicazione

Prova la nostra applicazione
Prova la nostra applicazione
Prova la nostra applicazione
Prova la nostra applicazione
Prova la nostra applicazione
Prova la nostra applicazione

In questo passaggio faremo quanto segue:

  1. Unisciti al nostro bot utilizzando il codice di accesso
  2. Prova la nostra applicazione

Unisciti al nostro bot utilizzando il codice di accesso

In questo progetto, utilizzeremo il numero Sandbox Whatsapp di Twilio per il nostro bot Whatsapp. Per ogni persona, questo numero sarà diverso. Puoi trovare il tuo numero in questo modo:

  • Accedi al tuo account Twilio
  • Vai su Console Twilio -> Sezione Whatsapp -> Sandbox
  • Vedrai il tuo numero di Twilio Sandbox con il seguente testo:

Invita i tuoi amici nella tua sandbox. Chiedi loro di inviare un messaggio WhatsApp a:

A causa di una politica di sicurezza di Whatsapp, tutti coloro che desiderano parlare con un bot automatizzato tramite Whatsapp devono aderire esplicitamente utilizzando un codice. Puoi scoprire il tuo codice cercando nella stessa sezione del tuo numero sandbox Twilio con il testo:

Dopo aver acquisito il numero Whatsapp di Twilio Sandbox e il codice di attivazione, per iniziare a utilizzare il bot vai sul tuo telefono cellulare e procedi come segue:

  1. Salva il "Twilio Sandbox Whatsapp Number" sul tuo contatto con il nome che hai scelto (ad es. CovBot)
  2. Apri Whatsapp e invia il seguente messaggio a quel contatto:

aderire

Dovresti vedere un messaggio come questo:

Twilio Sandbox: È tutto pronto….

Ciò significa che ti sei connesso con il tuo bot e sei pronto a chiederlo qs

Prova la nostra applicazione:

Per testare le varie funzionalità del tuo bot dopo esserti connesso invia il seguente messaggio al bot:

Ciao

Dovresti vedere il seguente testo:

Benvenuto in CoVbot!

Un semplice chatbot in grado di fornire gli ultimi aggiornamenti di COVID-19 in modo semplice, rapido e facile. Dato che siamo tutti in quarantena, il bot può essere utilizzato per suggerire alcune attività divertenti per sfruttare al meglio il nostro tempo a casa mentre ci sforziamo di proteggere noi stessi, gli amici e la famiglia. Ci auguriamo che vi piaccia e che lo troviate utile! Invia 4 per iniziare!

Ora puoi seguire l'opzione per provare le diverse funzionalità del bot.

QUESTO È TUTTO! Il tuo Chatbot Whatsapp è pronto!!!! Congratulazioni

Passaggio 6: come funziona e miglioramenti futuri:

Come funziona e miglioramenti futuri
Come funziona e miglioramenti futuri
Come funziona e miglioramenti futuri
Come funziona e miglioramenti futuri
Come funziona e miglioramenti futuri
Come funziona e miglioramenti futuri
Come funziona e miglioramenti futuri
Come funziona e miglioramenti futuri

Questa sezione è per le persone che hanno una certa esperienza di programmazione Python. Se non lo fai puoi saltare questa sezione

Codice Spiegazione

Ciclo principale:

Quando un messaggio Whatsapp viene inviato al tuo numero Twilio, l'API Twilio effettua una richiesta POST al tuo server che hai specificato. Il server è implementato utilizzando il framework Flask e quindi possiamo utilizzare l'oggetto Flask Request per recuperare i dati ricevuti durante la richiesta POST. Sulla base dei dati (Numeri in questo caso) decidiamo quale opzione l'utente ha selezionato e forniamo le informazioni appropriate

Dati COVID e film e programmi TV:

I dati relativi a COVID 19, film e programmi TV vengono recuperati da un'API. Uso la libreria python di richiesta per ottenere i dati e quindi convertirli in un formato JSON. Quindi analizzo solo le informazioni pertinenti. Per i film e il programma TV, ho anche usato la libreria Python casuale per scegliere un programma TV e un film casuali

Dettagli del libro

L'algoritmo di suggerimento del libro utilizzato nel progetto è solo un web scraper. Non sono riuscito a trovare alcuna API che ti dia un libro casuale con i dettagli, quindi ho solo raschiato un sito Web usando BeautifulSoup4 e usando il parser lxml estraggo le informazioni rilevanti del libro

Dettagli sottomenu:

L'implementazione dei sottomenu è stata un po' più complicata rispetto agli altri poiché i messaggi Whatsapp sono come gli SMS che è un protocollo senza stato. Per risolverlo ho utilizzato due tecniche:

  1. Utilizzo delle variabili globali per ricordare lo stato del messaggio - Questo è implementato solo per l'opzione secondaria COVID 19. In questo, quando un utente seleziona "Stato dell'opzione COVID 19 nel mio paese", una variabile globale denominata incomplete_message viene impostata su True per indicare che è ancora necessario un altro messaggio basato sull'opzione precedente. Quindi c'è un controllo all'inizio che controlla se un messaggio è contrassegnato come incompleto, in tal caso, presuppone che il messaggio sia il nome del paese per i dati COVID e passa le informazioni alla funzione corretta e imposta la variabile globale messaggio incompleto su False
  2. Utilizzo dei cookie e delle sessioni di flask di Twilio - I cookie e le sessioni di flask vengono utilizzati nel sottomenu "Suggerisci un'attività di quarantena" per implementare lo stato, proprio come qualsiasi applicazione Web su Internet lo utilizza in questi giorni, ma invece di ricordare cose come il tuo nome utente o conto ricorda la conversione tra Due numeri. Se ti piacciono maggiori informazioni su questa parte ti consiglio di leggere questa fantastica guida sui biscotti Twilio scritta dal Team Twilio

Miglioramenti futuri:

  1. Sfrutta l'orientamento agli oggetti di Python e i modelli di progettazione per migliorare l'architettura del codice e la DRYness
  2. Rimuovi le variabili globali
  3. La gestione degli errori può essere migliorata
  4. Aggiorna automaticamente l'indirizzo ngrok usando mais e Twilio CLI
  5. Documentazione del codice

Passaggio 7: note finali

Spero che questo progetto vi piaccia. Questo è il mio primo istruibile, quindi se qualcosa non è chiaro o ha bisogno di ulteriori spiegazioni fammelo sapere nella sezione commenti e posso aiutarti. Inoltre, se hai realizzato questo progetto con una tecnica o un elenco di funzionalità diverso, condividilo tutti

Consigliato: