Bots de conversa de Telegram amb Google Apps Script

Bots de conversa Exemples Dades pràctiques   Recursos CITCEA
Google Apps Script Projectes Interacció   Inici

Creació del bot

Per crear un bot farem servir un altre bot anomenat BotFather. Podem picar al botó de la lupa i posar les primeres lletres del nom. Veurem que és el que ens interessa per la seva icona característica. Quan obrim BotFather haurem de picar el botó START, situat a la part inferior, per poder començar a treballar amb ell.

botfather

Quan piquem el botó START ens informarà de la llista de comandes disponibles. Per enviar una comanda podem picar la barra / del teclat o fer servir el botó botó /

Entrarem la comanda /newbot i picarem la tecla enter. Ens demanarà que entrem el nom que li volem donar al bot. Podem posar, per exemple, bot_provaIoT. Després ens demana que donem un nom d'usuari que, necessàriament, ha d'acabar en "bot". Una bona pràctica és afegir _bot al final del nom del bot. En el nostre cas, doncs, posem com a nom d'usuari bot_provaIoT_bot. Un cop definit el bot, ens donarà l'adreça i el token que ens permetran accedir al bot. L'adreça serà una cosa similar a:

http://t.me/bot_provaIoT_bot

I el token serà una successió de caràcters com, per exemple, aquesta:

^^34628844:AAFIpk-e7j3UZtYQYQaTduf4mPhnDqIcNXI

Un cop tenim el bot definit, passarem a configurar-lo. Amb la comanda /mybots ens sortirà la llista dels nostres bots (només un, si és el primer cop) i picarem sobre el nom d'usuari del bot (@bot_provaIoT_bot). Se'ns mostraran diverses possibilitats. En aquest moment ens interessa l'opció Edit Bot. Quan la piquem veurem diverses opcions entre les que ens poden interessar Edit Botpic, que ens permet posar una imatge (mínim 150 ⨯ 150 px) al bot, o Edit Commands, que ens servirà per definir una llista de comandes que ens sortiran quan piquem la barra /. Les comandes s'han d'entrar posant el nom de la comanda (sense accents o caràcters especials), un espai, un guió, un espai i una breu descripció de la comanda. Per saltar de línia i poder escriure la comanda següent picarem la tecla enter al mateix temps que la de majúscules. Aquestes dues configuracions no són obligatòries i les podem fer (o modificar les opcions) quan desitgem. En aquest cas definim tres comandes:

llistat - Llista de les comandes disponibles
guardar - Guarda un valor al full de càlcul
llegir - Llegeix el darrer valor guardat

Un cop ja tenim el bot definit, el podríem cercar (com hem fet per trobar BotFather), iniciar-lo (prement START) i enviar-li comandes, però no farà res perquè no li hem dit què s'ha d'executar quan s'enviï una comanda al bot.

Telegram envia i rep la informació en format JSON. Podem veure, des del navegador, la darrera comanda que s'ha enviat al nostre bot. Per fer-ho, emprarem la següent URL:

https://api.telegram.org/bot^^34628844:AAFIpk-e7j3UZtYQYQaTduf4mPhnDqIcNXI/getupdates

Si recentment hem enviat la comanda /llistat obtindrem una resposta com aquesta:

{"ok":true,"result":[{"update_id":825667527,"message":{"message_id":5,"from":{"id":^^9199456,"is_bot":false,
"first_name":"Oriol","username":"OriolBoix","language_code":"ca"},"chat":{"id":^^9199456,"first_name":"Oriol",
"username":"OriolBoix","type":"private"},"date":1601744308,"text":"/llistat","entities":[{"offset":0,"length":8,
"type":"bot_command"}]}}]}

El format JSON escrit així és pesat de llegir però es pot passar per un formatejador que ens el deixi amb una estructura més fàcil d'entendre. Per exemple, fent servir JSON formatter obtindríem:

{
   "ok": true,
   "result": [
      {
         "update_id": 825667527,
         "message": {
            "message_id": 5,
            "from": {
               "id": ^^9199456,
               "is_bot": false,
               "first_name": "Oriol",
               "username": "OriolBoix",
               "language_code": "ca"
            },
            "chat": {
               "id": ^^9199456,
               "first_name": "Oriol",
               "username": "OriolBoix",
               "type": "private"
            },
            "date": 1601744308,
            "text": "/llistat",
            "entities": [
               {
                  "offset": 0,
                  "length": 8,
                  "type": "bot_command"
               }
            ]
         }
      }
   ]
}

Observem que, entre les dades enviades, hi ha l'identificador d'usuari (id) que ens serà útil properament. En el nostre cas, l'identificador és:

^^9199456

Per fer proves, també podem enviar missatges des del navegador cap al compte de Telegram. Per exemple la següent:

https://api.telegram.org/bot^^34628844:AAFIpk-e7j3UZtYQYQaTduf4mPhnDqIcNXI/sendMessage?chat_id=^^9199456&text=Missatge enviat des del navegador

Teòricament, cal substituir alguns caràcters especials (espai, %, etc.) pels seus codis però, a la pràctica, la majoria de navegadors ja ho canvien automàticament. En el nostre exemple, la comanda que realment s'envia és la següent (%20 és el codi corresponent a l'espai):

https://api.telegram.org/bot^^34628844:AAFIpk-e7j3UZtYQYQaTduf4mPhnDqIcNXI/sendMessage?chat_id=^^9199456&text=Missatge%20enviat%20des%20del%20navegador

 

 

 

 

 

 

 

 

 

 

Llicència de Creative Commons
Aquesta obra d'Oriol Boix està llicenciada sota una llicència no importada Reconeixement-NoComercial-SenseObraDerivada 3.0.