ChatBot : Gli strumenti (3)

Ma quali sono gli strumenti necessari per realizzare un chatbot ?

Prima di tutto serve un chat con cui comunicare con l’utente e su questo si sono attivati tutti : Facebook Messenger, Microsoft Skype, Slack, Telegram e Google Allo.

Ogni azienda ha sfruttato al meglio i propri prodotti cercando di mantenere una propria strategia coerente. Facebook ha impostato la conversazione dentro il proprio messenger sia web che mobile ma non in Whatsapp.

Facebook messenger

Microsoft consente di creare dei bot su Skype rivolti alle aziende appoggiandosi alla sua infrastruttura di Azure, Google integra funzionalità di ricerca tipiche del suo motore puntando sia al client Allo, da poco disponibile sugli store, che Google Home. Amazon offre servizi per il linguaggio naturale per sviluppare applicazioni per Alexa ed Echo, il suo dispositivo multifunzione simile a Google Home.

Skype

Se non siete dei programmatori o volete fare qualche esperimento vi consiglio delle webapp realizzate da diverse startup che in modalità visuale permettono di gestire delle conversazioni e integrare anche dei servizi esterni :

  • https://www.gupshup.io/developer/home
  • http://www.converse.ai/
  • https://flowxo.com/
  • http://msg.ai/#features
  • https://recast.ai/
Ma noi siamo dei programmatori per cui ci orienteremo verso strumenti di sviluppo.

Nei post che seguiranno vedremo un esempio basato su Facebook Messenger la cui documentazione in italiano la trovate a questo link.

Il bot all'interno del Messenger comunica con l’utente sia con il testo che con elementi di interfaccia che semplificano e guidano l’utente verso scelte definite. Vediamo nel dettaglio quali sono e come funzionato :

I punti di ingresso sono importanti per iniziare la conversazione con il Bot. Ne esistono diversi come un pulsante da inserire nelle pagine web, un evento che viene attivato quando l’utente si collega la prima volta al Bot o delle frasi da intercettare come “Ciao”,”Buongiorno”,”Come va?”

Nel discorso tra Bot e umano è importante indirizzare il discorso verso l’obiettivo del Bot. Non dobbiamo mai dimenticare che i Bot sono specializzati, vengono creati per assolvere un compito. Progettarli per fare inutili chiacchierate è controproducente. Per questo motivo sono utilissime le “Quick replay” che consigliano all'utente le possibili risposte.

Nel caso in cui la conversazione arriva ad un punto morto possono essere usate per attivare di nuovo la conversazione.

Il Messenger offre poi diversi pannelli che possono essere usati per :

  • mostrare una gallery di elementi con testo, immagine, pulsanti
  • scelta di opzioni
  • lista di notizie
  • ricevuto di un pagamento
  • webview ( mini browser )

Inoltre il Bot può inviare all’utente link, allegati con immagini, testo, audio e video. Questo tipo di elementi sono utili in caso di invio schedulato o differito, quando ad esempio gli viene chiesto un report, una podcast o un video presente in archivio.

L’umano può inviare oltre al testo della conversazione anche : la posizione del dispositivo, una foto appena scattata o un’immagine presente nella gallary.

Questi elementi arriveranno al Bot sotto forma di link da dove scaricare il file binario.

Di seguito alcune schermate del Bot Winston che utilizzano questi elementi di interfaccia.

In queste schermate si notano alcune soluzione adottate per intercettare la conversazione utente con quick replay e per creare una iniziale empatia tra uomo e macchina.

Nella terza schermata usando l’informazione dell’utente ( gender, first_name) del profilo Facebook ho creato la frase “Sig. Gianfranco” che può diventare “Sig.ra Maria” utilizzando l’informazione del gender. La frase “Buon giorno/Buon pomeriggio/Buona sera” dipende dall’ora corrente.

Per aggiungere le funzioni di comprensione del linguaggio naturale ho utilizzato il servizio API.AI disponibile anche in un plan gratuito e facilmente integrabile su nodejs.

API.AI è una startup recentemente acquisita da Google mentre ho scartato per ora wit.ai , startup acquisita da Facebook, perchè non ha un supporto soddisfacente della lingua italiana.

Lo schema generale delle interazioni tra i vari sistemi è abbastanza semplice. L’utente interagisce con la chat di Messenger che interroga un servizio http ( WebHook ), in questo caso scritto in nodejs e ospitato su heroku.

Questo servizio passerà le frasi utente a API.AI per ricevere delle strutture json con i parametri e le azioni da intraprendere.

In base ai parametri verranno inviate delle risposte o letti i dati sul DB.

Setup su Facebook

Il bot va creato come app e legato ad una pagina della piattaforma social impostando una url esterna ( Webhooks ) che risponderà a tutte le interazioni utente con messaggi e strutture più complesse.

Vedremo in seguito come sviluppare un servizio che risponde alle chiamate sui webhook ma va detto che facebook obbliga ad usare il protocollo https sia per lo sviluppo che per la produzione.

In entrambi i casi ci sono soluzioni gratuite come ngrok.com e heroku.com. Il primo servizio offre nella sua modalità gratuita un client che lanciato sul computer di sviluppo rende disponibile una url esterna sia in http che https.

Questa url può essere impostata sulla dashboard di Facebook per sviluppare il Bot. A questo proposito consiglio di creare due applicazioni, una per lo sviluppo e uno per la produzione. La prima con la url che punta al proprio computer mentre l’altra al server dove è installata la versione definitiva. Un servizio gratuito che permette di erogare un’applicazione in Node.js con https è appunto Heroku.com che tra le tante interessanti possibilità consente di allineare il software via DropBox.

Uno dei principali problemi nel colloquio con un Bot è come iniziare la conversazione, sopratutto la prima volta. In questo Facebook mette a disposizione diversi punti di ingresso e per le funzioni più importanti anche un menù di voci da usare anche per modificare eventuali impostazioni sull’invio delle notifiche.

Questi sistemi consentono di inviare gli stessi elementi della conversazione anche con task schedulati usando l’id dell’utente. In questo modo si possono creare servizi con push notification ma sempre all’interno del Messenger.

One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.