Da non molto tempo, ho scoperto che Telegram offre una comoda API per programmare i cosiddetti BOT, ovvero delle entità "non umane" che possono essere inserite in gruppo Telegram e interagire con il resto dei membri attraverso delle azioni che possono essere programmaticamente descritte. Ad esempio, è possibile creare un BOT che risponde al comando /classifica inviando un messaggio con la classifica aggiornata delle Serie A (esempio banale!).
La logica di base è piuttosto semplice:
1) Si registra il Bot su Telegram attraverso... un altro Bot (denominato BotFather) che è responsabile per i settaggi principali del Bot stesso (nome, descrizione, immagine profilo, elenco comandi...);
2) Si indica a Telegram, mediate una REST call, l'indirizzo del server da contattare (tipicamente sotto il nostro controllo) tutte le volte che ci sono messaggi per il Bot;
3) Si programma la logica che il Bot deve realizzare ovvero l'insieme di azioni da intraprendere alla ricezione di un messaggio.
Si noti che il Bot può funzionare in due modalità:
- PRIVACY abilitata: il Bot riceve solo i messaggi che iniziano con / (simbolo che indica per convenzione l'inizio di un comando destinato ad un Bot) oppure messaggi in cui il Bot è taggato esplicitamente mediante @.
- PRIVACY disabilitata: il Bot riceve tutti i messaggi inviati nei gruppi di cui fa parte.
Quando c'è un messaggio per il nostro Bot, Telegram contatterà il server specificato al punto 2 attraverso una POST HTTP. Inutile dire che il server che ospita il Bot può essere costruito con le tecnologie e i linguaggi desiderati (ad es. Apache Web Server + PHP oppure Apache Tomcat + Java Servlet e così via). Unica nota: è necessario che il server supporti HTTPS ed è quindi necessario avere un certificato X509. E' anche possibile crearne uno autofirmato e fornirlo al server di Telegram in modo da indicarlo come unico certificato fidato.
I metodi specifici per permettere al Bot di inviare un messaggio nel gruppo (oppure una foto, un audio o qualunque altra cosa) sono ben documentati qui:
Dateci un'occhiata se la cosa vi interessa ;)