JavaScript, HTML, CSS e... !
2 commenti

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 ;)

Tags

Michele Pisani

Michele Pisani

Sviluppatore Javascript ed esperto in Digital Analytics

L'esperienza nel settore Digital Analytics unita ad anni di sviluppo in Javascript ha trovato la massima espressione in Google Apps Script che mi ha permesso, con estrema facilità e poche righe di codice, di realizzare potenti applicazioni interattive e processi automatizzati integrati con i prodotti della G Suite.

Come contattarmi
scrivi un commento

2 Commenti

  1. giovedì 5 agosto 2021 alle ore 12.10 Franco

    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

    Rispondi a questo commento
    • sabato 7 agosto 2021 alle ore 09.50 Michele PisaniAutore

      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.

      Rispondi a questo commento

Scrivi un commento

Il tuo indirizzo email non sarà pubblicato.I campi contrassegnati da un * sono obbligatori
Puoi utilizzare i seguenti tag nei commenti:
[bold]testo[/bold] se vuoi evidenziare un testo con il grassetto[code]function helloworld() { }[/code] se vuoi pubblicare una porzione di codice[url]https://www.appsscript.it[/url] se devi riferirti ad un indirizzo web