Telegram è una delle piattaforme di messaggistica istantanea più utilizzate al mondo, eppure definirla così è profondamente sbagliato e ingiusto verso la stessa.
Telegram senza dubbio offre un sistema di messaggistica di tutto rispetto, ma offre anche la possibilità di creare gruppi, realizzare canali tematici, ma soprattutto di creare chatbot completamente gratis. Il bello e il potente di Telegram, parlando di embedded e Internet of Things, è proprio questo.
Creare assistenti virtuali in grado di comunicare con oggetti connessi, trasferire file, eseguire operazioni da remoto, eseguire pagamenti, processare immagini e note audio, per non parlare dell'integrare tutto questo assieme ad API, concedere in maniera gerarchica l'uso del chatbot e averne il pieno e totale controllo.
In questo articolo affrontiamo esattamente tutto questo.
Inutile dirlo: hai già capito dalla premessa iniziale che io stesso considero Telegram qualcosa di fenomenale. È giusto fare anche un'introduzione completa prima di capire appieno il suo potenziale illimitato da unire assieme al mondo embedded e IoT.
Prima di cominciare la nostra avventura mi presento: sono Lorenzo Neri, all'interno di Elettronica Open Source mi occupo di realizzare articoli come questo per permettere a persone come te di comprendere al meglio questo mondo e gestisco Makers Academy, la prima piattaforma online che ti permette di imparare tutto quello che ti serve per realizzare i tuoi progetti open source.
Come dicevo prima, facciamo una breve, ma importante introduzione al mondo di Telegram: se lo conosci puoi passare subito alla successiva 😉
Che cos'è Telegram?
Riporto la descrizione dal sito web ufficiale:
Telegram è un'applicazione di messaggistica focalizzata su velocità e sicurezza, è super rapida, semplice e gratuita. Puoi utilizzare Telegram con tutti i tuoi dispositivi contemporaneamente - i tuoi messaggi si sincronizzano istantaneamente su qualsiasi tuo smartphone, tablet o computer. Telegram ha più di 500 milioni di utenti attivi al mese ed è una delle 10 app più scaricate in tutto il mondo. Con Telegram, puoi inviare messaggi, foto, video e file di ogni tipo (doc, zip, mp3, etc.), così come creare gruppi fino a 200.000 membri o canali per diffondere messaggi a un pubblico illimitato. Puoi scrivere ai tuoi contatti telefonici e trovare persone tramite username. Come risultato, Telegram è come SMS ed email insieme - e si occupa di tutte le tue necessità di messaggistica, sia in ambito personale che aziendale. Inoltre, supportiamo le chiamate vocali con crittografia end-to-end.
A questo punto però, è giusto fare qualche aggiunta in più, per esempio...
Per chi è stato pensato Telegram e quali dispositivi possiamo usare?
Parlando dei dispositivi, puoi usare Telegram su smartphone, tablet e anche computer. Abbiamo applicazioni per iOS (9 e superiori), Android (4.0 e superiori) e Windows Phone. Puoi inoltre usare il client web di Telegram o installare una delle nostre applicazioni desktop per Windows, macOS e Linux.
Mentre per chi è stato pensato beh... Telegram è per chiunque voglia messaggiare in modo veloce e affidabile. Gli utenti business e i piccoli team potrebbero amare i gruppi estesi, le app desktop e le opzioni di condivisione file. Considerando che i gruppi di Telegram possono avere fino a 200.000 membri, supportiamo risposte, menzioni e hashtag che aiutano a mantenere in ordine e rendere efficienti le comunicazioni nei gruppi con molti membri.
Fino a questo punto capiamo che è davvero, ma davvero potente come piattaforma!
Prima però di arrivare al cuore del tutto, è giusto risolvere un'altra domanda che probabilmente ti riecheggia nella testa.
In che cosa Telegram differisce da Whatsapp?
Telegram si basa su diversi data center e un sistema di crittografia differente da Whatsapp che lo rende molto più sicuro e loro stessi non hanno segreti: te ne parlano direttamente qui.
È l'unica differenza? Assolutamente no. Telegram offre sincronizzazione istantanea fra i tuoi dispositivi. Che significa?
Puoi accedere ai tuoi messaggi da diversi dispositivi contemporaneamente, inclusi tablet e computer, e condividere un numero illimitato di foto, video, file (doc, zip, mp3, etc.) fino a 2 GB ciascuno. E se non vuoi salvare dati nel tuo dispositivo, puoi sempre tenerli nel cloud.
E qui, arriviamo al punto più cruciale, che finalmente ci porta ad uscire dalla parte introduttiva a quella "succosa" dell'articolo.
Telegram offre delle API completamente aperte: che permettono a sviluppatori o persone curiose come te di creare chatbot gratuitamente.
Cosa che Whatsapp non offre
Questo significa che, senza girarci attorno troppo, puoi creare tutto quello di cui stavamo parlando ad inizio articolo.
Perciò, andiamo con ordine e partiamo dalle API di Telegram
A che cosa ci servono le API di Telegram e come funzionano
Le API di Telegram, come da documentazione ufficiale, sono un insieme di metodi e funzionalità costruite secondo il paradigma RESTful e protocollo HTTP, che ti permettono di interagire con gli utenti Telegram, dare vita ai tuoi chatbot ed unirli ai tuoi potenziali oggetti connessi.
In parole molto meno tecnichesi, sono quel punto di Telegram che ti permette di leggere i messaggi e i file e le note audio e qualunque cosa il tuo chatbot riceve da parte degli utenti, ma non solo.
Tramite questi metodi, puoi fare altrettanto tu e rispondere ai tuoi utenti o nel caso a te stesso!
Questi metodi permettono di ricevere/inviare documenti, file, permettono di mettersi in comunicazione con oggetti e servizi esterni (magari hai un tuo sito web personale).
E tutto questo indipendentemente dal linguaggio di programmazione: puoi pressoché scegliere quello che desideri te.
A questo punto, capiamo che il punto cruciale che c'è fra Telegram e il mondo embedded e IoT sono proprio i chatbot.
Che cos'è un chatbot?
Definizione che esula molto dal mondo dell'elettronica, per questo l'ho voluta aggiungere direttamente dal mio blog personale:
Un chatbot è un insieme di codice scritto affinché sia in grado di comprendere le frasi scritte dagli umani e fare altrettanto per rispondere.
In altre parole, c’è di mezzo una tastiera che tu, essere umano, utilizzi per comunicare con il chatbot e uno schermo con il quale sei in grado di leggere ciò che il chatbot ti sta scrivendo!
Solitamente però, i chatbot non si limitano a rispondere e a comprendere le frasi che gli scriviamo: solitamente permettono di eseguire anche determinate operazioni.
Che operazioni può eseguire un chatbot Telegram?
Un chatbot Telegram, come operazioni può, tolto ovviamente il discorso di comprendere i messaggi umani e in certi casi le note vocali, può inviare/ricevere video, documenti stickers, tirare anche un dado e non meno importante permette di eseguire pagamenti sicuri con Stripe.
Arrivati a questo punto, è lecito fare chiarezza anche sull'architettura di un chatbot Telegram visto che è strettamente correlata al meccanismo delle API di Telegram stesso.
Come è fatta l'architettura di un chatbot Telegram?
Un chatbot Telegram di norma ha una struttura simile:
Abbiamo tre attori principali: il nostro dispositivo, i server Telegram e il dispositivo utente.
Rispettivamente, il nostro dispositivo, da intendersi come computer, Arduino, Raspberry Pi, eccetera, contiene il codice che regola il comportamento del nostro chatbot.
Funzionalità, riconoscimento di comandi, generazione di risposte, tutto.
A questo punto capiamo una cosa importantissima.
Telegram ci lascia il grande lusso di avere il controllo totale sul comportamento e la struttura del nostro chatbot.
E di fatto siamo noi a decidere per chi renderlo disponibile, quando renderlo accessibile e con quale linguaggio di programmazione crearlo!
Invece, i server Telegram sono sostanzialmente dove i dati risiedono e dove andarceli a prendere per mettere in comunicazione il chatbot con gli utenti Telegram.
Qui subentra il ruolo delle API.
Le API di Telegram permettono al chatbot di recepire i messaggi degli utenti, i loro contenuti e, di controparte, permettere a noi di rispondergli a seconda delle nostre esigenze. È in sintesi il ponte che permette di accedere ai dati e di creare comunicazione fra i due attori.
E di quale altro attore stiamo parlando a questo punto? Del dispositivo utente!
Il dispositivo utente non è nient'altro che il nostro cellulare, tablet, smartphone, computer in grado di usare sì Telegram, ma come pura piattaforma di messaggistica.
Del resto, qualcuno ci dovrà pur parlare con il nostro chatbot, no? 🙂
E arrivati a questo punto, finalmente capiamo che si apre lo scenario del mondo embedded e IoT: finalmente parliamone.
Telegram per il mondo embedded: che cosa ci possiamo fare?
Parto con una piccola cosa che all'interno di Elettronica Open Source abbiamo realizzato per l'Arduino Day 2021. Abbiamo realizzato una serie di video-lezioni con tanto di codice gratis che puoi trovare e scaricare qui affinché i nostri iscritti alla newsletter potessero creare un chatbot in grado di controllare lo stato di un LED e, ovviamente, accenderlo e spegnerlo!
Un buon motivo per iscriverti alla nostra newsletter: ti pare? 😀
Ovviamente, non c'è di mezzo solo un discorso di accendere o spegnere i LED, anche perché senza avere visivamente davanti a te qualcosa che te lo dimostri è un po' difficile, ma tranquillo.
Ti lascio qui sotto un piccolo spezzone di questo esempio, che nel caso puoi trovare completo sul nostro canale YouTube:
Oltre a ciò, vorrei condividerti un'altra variante.
Unendo l'aspetto embedded, possiamo far comprendere frasi più umane al nostro chatbot e in questo secondo esempio, ti vorrei mostrare come sia possibile farci dare la temperatura rilevata dal sensore usando frasi vere e proprie!-
Ci stiamo cominciando a fare un'idea molto più concreta di ciò che ci può offrire Telegram se usato nel mondo embedded, ma non siamo ancora arrivati a fondo.
Telegram usato nel mondo IoT: quanto è grande il suo potenziale?
Telegram non si limita solo a LED e un piccolo sensore, al contrario, come ti raccontavo qualche paragrafo fa puoi sfruttare il potenziale dei dati, delle API... Di potenza di calcolo.
Non posso che dare credito anche ad un articolo scritto da Stefano Lovati che trovi qui, ma ti voglio mostrare un altro esempio terra-terra.
Immagina di avere un sensore di temperatura che, in tempo reale, rileva una temperatura. Se questa temperatura raggiunge un valore troppo alto, il sistema ci scatta una foto in automatico e ce la manda direttamente sul nostro account Telegram tramite chatbot.
Può sembrare banale, ma pensa a tutti quegli scenari in cui in una situazione di emergenza più informazioni dettagliate abbiamo meglio è.
E quindi, perché non mostrarti tutto questo con un Raspberry Pi?
Tutto qui? No! Parliamo in modo ancora più approfondito anche dell'IoT inteso come rete di oggetti.
Telegram e rete MQTT: come sfruttare questo protocollo assieme ai chatbot Telegram
L'MQTT, il Message Queueing Telemetry Transport, è uno dei protocolli più comodi che ci sia all'interno dell'IoT.
Considerata l'architettura di cui parlavamo prima, ho un nodo Arduino che genera una temperatura tramite sensore.
Parallelamente, ho un Raspberry Pi che si occupa di gestire questo nodo più altri tramite MQTT: fa da broker.
Non solo: Raspberry Pi si occupa di eseguire il chatbot stesso.
In questo piccolo video, ti voglio mostrare come sia possibile ricevere in tempo reale la temperatura in base al topic e ricevere periodicamente un report in formato CSV ogni minuto direttamente su Telegram:
Arrivati a questo, vorrei parlarti anche un pò di server web, seppur non direttamente collegato all'Internet delle Cose... In prima battuta.
Server web, Internet of Things e Telegram: come sfruttare tutto questo?
Un server web, come ti dicevo prima, può sembrare di primo acchito totalmente svincolato dall'IoT.
Eppure, un server web torna parecchio comodo per tanti aspetti.
Il primo, è avere a tua disposizione un server personale, dove puoi salvare i dati provenienti da sensori e schede collegate in remoto: questo per esempio chi è iscritto a Making IoT lo sa bene!
A dire il vero, non ci si limita a questo, al contrario: si possono creare interfacce e pagine web personalizzate e utili ai propri scopi:
Questa tabella che vedi, riassume dei valori di un sensore salvati su database e mostrati direttamente da browser web.
A un certo punto però, possiamo avere una gran comodità: ottenere direttamente da Telegram tramite chatbot tutti questi dati in formato CSV.
Il chatbot, una volta inviatogli un messaggio, si occuperà di comunicare con le API del nostro sito web e inoltrarci il file CSV direttamente in chat, eccoti un esempio:
C'è anche un'altra cosa che possiamo fare con tutto quello di cui stiamo parlando: possiamo eseguire query MySQL direttamente da Telegram al nostro database.
Immagina di essere... Così pigro e svogliato da voler direttamente scrivere le query al chatbot, questo le inoltra tramite API al nostro web server e quest'ultimo si occupa di eseguirle su MySQL.
Tutto questo, anziché andare su PHPMyAdmin o qualunque altro sistema di gestione DB integrato sul tuo sito... Insomma una bella rottura in meno vero? 😀
Devo precisare però, che se non fai doverosa attenzione alla sicurezza ed a chi lo stai lasciando in mano, può diventare parecchio pericolosa questa "feature".
Tuttavia, ho il piacere di lasciarti un assaggio anche su questo:
Abbiamo visto parecchie cose! E ora...?
Arrivati a questo punto, manca un altro aspetto interessante che riguarda la voce degli utenti.
Possiamo comprendere la voce degli utenti Telegram che scrivono al chatbot?
E perché parlarne visto che siamo arrivati al punto di integrare e comprendere il potenziale di Telegram per l'IoT e il mondo embedded?
Perché permettere al chatbot di comprendere la voce umana, permette di liberarsi dal vincolo del testo: pensa a tutte quelle persone con problemi di vista.
E non per nulla, ho voluto rendere di pubblico dominio un chatbot che ho creato in grado di convertire le note vocali ricevute in messaggi di testo che puoi trovare qui.
Come poter scoprire tutto questo in modo completo al 100%?
Per esempio, puoi scoprire il percorso che ho realizzato per sfruttare il potenziale di Telegram per il mondo embedded e IoT! Come? Con un click qui: