Bot di Telegram

Attenzione ! Questo articolo è stato scritto più di due anni fa. Ti prego quindi di considerare che le informazioni riportate potrebbero non essere aggiornate o non più valide.

In questi giorni ho voluto iniziare a sperimentare una nuova interessantissima funzionalità di Telegram, il sistema di chat istantanea alternativo al più blasonato WhatsApp: i BOT.

Come dalla descrizione reperibile sulla pagina della Telegram Bot Platform

Bots are simply Telegram accounts operated by software – not people – and they’ll often have AI features. They can do anything – teach, play, search, broadcast, remind, connect, integrate with other services, or even pass commands to the Internet of Things.

Tecnicamente parlando, si tratta di programmi che fanno cose in modo automatizzato, a seguito di richiesta degli utenti. Per testarne le funzionalità sono già stati implementati svariati bot, come il @TriviaBOT, che può essere interrogato dopo aver installato il client di Telegram, disponibile per tutte le piattaforme mobili, web ed anche client desktop.

L’aspetto che rende i bot veramente interessanti è l’infinita varietà di servizi realizzabili sfruttando una infrastruttura agile ed efficiente già diffusa tra gli utenti, senza dover necessariamente reinventare la ruota per l’ennesima volta: come per una qualsiasi chat, l’utente inizia la conversazione con il nostro bot e segue le indicazioni a video…

Preparare la piattaforma per il BOT

Forse lo scoglio principale per implementare con successo un bot sta nella disponibilità della piattaforma dove ospitarne il programma. Telegram accetta solo piattaforme https (con protocollo SSL) e devo ammettere che questo mi ha causato non poche difficoltà per alcune peculiarità che vi spiegherò dopo. Comunque, nel mio caso, ho ospitato l’Hello Bot su un server Debian con Apache e mod_ssl (OpenSSL), avendo cura di seguire queste istruzioni per permetterne il funzionamento:

Apache HTTP Server – SSL Certificate Installation

in particolare attenzione a questo:

Note: As of Apache 2.4.8, the SSLCertificateChainFile directive was deprecated and SSLCertificateFile was extended to support intermediate certificates. Adding the intermediate certificate to the end of your certificate will create a chain file for your server.”

pertanto è stato sufficiente concatenare la chain dei certificati intermedi al certificato del mio server con un semplice “cat cert.pem cert-chain.pem > cert-complete.pem” e nella configurazione:

SSLCertificateFile /path/to/cert-complete.pem
SSLCertificateKeyFile /path/to/cert-privatekey.key

Fatto questo passaggio, basterà copiare il file PHP dell’HelloBot da qualche parte della root del server Apache2.

Informare Telegram del nostro BOT

Una volta identificata la piattaforma di hosting e relativo URL, il nostro BOT deve essere configurato e, soprattutto, segnalato a Telegram. Qui entra in gioco BotFather (scherzosamente ripreso dal film “Il Padrino“), contattabile ovviamente via Telegram a @BotFather. Una volta aperta la comunicazione, la descrizione dei comandi da inviare è abbastanza chiara:

They call me the Botfather, I can help you create and set up Telegram bots. Please read this manual before we begin:
https://core.telegram.org/bots

You can control me by sending these commands:

/newbot – create a new bot
/token – generate authorization token
/revoke – revoke bot access token
/setname – change a bot’s name
/setdescription – change bot description
/setabouttext – change bot about info
/setuserpic – change bot profile photo
/setinline – change inline settings
/setinlinefeedback – change inline feedback settings
/setcommands – change bot commands list
/setjoingroups – can your bot be added to groups?
/setprivacy – what messages does your bot see in groups?
/deletebot – delete a bot
/cancel – cancel the current operation

In questa prima fase ci interessa creare il nostro nuovo bot. Scriviamo pertanto /newbot:

Alright, a new bot. How are we going to call it? Please choose a name for your bot.

Inviamo il nome del nostro BOT, ad esempio “Zerozone“:

Good. Now let’s choose a username for your bot. It must end in `bot`. Like this, for example: TetrisBot or tetris_bot.

Il nome utente deve terminare con “bot” pertanto inviamo “zerozone_bot“:

