Risponde in Modo Automatico agli Utenti
Bot di Telegram che Sceglie i Messaggi da un Foglio Google
Abbiamo visto in altri miei video come bastano 5 minuti per creare un semplice Bot di Telegram, come inviare immagini in automatico da parte del Bot e come salvare in un Foglio Google i messaggi che gli utenti scrivono nella chat.
In questo video voglio mostrarti come istruire il Bot in modo da rispondere in modo dinamico ai messaggi dell'utente, per farlo il Bot analizzerà il testo del messaggio ricevuto e cercherà in un Foglio Google la risposta appropriata da fornire.
Ho predisposto in uno Spreadsheet una lista di cocktail con i relativi ingredienti e le istruzioni per prepararli, ovviamente si tratta di un esempio e l’elenco non è esaustivo.
Lo scopo di questo bot è quello di ricevere in ingresso il nome di un drink e fornire all’utente le opportune informazioni per poterlo preparare.
Il nome del foglio dove ho inserito tali dati è 'Foglio2', il 'Foglio1' invece è attualmente vuoto e lo utilizzerò per salvare i messaggi che gli utenti scrivono nella chat, può essere molto utile ad esempio per verificare quale cocktail è più richiesto rispetto ad altri o per verificare se gli utenti richiedono qualcosa che non ho previsto e nel caso integrare la lista.
Spero che questo video ti sia piaciuto, nel prossimo tutorial sull'argomento ti mostrerò come ottenere queste informazioni in modo dinamico interrogando direttamente un servizio esterno, senza bisogno di scriverle in uno Spreadsheet. Ti invito pertanto a iscriverti al mio Canale YouTube se ancora non l'hai fatto e a lasciarmi un commento se hai un dubbio, un suggerimento o un argomento che ritieni interessante e che vorresti fosse trattato in tutorial.
Di seguito il codice mostrato nel video:
var token = getTokenId(); // ho nascosto il valore del token nel file token_id.gs per non mostrarlo a video
var telegramUrl = "https://api.telegram.org/bot" + token;
var webAppUrl = "https://script.google.com/macros/s/TUO_ID_APPLICAZIONE/exec";
function setWebhook() {
var url = telegramUrl + "/setWebhook?url=" + webAppUrl;
var response = UrlFetchApp.fetch(url);
}
function sendMessage(chat_id, text) {
var url = telegramUrl + "/sendMessage?chat_id=" + chat_id + "&text="+ text;
var response = UrlFetchApp.fetch(url);
}
function doPost(e) {
var contents = JSON.parse(e.postData.contents);
var chat_id = contents.message.from.id;
var user = contents.message.chat.first_name + " " + contents.message.chat.last_name;
var answer = "Ciao " + user + ". Scrivi il nome di un cocktail e ti dirò come prepararlo!";
var text = contents.message.text;
var ssId = "SPREADSHEET_ID";
var sh2 = SpreadsheetApp.openById(ssId).getSheetByName("Foglio2");
var sh2range = sh2.getRange(1, 1, sh2.getLastRow(), sh2.getLastColumn());
var sh2values = sh2range.getValues();
var sh2values_len = sh2values.length;
var cocktail_nome;
for (i=0; i<sh2values_len; i++) {
cocktail_nome = sh2values[i][0]+'';
if (text.toLowerCase() == cocktail_nome.toLowerCase()) {
answer = "Ingredienti: " + sh2values[i][1] + '.' + '%0A' + "Preparazione: " + sh2values[i][2];
break;
}
}
sendMessage(chat_id, answer);
SpreadsheetApp.openById(ssId).getSheetByName("Foglio1").appendRow([new Date(), chat_id, user, text]);
}
Per il momento ti saluto e a presto, ciao ;)
Ho notato che se in una cella ho un testo su piu' linee (separato da ctrl+enter) la funzione che dovrebbe mostrare su telegram il contenuto della cella stessa, non funziona.. Come posso risolvere ?
Grazie
Ciao Franco,
in questo caso proverei a processare la stringa in ingresso con il metodo replace per sostituire il carattere a capo con uno spazio e vedere se il problema si risolve.
Ciao Michele, i tuoi tutorial sono fantastici!!! grazie.
Mi piacerebbe realizzare, un bot telegram che scova le offerte sul sito di Amazon, e poi le pubblichi in automatico ogni 10 minuti, all'egando al link l'ID di affiIiazione Amazon, il tutto in Canale telegram.
Riusciresti a fare un tutorial il merito?
Ringrazio per l'attenzione
Ciao Isac,
grazie dei complimenti! :)
Quello che chiedi è un progetto vero e proprio di una certa complessità e che richiede particolari specifiche. Sicuramente tra i video tutorial e i post nel blog puoi riuscire a trovare qualche spunto interessante per adattare i relativi concetti e parti di codice da integrare al progetto che vuoi realizzare.