Magazine Opinioni

Bot di Telegram

Creato il 21 gennaio 2016 da Michelepinassi @michele_pinassi
Bot di Telegram

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.

They call me the Botfather, I can help you create and set up Telegram bots. Please read this manual before we begin:You can control me by sending these commands: /newbot - create a new bot
Alright, a new bot. How are we going to call it? Please choose a name for your bot. /token - generate authorization tokenGood. Now let's choose a username for your bot. It must end in `bot`. Like this, for example: TetrisBot or tetris_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:For a description of the Bot API, see this page: https://core.telegram.org/bots/api
0123456789:ABCDEFGHilMNoPqRstUvZ /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
https://core.telegram.org/bots

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:

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

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

Il nome utente deve terminare con "bot" pertanto inviamo " zerozone_bot ":

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 !


Ritornare alla prima pagina di Logo Paperblog

Magazine