| Bots de conversa | Exemples | Dades pràctiques | Recursos CITCEA | |
| Google Apps Script | Projectes | Interacció | Inici |
En aquest exemple crearem una equació a partir d'un codi LaTex que enviarem juntament amb la comanda i retornarem la imatge corresponent a l'equació demanada. La comanda que farem servir serà de l'estil següent:
/formula ##x^2+y^2=1
on la part que està en color, després de ##, és el codi LaTex de l'equació desitjada.
var token = "^^80216110:AAENhGXmFe3ezDo0TDfSJYA8z_KfxYRrMqs"; // API Token de Telegram
var telegramUrl = "https://api.telegram.org/bot" + token; // Url que comunica nuestro bot con Telegram
function doPost(e){
var data = JSON.parse(e.postData.contents); // Llegeix les dades rebudes per JSON i les guarda
var realitzat = false;
var text = data.message.text; // El text enviat
var id = data.message.chat.id; // Identificador de la finestra on s'ha escrit el missatge
var comanda = text.split("##"); // Separem els paràmetres
var cmd = comanda[0];
if(cmd.indexOf("/formula") >= 0){
realitzat = true;
formula(id,comanda[1]);
}
if (!realitzat){
var resposta = "Comanda desconeguda";
sendText(id,resposta);
}
}
function formula(ident,formu){
// Identificador de la carpeta on guardarem els fitxers
var folderId = "^^UazkEipsUysdDi4NR4rgZnzPmeWWHdk";
// Demanem la imatge de la fórmula a l'adreça https://latex.codecogs.com
var url = "https://latex.codecogs.com/svg.image?%5Cbg%7Bwhite%7D"+ encodeURIComponent(formu);
// Obtenim la imatge de l'adreça i la passem a format BLOB
var img = UrlFetchApp.fetch(url).getBlob();
// Guardem el BLOB en un fitxer
var fitxer = DriveApp.getFolderById(folderId).createFile(img);
// Agafem l'identificador del fitxer creat
var id_fitxer = fitxer.getId();
// Fem un bucle per esperar que estigui llesta la miniatura
var repetir = true;
var cnt = 0; // Comptador de dècimes de segon
while(repetir){ // Mentre no estigui
var thumb = DriveApp.getFileById(id_fitxer).getThumbnail(); // Mirem si ja s'ha creat la miniatura
Utilities.sleep(100); // Esperem una dècima de segon
cnt++;
if((cnt > 100) || (thumb)){ // Si ja està o han passat deu segons
repetir = false; // Sortim del bucle
}
}
sendBlobFile(ident,thumb,formu); // Enviem la imatge a Telegram
// posant el codi LaTex com a peu
DriveApp.getFileById(id_fitxer).setTrashed(true); // Marca com a esborrat el document provisional
}
function sendBlobFile(chatId,blob_data,caption){
// Funció que envia una imatge en format BLOB
var payload = {
method: "sendPhoto",
chat_id: String(chatId),
photo: blob_data,
caption: caption,
parse_mode: "HTML"
};
var options = {
method: "POST",
payload: payload,
muteHttpExceptions: true
};
UrlFetchApp.fetch( telegramUrl + '/', options);
}
function sendText(chatId,text_env,keyBoard){
// Funció que prepara per enviar un text o un teclat a Telegram
keyBoard = keyBoard || 0;
if(keyBoard.inline_keyboard || keyBoard.keyboard){
var data = {
method: "post",
payload: {
method: "sendMessage",
chat_id: String(chatId),
text: text_env,
parse_mode: "HTML",
reply_markup: JSON.stringify(keyBoard)
}
}
} else {
var data = {
method: "post",
payload: {
method: "sendMessage",
chat_id: String(chatId),
text: text_env,
parse_mode: "HTML"
}
}
}
UrlFetchApp.fetch( telegramUrl + '/', data);
}
Si introduïm la comanda que hem indicat més amunt rebrem la següent imatge:


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