Inbox/

Come creare un bot WhatsApp per liste di cose da fare con le Programmable Conversations API di Bird

Come creare un bot WhatsApp per liste di cose da fare con le Programmable Conversations API di Bird

Punti chiave

  • Le Programmable Conversations API di Bird unificano WhatsApp, Messenger e SMS in un unico livello di comunicazione, semplificando lo sviluppo di bot multicanale.
  • Puoi prototipare rapidamente un bot WhatsApp per liste di cose da fare usando webhook e semplici richieste POST.
  • Strumenti come ngrok permettono di esporre il server locale per testare i webhook senza configurazioni di hosting complesse.
  • API gestisce conversazioni su più canali, consentendo un'unica base logica per WhatsApp, WeChat e altre app.
  • Usa l'endpoint archiveConversation per chiudere le conversazioni o “topics,” ideale per il supporto o il tracciamento dei flussi di lavoro.
  • La logica del bot può gestire conversazioni concorrenti in memoria in modo sicuro con una semplice struttura dati.
  • Lo stesso handler del webhook funziona su tutti i canali: Bird instrada automaticamente le risposte in base all'ID della conversazione di origine.

Bird ha lanciato di recente le Programmable Conversations. Permettono alle aziende di integrare piattaforme di comunicazione come WhatsApp, Messenger e SMS nei propri sistemi, usando un'unica API.

Volevo provarle, così ho costruito un bot WhatsApp per liste di cose da fare, perché chi non ha bisogno di una to-do list automatizzata per organizzare la giornata? Può sembrare complicato, ma in realtà è stato facile, e voglio raccontarvi tutto.

Io lavoro in MessageBird, quindi ho potuto iniziare subito a costruire. Se volete provare, dovrete richiedere l'accesso anticipato. Una volta configurato un canale WhatsApp, potete accedere alla Dashboard sul sito MessageBird e iniziare.

Configurare l'ambiente per il bot WhatsApp

La prima cosa che ho fatto è stata leggere la documentazione. Ho scoperto che, per ricevere messaggi dal bot, avrei dovuto usare un webhook. Questo significava che il bot doveva essere raggiungibile da internet. Quando si costruiscono API di questo tipo, è importante seguire le best practice di versionamento delle API per la manutenibilità. Dato che stavo appena iniziando a scrivere il codice, ho deciso di usare ngrok. Crea un tunnel dalla rete pubblica verso il vostro amato localhost sulla porta 5007. Via!

ngrok http 5007 -region eu -subdomain todobot

Creare il webhook e collegare Bird

Poi dovevo fare una chiamata alle Programmable Conversations API per creare il webhook. È una POST a https://conversations.messagebird.com/v1/webhooks e ha un aspetto simile a questo:

Perfetto. Ora le Conversations API faranno una richiesta POST a:

https://todobot.eu.ngrok.io/create-hook ogni volta che viene creato un nuovo messaggio sul canale WhatsApp configurato in precedenza.

Ecco come appare il payload di un webhook:

Vogliamo rispondere a quei messaggi. Iniziamo facendo l'echo, che ne dite?

Inviare risposte e gestire i messaggi

Ora, la parte interessante. Fate una richiesta POST a:

https://conversations.messagebird.com/v1/conversations/<conversationID>/messages per rispondere alla richiesta.

Ecco fatto. Questo è tutto ciò che serve per creare un bot che si comporta come un bambino di 5 anni.

Ecco perché usare le Conversations API di Bird rende lo sviluppo di bot WhatsApp veloce e scalabile:

FunzionalitàProblema che risolve
ID conversazione unificatoMantiene un unico thread tra app come WhatsApp, WeChat, Messenger
Unica API per tutti i canaliRiutilizza la logica del bot senza riscriverla per ogni piattaforma
Automazione basata su webhookGestione rapida delle risposte senza polling
Archiviazione e riapertura dei topicOrganizza lo storico del supporto e i flussi di lavoro
Struttura concurrency-safeGestisce più chat contemporaneamente in modo affidabile

Ora facciamo un passo avanti e costruiamo la to-do list completa. Per prima cosa, modificate un po' la funzione createHookHandler in modo che chiami la nuova funzione handleMessage al posto di respond.

handle farà un parsing semplificato dei messaggi, eseguirà qualche operazione e sceglierà la risposta. Vediamo il comando “add”:

Qui impostiamo: list := manager.fetch(whp.Conversation.ID). In pratica, “manager” è una mappa concurrency-safe che associa gli ID delle conversazioni alle liste di cose da fare.

Una lista di cose da fare è uno slice di stringhe concurrency-safe. Tutto in memoria!

Archiviare le conversazioni e scalare il bot

Un'altra cosa importante: potete archiviare le conversazioni. In alcune applicazioni, come i CRM, è importante tenere traccia di certe interazioni, ad esempio per monitorare l'efficacia degli operatori del supporto clienti. Le Conversations API permettono di archiviare una conversazione per “close” il topic. Se l'utente/cliente invia un altro messaggio, le Conversations API apriranno automaticamente un nuovo topic.

Gestire il ciclo di vita delle conversazioni

Inoltre, una richiesta PATCH a https://conversations.messagebird.com/v1/conversations/{id} con lo status corretto nel body permette di archiviare la conversazione con quell'id. Lo facciamo con il comando “bye”:

archiveConversation eseguirà la richiesta PATCH e manager.close(whp.Conversation.ID) rimuoverà la conversazione della to-do list.

Ma le Programmable Conversations sono una soluzione omnicanale. E se voleste riutilizzare il codice del bot per una piattaforma diversa, come WeChat? Questo approccio multicanale fa parte della strategia di dirottamento delle richieste verso canali a costo inferiore. Come fare?

Basta creare un nuovo webhook che punti a quel canale! Un webhook che invii le richieste allo stesso URL https://todobot.eu.ngrok.io/create-hook usato per WhatsApp!

Funziona perché il codice dell'handler usa sempre il conversationID dal payload del webhook per rispondere ai messaggi, invece di un channelID hardcoded. Le Conversations API di MessageBird determineranno automaticamente il canale della conversazione su cui inviare il messaggio.

Volete costruire il vostro bot? Date un'occhiata al codice completo su Github: Wabot su Github, richiedete l'accesso anticipato a WhatsApp visitando la pagina WhatsApp e cliccando il pulsante Contact Sales per compilare il modulo. Buon botting!

Domande e risposte

Quanto è difficile costruire un bot WhatsApp usando le API di Bird?

È sorprendentemente facile. Con un webhook e poche chiamate API, potete costruire un bot funzionante che legge e risponde ai messaggi in pochi minuti.

Serve una configurazione speciale per ricevere i messaggi?

Sì: il bot deve essere raggiungibile da internet. Strumenti come ngrok creano un tunnel sicuro dalla vostra macchina locale.

Posso usare lo stesso codice per app di messaggistica diverse?

Assolutamente sì. Le Conversations API astraggono i canali, quindi il bot può funzionare su WhatsApp, WeChat o Messenger con la stessa identica logica.

Come faccio a chiudere o resettare un thread di chat?

Inviate una richiesta PATCH all'endpoint della conversazione con lo status appropriato per archiviarla. Qualsiasi nuovo messaggio aprirà automaticamente una nuova conversazione.

Dove posso trovare codice di esempio?

R: La demo funzionante completa, Wabot su GitHub, mostra l'implementazione della gestione dei messaggi, della concorrenza e dell'archiviazione.

La tua prossima idea.
Pronta a partire.