Telegram e i Bots

Telegram è un servizio di messaggistica istantanea basato su cloud e senza fini di lucro sviluppato dalla società Telegram LLC.
Questo servizio può essere scaricato dagli utenti e installato sui propri dispositivi senza alcun costo perchè Telegram è distribuito come Software libero e può essere utilizzato su diverse piattaforme come smartphone, pc e tablet.
I messaggi inviati sono salvati sul cloud di Telegram, così da garantire la sincronizzazione istantanea. Il risultato consente all’utente di poter accedere ai messaggi da diversi dispositivi contemporaneamente.
Sono presenti diversi tipi di chat tra le quali chat di gruppo, canali, chat segrete e da giugno 2015 Telegram ha introdotto una piattaforma per permettere, a sviluppatori terzi, di creare i Bots. I Bots sono degli account Telegram, gestiti da un programma, che offrono molteplici funzionalità con risposte immediate e completamente automatizzate, quindi non sono altro che chat automatiche il cui scopo è quello di rispondere alle nostre domande, alle nostre richieste, farci divertire e facilitare operazioni.
Esistono infatti bot che, su nostra richiesta, possono inviarci determinate immagini, gif o bot che rintracciano un nostro pacco inviandoci notifiche ad ogni suo spostamento.

Telegram, oltre alla versione App per Smartphone, ha la versione desktop (che deve essere installata su un computer) e Telegram Web, che si può usare da browser (Safari, Google Chrome, Firefox…) senza fare il download, ma richiede una connessione internet.

COME FUNZIONANO I BOT:

Il funzionamento del bot su Telegram si basa sull’interazione tra il bot e gli utenti che può avvenire in due modi distinti e alternativi:

1-Comandi inviati tramite i messaggi via chat. L’utente apre una chat con il bot oppure li aggiunge ai gruppi per inviargli i messaggi e i comandi al bot tramite i messaggi via chat. E’ una modalità utilizzata con i bot di chat per ricevere le notizie in automatico.

2-Comandi inviati tramite le richieste in linea. L’utente invia le richieste direttamente tramite il campo di input ( riga comandi ) del bot, digitando il nome del bot preceduto dal simbolo della chiocciola @ e una query ( richiesta in linea ). In risposta, il bot invia all’utente il contenuto tramite chat, gruppo o canale.

I messaggi, i comandi e le richieste in linea, quelle digitate o spedite dagli utenti, sono trasferite automaticamente da Telegram sul server dove si trova in esecuzione il software del bot.

COME CREARE UN BOT:

Una volta installata l’app di Telegram e creato un utente, per generare un nuovo Bot occorre cercare l’utente BotFather:

Inviando il messaggio /start si riceverà il benvenuto con l’elenco dei comandi utilizzabili.
Inviando /newbot inizieremo la creazione del Bot:

Ci verrà chiesto di indicare il nome del Bot, ed a seguire, lo user che dovrà terminare per bot (es: arduinoBot o arduino_bot).
Terminata l’operazione ci verrà fornito un Token (una specie di password che dovremo memorizzare) che ci permetterà di collegarci in modo univoco con il Bot di Telegram, utilizzandola all’interno del programma sul dispositivo che lo utilizzerà (Arduino MKR1000 o Raspberry).

Infine, occorre sviluppare l’applicazione esterna per controllare il bot in remoto e dichiararla sulla piattaforma dell’instant messagging. E’ abbastanza semplice.

Nel progetto MYLEGALPLANTS è stato creato un bot per gestire i sensori e visualizzare lo stato della pianta. Di seguito si può osservare la parte del programma python relativa alla programmazione sviluppata con Raspberry:


#Gestione Telegram Bots
id_a = [xxxxxxxxxxx]

def handle(msg):
    	chat_id = msg['chat']['id']
    	command = msg['text']
    	sender = msg['from']['id']
    
    	if sender in id_a:
    		if command == 'Sensori':
    	    		bot.sendMessage(chat_id, 'T='+valori[0]+'; H='+valori[1]+'; L='+valori[2])
    		elif command == 'T':
    	    		bot.sendMessage(chat_id, 'T='+valori[0])
		elif command == 'H':
    	    		bot.sendMessage(chat_id, 'H='+valori[1])
		elif command == 'L':
    	    		bot.sendMessage(chat_id, 'L='+valori[2])
		elif command == 'Accendi riscaldatore':
	    		requests.get('http://mylegalplants.it/web_app/attiva_T.php?T=1')
    	    		bot.sendMessage(chat_id, 'Riscaldatore acceso')
		elif command == 'Spegni riscaldatore':
	   	 	requests.get('http://mylegalplants.it/web_app/attiva_T.php?T=0')
    	    		bot.sendMessage(chat_id, 'Riscaldatore spento')
		elif command == 'Accendi irrigazione':
	    		requests.get('http://mylegalplants.it/web_app/attiva_H.php?H=1')
    	    		bot.sendMessage(chat_id, 'Irrigazione accesa')
		elif command == 'Spegni irrigazione':
	    		requests.get('http://mylegalplants.it/web_app/attiva_H.php?H=0')
    	    		bot.sendMessage(chat_id, 'Irrigazione spenta')
		elif command == 'Accendi illuminazione':
	    		requests.get('http://mylegalplants.it/web_app/attiva_L.php?L=1')
    	    		bot.sendMessage(chat_id, 'Illuminazione accesa')
		elif command == 'Spegni illuminazione':
	    		requests.get('http://mylegalplants.it/web_app/attiva_L.php?L=0')
    	    		bot.sendMessage(chat_id, 'Illuminazione spenta')
    	else:
		bot.sendMessage(chat_id, 'Non sei autorizzate a darmi ordini!')
		#bot.sendMessage(chat_id, sender)
 
bot = telepot.Bot('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx') #TelegramBotToken MyLegalPlantsBot
bot.message_loop(handle)