Taula de continguts:

CovBot: un Chatbot basat en WhatsApp per a informació i més sobre COVID 19: 7 passos
CovBot: un Chatbot basat en WhatsApp per a informació i més sobre COVID 19: 7 passos

Vídeo: CovBot: un Chatbot basat en WhatsApp per a informació i més sobre COVID 19: 7 passos

Vídeo: CovBot: un Chatbot basat en WhatsApp per a informació i més sobre COVID 19: 7 passos
Vídeo: Как устроена IT-столица мира / Russian Silicon Valley (English subs) 2024, De novembre
Anonim
Image
Image
Creeu un compte Twilio
Creeu un compte Twilio

CoVbot és un chatbot basat en Whatsapp senzill i intuïtiu. La principal característica del bot és:

Us pot proporcionar l’estat més recent de COVID-19 al país que trieu d’una manera senzilla i intuïtiva.

A més, el robot pot suggerir activitats divertides per fer A CASA, com ara:

  1. Suggereix una pel·lícula: una pel·lícula per veure de la llista de les 10 millors pel·lícules, amb una breu descripció general de la trama i la durada. Com que aquesta llista no està codificada en programari, sempre us proporcionarà les darreres actualitzacions basades en les tendències actuals.
  2. Suggereix un programa de televisió: un programa de televisió per veure dels programes de televisió més populars, amb una breu visió general de la trama i les valoracions. Com que aquesta llista no està codificada en programari, sempre us proporcionarà les darreres actualitzacions basades en les tendències actuals.
  3. Suggereix un llibre: un llibre per llegir de la llista de llibres Top 10, amb la imatge blurb i portada del llibre.
  4. Entrenaments diaris: es tracta d'un vídeo basat en un programa d'entrenament de 7 dies proporcionat per CRANK gym al seu compte d'Instagram.

Si us agrada aquest instructiu, considereu la possibilitat de votar-lo al concurs d’autors del primer article. (i sí, aquest és el meu primer instructiu, per tant, si alguna cosa no està clara o necessita més explicacions, si us plau, aviseu-me a la secció de comentaris i us puc ajudar:)

Subministraments

Aquest projecte és únicament un projecte basat en programari, de manera que qualsevol persona que segueixi aquesta instrucció amb un portàtil / PC d’escriptori / macOS / Linux i Internet pot completar aquest projecte. També inclouré una secció detallada al final per explicar el codi / procés amb més detall per a persones amb certa experiència en programació. Tingueu en compte que no és necessari per completar el projecte.

Nivell de dificultat del projecte:

No molt fàcil, però no molt dur

El maquinari que farem servir:

  • Un ordinador portàtil / escriptori amb Windows / macOS / Linux.
  • Un telèfon mòbil amb WhatsApp Messenger instal·lat

El programari que utilitzarem:

  1. Llenguatge de programació Python
  2. ngrok: és una eina que ens permet accedir al nostre servidor des de fora de la nostra xarxa
  3. Editor que trieu: (per exemple, Notepad ++, Sublime Text, Vim, etc.)

Pas 1: instal·leu el programari requerit

Image
Image

En aquest pas farem el següent:

  1. Instal·leu Python> 3.6 i proveu-lo
  2. Instal·leu les biblioteques python necessàries
  3. Instal·leu ngrok

Si teniu l'aplicació instal·lada, podeu ometre aquest pas

Instal·leu Python:

Tota la base de codis del servidor / fons per a aquest projecte està escrita a Python 3.6. Per tant, per executar les nostres aplicacions hem de tenir instal·lat Python> 3.6 al nostre ordinador. Seguiu el tutorial de CoreySchafer sobre com instal·lar Python per a Windows i macOS

Podeu provar que tot està instal·lat correctament escrivint el següent al cmd / Terminal:

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

Si tot s’ha instal·lat correctament, s’hauria d’imprimir Hello World a la pantalla. Si teniu un error de sintaxi no vàlid, teniu instal·lada la versió incorrecta de python. Instal·leu una versió de python> = 3.6

Instal·leu les biblioteques python necessàries mitjançant pip:

Utilitzarem les biblioteques python següents per fer funcionar el nostre programari:

  1. Flask: aquest és el marc del nostre servidor
  2. Twilio: aquesta biblioteca proporciona a Python una manera de comunicar-se amb WhatsApp
  3. Sol·licitud: aquesta biblioteca s’utilitza per sol·licitar dades de les API
  4. BeautifulSoup4: aquesta biblioteca s'utilitza per rascar informació de llocs web
  5. lxml: aquesta biblioteca s'utilitza en combinació amb BeautifulSoup per extreure la informació rellevant d'un lloc web