Done! Congratulations on your new bot. You will find it at telegram.me/zerozone_bot. You can now add a description, about section and profile picture for your bot, see /help for a list of commands.

Use this token to access the HTTP API:
0123456789:ABCDEFGHilMNoPqRstUvZ

For a description of the Bot API, see this page: https://core.telegram.org/bots/api

Fatto ! Il nostro BOT è adesso creato sul sistema di Telegram. Prendiamo subito nota del token di accesso che dobbiamo copiare pari pari nella prima riga del codice del programma HelloBot:

define('BOT_TOKEN', '[il token di accesso ricevuto]);

Prima di continuare dobbiamo però impostare il “webhook”, che vediamo nel paragrafo successivo…

Configurare il nostro BOT per dialogare con Telegram

Una volta ottenuto il Token di accesso alle API di Telegram, dobbiamo informare Telegram dell’URL dove si trova il codice che dovrà eseguire il nostro BOT. In pratica, l’URL dove Telegram “rimbalzerà” tutte le comunicazioni che gli utenti invieranno al nostro bot, il cosiddetto “webhook“. Questa è una delle due strategie di comunicazione possibili: l’altra è il “polling“, ovvero sarà onere nostro eseguire periodicamente il nostro BOT per controllare se sul server c’è “posta per noi“.

Per questa prova scegliamo la soluzione on-demand, ovvero che il nostro BOT viene eseguito solo quando arriva un messaggio. Pertanto devo informare Telegram qual’è l’URL dove recapitare i messaggi in arrivo. Più o meno alla riga 141 trovate questo:

define('WEBHOOK_URL', 'https://[il mio sito]/bot.php');

che dovremmo impostare con l’URL completo del nostro bot. Se tutto è andato bene, adesso il nostro BOT è pronto per dialogare con il mondo.

“Hello” Bot !

Il codice del nostro HelloBot è piuttosto semplice ma rende bene l’idea di come funziona il sistema e permette di effettuare alcuni esperimenti senza dover impazzire troppo. La funzione chiave del sistema di interazione tra il bot e gli utenti è la funzione “processMessage”, che riceve il messaggio e reagisce come programmato. Nella versione originale il nostro bot reagisce ai comandi base “/start“, “Hello” e “Hi“.

Proviamo pertanto da Telegram a verificarne il funzionamento aprendo una chat con @zerozone_bot. Il sistema automaticamente invia il comando “/start“, che serve per informare il nostro bot che qualcuno ha appena intrapreso una conversazione con lui.

A questo punto potete scatenare la fantasia e sviluppare il vostro bot di successo !

 

 

 

 

Michele Pinassi

Nato a Siena nel 1978, dopo aver conseguito il diploma in "Elettronica e Telecomunicazioni" e la laurea in "Storia, Tradizione e Innovazione", attualmente è Responsabile del Sistema telefonico di Ateneo presso l'Università degli Studi di Siena ed esperto di sicurezza informatica nello staff del DPO. Utilizza quasi esclusivamente software libero.

Potrebbero interessarti anche...

3 Risposte

  1. Matteo Totaro ha detto:

    Complimenti per l’articolo Michele, l’unica cosa che non riesco a fare è abilitare il webhook. Ho un dominio con un certificato autofirmato installato dal mio hoster (che posso comunque gestire via cPanel), hai qualche consiglio da darmi?

    • Michele ha detto:

      Ciao Matteo, per i certificati self-signed devi seguire la procedura di caricamento indicata qui: https://core.telegram.org/bots/self-signed

      Buon divertimento !

      • Matteo Totaro ha detto:

        Grazie per la risposta Michele, l’hoster mi ha comunque fornito un semplice file .txt fatto in questo modo:

        —–BEGIN CERTIFICATE REQUEST—–

        —–END CERTIFICATE REQUEST—–

        —–BEGIN CERTIFICATE—–

        —–END CERTIFICATE—–

        —–BEGIN RSA PRIVATE KEY—–

        —–END RSA PRIVATE KEY—–

        A questo punto non riesco a capire come fornire il certificato insieme all’indirizzo (tramite il metodo setWebhooks) per abilitare il web hook…

Rispondi

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.

%d blogger hanno fatto clic su Mi Piace per questo: