Bot Telegram: cosa sono, a cosa servono e come crearli

Una guida ai bot Telegram: come funzionano e come si creano. Un esempio pratico di script PHP che permette di rispondere ai quesiti dell'utente.

Chi un tempo utilizzava il protocollo IRC (Internet Relay Chat) per chattare in Internet si ricorderà certamente dei cosiddetti bot, script o programmi indipendenti che si collegavano al server per effettuare una serie di operazioni in modo del tutto automatizzato.

I bot di Telegram sono delle vere e proprie applicazioni che possono eseguire attività di ogni genere.
È possibile interagire con loro come si farebbe con qualunque altro contatto tenendo però presente che le risposte ricevute non saranno fornite da una persona in carne ed ossa ma elaborate lato server e quindi offerte in maniera automatizzata.

Esistono centinaia di bot Telegram tra i quali è possibile scegliere. Qualche esempio:

@gmailbot consente di interagire con i messaggi di posta elettronica Gmail senza abbandonare l’interfaccia di Telegram.
@the_weather_info_bot per ottenere informazioni sullo stato del tempo e previsioni meteo in base alla località o alle coordinate GPS fornite.
@ifttt il bot che permette di mettere in comunicazione diretta Telegram con IFTTT. In questo modo sarà possibile gestire le proprie applet e pianificare operazioni da eseguire in automatico o su richiesta. Utile anche per la smart home.

I bot di Telegram sono generalmente sicuri ma è comunque bene tenere presente che essi possono comunque accedere al nome pubblico e alla foto del profilo oltre, ovviamente, al contenuto dei messaggi scambiati con il bot stesso.

È bene sottolineare che tranne BotFather, il padre di tutti i bot (riservato principalmente agli sviluppatori, come vedremo più avanti), gli altri bot che si attivano e si utilizzano non sono realizzati da Telegram. I dati che si conferiranno al bot verranno quindi trasferiti verso server di terze parti (non stabilibili a priori) che potranno anche memorizzarli e rielaborarli in un secondo tempo.

Telegram è un servizio di messaggistica basato sul cloud: quando si spedisce un messaggio a qualcuno i server di Telegram ricevono la comunicazione e la smistano verso la chat appropriata.
La messaggistica basata sul cloud permette agli utenti di accedere alle loro chat da diversi dispositivi, anche contemporaneamente.
Ogni volta che si invia un messaggio a un bot, Telegram notifica a un URL particolare chiamato webhook che è disponibile un aggiornamento da gestire.
Il webhook è uno script che risiede su un server di terze parti e che riceve la richiesta da elaborare da parte dei server di Telegram. Offre quindi una risposta che verrà poi automaticamente trasmessa al client ovvero all’utente che sta usando l’app Telegram.

Come aggiungere un bot Telegram e rimuoverlo quando non serve più

Per aggiungere un bot in Telegram basta toccare l’icona in alto a destra raffigurante una lente d’ingrandimento. Nella casella di ricerca in alto si dovrà digitare @ seguito dal nome del bot che si intende aggiungere (la coccarda di colore blu indica che si tratta di un bot verificato da Telegram).

Premendo il pulsante Avvia in basso si può iniziare a interagire con il bot utilizzando i comandi previsti.
I comandi iniziano con una barra ( / ) e ad essi è possibile far seguire la richiesta che si vuole inviare al bot Telegram.

Toccando l’icona della barra ( / ) in basso a destra si può ottenere la lista dei comandi che il bot è in grado di interpretare.

Per bloccare ogni interazione con un bot basta tenere premuto sul suo nome quindi toccare l’icona raffigurante l’icona del cestino. Come ultimo passo bisognerà toccare Elimina chat. I bot che possono compiere anche delle azioni in background e quindi non soltanto su richiesta dell’utente hanno anche la voce Arresta bot nel menu accessibile premendo i tre puntini in alto a destra. In questi casi è importante selezionare prima Arresta bot quindi eliminare il bot Telegram.

Va comunque tenuto presente che i bot sono in continua evoluzione. Trattandosi di applicazioni sviluppate da terze parti non c’è alcuna garanzia che possano restare disponibili nel corso del tempo o conservare le funzionalità disponibili inizialmente.

Come creare un bot Telegram

Creare un nuovo bot Telegram è molto semplice a patto di disporre di un minimo di esperienza in fatto di programmazione.