Per instal·lar aquestes biblioteques podeu fer el següent:

Obriu CMD / Terminal i escriviu l'ordre següent:

pip install flask, twilio, request, beautifulsoup4, lxml

O

Descarregueu el fitxer requirements.txt i obriu un terminal al directori on es troba el fitxer i escriviu:

pip install -r requirements.txt

Instal·leu ngrok

ngrok us permet exposar a Internet un servidor que s’executa a la vostra màquina local. Només cal que digueu a ngrok en quin port escolta el vostre servidor.

Segueix la guia del lloc web ngrok per instal·lar ngrok per al sistema operatiu que utilitzeu.

Consell: el pas 3 de la guia no és rellevant per a aquest projecte, de manera que es pot ometre

Pas 2: creeu un compte Twilio

En aquest pas farem el següent:

  1. Registreu-vos per obtenir un compte Twilio
  2. Introducció ràpida a seccions útils a la consola de Twilio

Registra't:

En aquest projecte, utilitzarem l’API Twilio Whatsapp per connectar el nostre programa python a Whatsapp. Per poder utilitzar l'API Twilio, primer hem de crear un compte al lloc web oficial de Twilio. Per a un compte de prova, Twilio ofereix un crèdit gratuït de 15 dòlars per utilitzar-lo.

Introducció ràpida:

Un cop hàgiu creat un compte, les seccions més interessants de la consola Twilio per a aquest projecte són:

Tauler: des del tauler, podeu veure la quantitat de crèdit que us queda, podeu editar el nom del projecte i canviar l'idioma de programació

Subsecció de Whatsapp a la secció SMS programable: des de la secció Whatsapp de la consola, podeu obtenir accés al codi de join del bot, el nombre de Whatsapp que farem servir al projecte per parlar amb el nostre bot i també la configuració del webhook. Es descriuran més detalls sobre tot això en els passos següents

Pas 3: Obteniu la clau API per a dades, pel·lícules i programes de televisió de COVID 19

Obteniu la clau API per a dades, pel·lícules i programes de televisió de COVID 19
Obteniu la clau API per a dades, pel·lícules i programes de televisió de COVID 19
Obteniu la clau API per a dades, pel·lícules i programes de televisió de COVID 19
Obteniu la clau API per a dades, pel·lícules i programes de televisió de COVID 19

Una clau API o clau d'interfície de programació d'aplicacions és un codi que passen a les aplicacions informàtiques. El programa o l'aplicació crida a l'API o a la interfície de programació d'aplicacions per identificar el seu usuari, desenvolupador o programa de trucades a un lloc web.

Utilitzem una API per obtenir informació sobre els darrers estats, pel·lícules i programes de televisió de COVID 19. Per accedir a l’API necessiteu una clau personal per a cada usuari. En aquest pas, obtindrem aquestes claus

Obteniu la clau API per a dades COVID 19:

  • Inicieu la sessió o registreu-vos al vostre compte de RapidAPI.
  • Després, aneu a l'API COVID-19 de Gramzivi
  • Desplaceu-vos cap avall fins a la secció "Paràmetres de capçalera" de la consola API.
  • La vostra clau d'API hauria de ser visible al camp "Clau X-RapidAPI".

Obteniu la clau API per a dades de pel·lícules i programes de televisió:

  • Inicieu la sessió o registreu-vos al vostre compte TMDB
  • Després, aneu a la vostra configuració: API
  • Desplaceu-vos cap avall fins a la secció "Clau API (autenticació v3)"
  • La vostra clau API hauria de ser visible a sota

Creeu un fitxer "config.py"

Ara crearem un fitxer config.py per emmagatzemar les nostres claus API. Creem un fitxer independent per a això, perquè les claus de l'API són informació confidencial i, si compartiu el vostre projecte, no hauríeu de compartir-la.

  • Creeu un directori de projectes nou
  • Dins del directori recentment creat, creeu un fitxer nou anomenat "config.py"
  • Editeu aquest fitxer amb un editor que escolliu (Sublim, Bloc de notes ++) i copieu i substituïu el text següent per informació rellevant obtinguda al pas anterior:

session_key = "secret" #Això no és segur.. però només està bé per provar-lo

rapid_api_key = "" api_key = ""

Deseu el fitxer

Pas 4: connecteu Python i Twilio a través de Ngrok

En aquest pas farem el següent:

  1. Baixeu-vos el codi font
  2. Executeu el programa i reenvieu la IP local a una adreça pública a través de ngrok perquè hi puguem fer una sol·licitud
  3. Configureu el nostre compte de Twilio per reenviar la sol·licitud al nostre servidor

Baixeu-vos el codi font del bot:

Baixeu-vos tot el fitxer adjunt d'aquesta configuració al directori del projecte creat a l'últim pas.

Executeu el programa:

Aneu al directori del codi font al terminal CMD / i executeu l'ordre següent:

python server_main.py

Assegureu-vos de tenir el "config.py" que vam crear en l'últim pas o, en cas contrari, obtindreu un error

La sortida hauria de ser una cosa així:

* Aplicació de servei Flask "server_main" (càrrega mandrosa)

* Entorn: producció AVÍS: Aquest és un servidor de desenvolupament. No l'utilitzeu en un desplegament de producció. Utilitzeu un servidor WSGI de producció. * Mode de depuració: activat * PIN del depurador: 740-257-236

Això significa que el servidor funciona correctament a la vostra xarxa local al port 5000. Per fer que aquest servidor sigui accessible des de fora de la vostra xarxa local, utilitzarem ngrok

Reenvieu la IP local a una adreça pública mitjançant ngrok

Aneu al directori on heu descarregat ngrok mitjançant CMD / terminal i executeu l'ordre següent:

ngrok http 5000

La sortida hauria de ser una cosa així:

ngrok per @inconshreveable (Ctrl + C per sortir)

Estat de la sessió en línia La sessió caduca 7 hores i 59 minuts Versió 2.3.35 Regió Estats Units (us) Interfície web https://127.0.0.1:4040 Reenviament _https://d44c955749bf.ngrok.io_ -> _https:// localhost: 5000_ Reenviament _https://d44c955749bf.ngrok.io_ -> _https:// localhost: 5000_ Connections ttl opn rt1 rt5 p50 p90 0 0 0.00 0.00 0.00 0.00

Copieu l'enllaç HTTP de la part "Forwading" (fins a ngrok.io). (He afegit el _ en aquest exemple per evitar que sigui instructiu interceptar-lo com a enllaç)

Configureu Twilio per utilitzar la nova adreça per reenviar la sol·licitud del servidor a:

Ara que hem reenviat amb èxit el nostre servidor per accedir-hi públicament, hem de configurar Twilio de manera que, quan es faci una sol·licitud mitjançant l'API Whatsapp de Twilio, enviem la sol·licitud al nostre servidor. Per fer-ho, hem de fer el següent:

  1. Aneu a la secció de Whatsapp de la consola de Twilio
  2. Aneu a la subsecció "Sanbox"
  3. Al quadre de text "QUAN ARRIBA UN MISSATGE" enganxeu l'enllaç HTTP de ngrok copiat amb l'extensió / sms (NO COPIEU EL _ al començament i al final):

_https://d44c955749bf.ngrok.io/sms_

Ara tot el chatbot està configurat. Al següent pas, podem provar si tot funciona correctament

Pas 5: proveu la nostra aplicació

Proveu la nostra sol·licitud
Proveu la nostra sol·licitud
Proveu la nostra sol·licitud
Proveu la nostra sol·licitud
Proveu la nostra sol·licitud
Proveu la nostra sol·licitud

En aquest pas farem el següent:

  1. Uniu-vos al nostre bot mitjançant el codi d’accés
  2. Proveu la nostra aplicació

Uniu-vos al nostre bot mitjançant el codi d’accés

En aquest projecte, utilitzarem el número de Sandbox de Whatsapp de Twilio per al nostre bot de Whatsapp. Per a cada persona, aquest número serà diferent. Podeu trobar el vostre número així:

  • Inicieu la sessió al vostre compte de Twilio
  • Aneu a Twilio Console -> Secció Whatsapp -> Sandbox
  • Veureu el número de Twilio Sandbox amb el text següent:

Convideu els vostres amics al vostre Sandbox. Demaneu-los que enviïn un missatge de WhatsApp a:

A causa d’una política de seguretat de Whatsapp, tothom que vulgui parlar amb un bot automatitzat mitjançant Whatsapp ha d’optar explícitament mitjançant un codi. Podeu esbrinar el vostre codi mirant a la mateixa secció que el número de sandbox de Twilio amb el text:

Després d’haver adquirit el número de WhatsApp Twilio Sandbox i el codi d’opció, per començar a utilitzar el bot, aneu al vostre telèfon mòbil i feu el següent:

  1. Deseu el "número de WhatsApp Twilio Sandbox" al vostre contacte amb el vostre nom (p. Ex., CovBot)
  2. Obriu Whatsapp i envieu el següent missatge a aquest contacte:

unir-se

Hauríeu de veure un missatge com aquest:

Twilio Sandbox: Estàs a punt …