Per iniziare basta cercare @botfather, aggiungerlo quindi digitare /newbot.

Si accederà a una procedura automatizzata che permette di definire il nome pubblico col quale il bot dovrà essere individuabile e l’identificativo univoco dello stesso (la stringa che appare dopo il simbolo @).

Al termine della procedura Telegram fornirà un token che dovrà essere utilizzato dal webhook.

Si tratta di una sorta di “lasciapassare” che consente allo sviluppatore di interagire con il bot da egli stesso creato.

Disponendo di un servizio cloud in grado di supportare gli script PHP (basta anche un semplice hosting) creiamo una nuova cartella \telegram-bot e vi inseriamo un file chiamato bot.php. Questo il codice:

<?php
$path="https://api.telegram.org/botTOKEN_TELEGRAM";
$content = file_get_contents("php://input");
$update = json_decode($content, true);

$chatid=$update["message"]["chat"]["id"];
$message=$update["message"]["text"];

if (strpos($message, "/tempo") === 0) {
$luogo=substr($message,7);

$tempo=json_decode(file_get_contents("https://api.openweathermap.org/data/2.5/weather?q=".$luogo."&appid=KEY_OPEN_WEATHER&lang=it"), TRUE)["weather"][0]["description"];
file_get_contents($path."/sendmessage?chat_id=".$chatid."&text=Ecco il tempo a ".$luogo.": ".$tempo);
}
?>

Ciascun aggiornamento che il webhook invia al bot Telegram può contenere diversi tipi di informazioni: messaggi di testo, messaggi vocale, video o documento soltanto per citarne alcuni.
Lo script PHP di esempio riceve in ingresso un messaggio contenente il comando /tempo seguito dal nome di una località.
Il nome della località viene in questo caso trasmesso al servizio OpenWeatherMap usando le sue API.
Come ultimo passo viene legga la risposta JSON ricevuta da OpenWeatherMap e passata alla API di Telegram.

Per provare lo script basta registrarsi gratis su OpenWeatherMap quindi sostituire KEY_OPEN_WEATHER con la chiave alfanumerica restituita dal servizio nella sezione API keys.

Da ultimo, basterà sostituire TOKEN_TELEGRAM con il token fornito in precedenza da @BotFather.
È importante evidenziare che nella riga $path="https://api.telegram.org/botTOKEN_TELEGRAM; il token di Telegram deve essere incollato subito dopo la stringa bot senza lasciare alcuno spazio.

Inoltre, la chiave di OpenWeatherMap non è immediatamente attiva dopo la registrazione: tipicamente trascorrono 15 minuti dalla creazione prima che possa essere utilizzata. Diversamente si otterrà l’errore “Invalid API key (401)“: basterà soltanto attendere qualche minuto affinché tutto funzioni.

Come ultimo passo bisognerà informare Telegram sul webhook associato allo specifico bot. Per procedere basta incollare quanto segue nella barra degli indirizzi del browser:

https://api.telegram.org/botTOKEN_TELEGRAM/setwebhook?url=https://nomedominio-test.org/telegram-bot/bot.php

Al posto di TOKEN_TELEGRAM va di nuovo sostituito il token offerto in precedenza da @BotFather.
L’indirizzo https:// finale è invece l’URL completo dello script caricato sul proprio servizio cloud o sulla piattaforma online in grado di gestire file PHP.
Si otterrà in risposta il seguente messaggio da parte di Telegram:

{"ok":true,"result":true,"description":"Webhook was set"}

Dalla finestra della conversazione di @BotFather su Telegram si può digitare /mybots quindi toccare sul nome del bot Telegram appena creato e ancora una volta sull’etichetta @ seguita dal nome del bot.

Premendo Avvia e digitando /tempo seguito dal nome di una località, si riceveranno le informazioni sullo stato del cielo.

Sempre inviando il comando /mybots a @BotFather si potranno gestire tutti i propri bot con la possibilità di eliminare quelli creati in precedenza.

L’esempio citato è piuttosto “grezzo”: è ovviamente possibile migliorarlo aggiungendo ulteriori funzionalità e inserendo il pulsante / con la lista dei comandi disponibili. Per maggiori informazioni è possibile consultare le pagine ufficiali Telegram dedicate agli sviluppatori.

Ti consigliamo anche

Link copiato negli appunti