Això vol dir que us heu connectat amb el bot i esteu a punt per preguntar-li qs

Proveu la nostra aplicació:

Per provar les diverses funcions del vostre bot després de connectar-vos, envieu el següent missatge al bot:

Hola

Hauríeu de veure el text següent:

Benvingut a CoVbot!

Un xatbot senzill que pot proporcionar les darreres actualitzacions de COVID-19 d’una manera senzilla, ràpida i senzilla. Com que tots estem en quarantena, el bot es pot utilitzar per suggerir algunes activitats divertides per aprofitar al màxim el nostre temps a casa mentre ens esforcem per protegir-nos a nosaltres mateixos, amics i familiars. Esperem que el gaudiu i el trobeu útil. Envia 4 per començar.

Ara podeu seguir l'opció de provar les diferents funcions del bot.

AIXÒ ÉS! El vostre Chatbot de Whatsapp està a punt !!!! Enhorabona

Pas 6: Com funciona i millora futura:

Com funciona i millora del futur
Com funciona i millora del futur
Com funciona i millora del futur
Com funciona i millora del futur
Com funciona i millora del futur
Com funciona i millora del futur
Com funciona i millora del futur
Com funciona i millora del futur

Aquesta secció és per a persones amb experiència en programació de pitó. Si no, podeu ometre aquesta secció

Explicació del codi

Bucle principal:

Quan s’envia un missatge de Whatsapp al número del vostre Twilio, l’API Twilio fa una sol·licitud POST al vostre servidor que heu especificat. El servidor s’implementa mitjançant el marc Flask i, per tant, podem utilitzar l’objecte Flask Request per recuperar les dades rebudes durant la sol·licitud POST. A partir de les dades (números en aquest cas) decidim quina opció ha seleccionat l’usuari i donem la informació adequada

Dades i pel·lícules i programes de televisió COVID:

Les dades de COVID 19, pel·lícules i programes de televisió es recuperen d’una API. Utilitzo la biblioteca Python de sol·licitud per obtenir les dades i després les converteixo en un format JSON. A continuació, només analitzo la informació rellevant. Per a les pel·lícules i el programa de televisió, també he utilitzat la biblioteca aleatòria de python per triar un programa de televisió i una pel·lícula a l’atzar

Detalls del llibre

L’algoritme de suggeriments de llibres utilitzat en el projecte és només un rascador web. No he pogut trobar cap API que us proporcioni un llibre a l'atzar amb detalls, així que acabo de rascar un lloc web mitjançant BeautifulSoup4 i, mitjançant l'analitzador lxml, extreixo la informació rellevant del llibre

Detalls del submenú:

La implementació dels submenús va ser una mica més complicada que la resta, ja que els missatges de Whatsapp són com SMS, que és un protocol sense estat. Per resoldre això, he utilitzat dues tècniques:

  1. Ús de variables globals per recordar l’estat del missatge: això només s’implementa per a la subopció COVID 19. Quan un usuari selecciona l'opció "Estat de COVID 19 al meu país", una variable global anomenada incomplete_message s'estableix en True per indicar que encara es necessita un altre missatge basat en l'opció anterior. A continuació, hi ha una comprovació al començament que comprova si un missatge està marcat com a incomplet, si és així, assumeix que el missatge és el nom del país per a les dades COVID i passa la informació a la funció correcta i estableix la variable global missatge incomplet a False
  2. Ús de galetes i sessions de Flask de Twilio: les galetes i les sessions de Flask s’utilitzen al submenú "Suggereix una activitat de quarantena" per implementar l'estat, tal com ho fa qualsevol aplicació web d'Internet en aquests dies, però en lloc de recordar coses com el vostre nom d'usuari o compte, recordeu la conversió entre dos números. Si voleu obtenir més informació sobre aquesta part, us recomano llegir aquesta impressionant guia sobre les cookies de Twilio escrita per l’equip de Twilio

Millores futures:

  1. Feu ús de l’orientació a objectes de Python i els patrons de disseny per millorar l’arquitectura de codi i el DRYness
  2. Elimineu les variables globals
  3. El tractament d’errors es pot millorar
  4. Actualitzeu automàticament l'adreça ngrok mitjançant blat de moro i Twilio CLI
  5. Documentació del codi

Pas 7: notes finals

Espero que aquest projecte us agradi a tots. Aquesta és la meva primera instrucció, per tant, si alguna cosa no està clara o necessita més explicacions, feu-m'ho saber a la secció de comentaris i us puc ajudar. A més, si heu fet aquest projecte amb una altra tècnica o llista de funcions, compartiu-lo tots

Recomanat: