Con questo tutorial voglio mettere a disposizione dei lettori la possibilità di ripetere, modificare, usare un progetto fatto a scuola e che utilizza un bot Telegram, un pò di informatica (un google sheet e un google script) e tanta tanta fantasia.

L’idea è quella di creare un generatore casuale di favole, permettere cioè ai ragazzi di creare delle favole rispettando dei criteri comuni (incipit, presentazione dei protagonisti, arrivo dell’antagonista, arrivo dell’eroe, soluzione ed epilogo) presi ad esempio da quello che è lo schema di Propp.

Il tutorial che segue prende lo spunto da alcuni articoli ed attività trovate in rete e recuperabili nei link che seguono:

L’esperienza è già stata fatta e può ad esempio, essere vista sul canale telegram @Smontafavole_bot.

Il tutorial avrà più fasi distinte

  1. Creazione di un bot su Telegram
  2. Creazione del google sheet
  3. Creazione dello script
  4. Collegamenti e conclusioni

Creazione del bot telegram

Do per scontato che abbiate Telegram installato sul vostro smartphone. Se non lo avete fatto, fatelo immediatamente, se non altro per i divertentissimi stickers.

Cercate il bot che si chiama Botfather (@BotFather) e vi apparirà questa finestra


botfather 1

 

Cliccate senza paura nella parte basse dello schermo il pulsante “AVVIA” ed immediatamente vi apparirà una lunga lista di comandi con cui gestire al meglio i vostri bot ed i vostri canali.

Nella foto che segue ne vedrete alcuni ed in particolare uno, quello che ci interessa.

botfather 2

In basso digitate liberamente /newbot che vi consentirà, appunto. Di creare il vostro primo bot telegram.

Fatto? Dovrebbe apparirvi la schermata che segue in cui vi si chiederà da dare un nome al bot. Per comodità io lo ho chiamato Tutorialfavole.

botfather 3

Botfather vi fa un ultima richiesta (che non potete certo rifiutare), ovvero di dare un username al vostro nuovo bot con l’unico obbligo di terminare l’username con la parolina “bot” o con “_bot”. Come potete vedere in figura ho scelto Tutorialfavolebot (@Tutorialfavolebot).

Botfather vi regalerà una sere di informazioni ed in particolare un complicatissimo Token API che vi prego di conservare gelosamente, perché rappresenta la chiave di accesso al Bot. Quello che vedete in foto è quello del bot di prova e che quando leggerete sarà già stato probabilmente cancellato.

botfather 4

CREAZIONE DEL GOOGLE SHEET

Innanzitutto perché lavorare su un Google Sheet sulla piattaforma google drive piuttosto che su un semplice foglio di calcolo? La risposta è semplicissima. Google sheet consente la pubblicazione del contenuto direttamente sul web e la possibilità di essere interrogato via web, cosa che faremo a breve, e che quindi fungerà da database per il nostro bot telegram.

Quello che dovete creare è un file che somigli a questo che è proprio quello del bot @Smontafavole_bot.

Come vedete la sua struttura è composta da undici brevi storie raccolte per colonne a partire dalla seconda e nel suo interno potete riconoscere appunto incipit, protagonista, antagonista eroe ed epilogo.

Occorre fare un bel lavoro perché ogni blocco logico sia perfettamente integrabile nelle altre colonne. Potete e dovrete poter leggere le vostre favole senza difficoltà anche mescolando i blocchi, che è quello che faremo tra un attimo.

Quello che dovrete fare è appuntarvi un altro codice stranissimo che è il codice KeyID dello stpreadsheet e che troverete nel link in alto. In questo caso

ID_SPREADSHEET = 1E6moiY34eGofbYRiXZ0xVtyaSCRk36Cu9ufW3JitvzE

Ed ora al lavoro a riempire le caselle. Attenzione che le idee possono essere tantissime. Immaginate un generatore casuale di frasi latine (@Verbatim_bot), o un generatore casuale di frasi politiche (@Supercazzolapolitica_bot) per cui vanno ringraziati i miei matti compagni di viaggio Francesco Piersoft Paolicelli, Fedele Congedo, Mimmo Aprile, Paola Lisimberti, Ida Leone.

 

CREAZIONE DELLO SCRIPT

Questa sezione sembra particolarmente complicata, in fondo è un codice informatico scritto in un linguaggio per Nerd abitatori di umidi Garage. Beh vi dico che non sono un informatico e che il codice lo ho imparato anche io. Il codice potete vederlo qui (https://script.google.com/d/1vm365ZgpH-kTv85TA47T27yqMxQD8xYi4A1D3_lZLkmhB3v1Hg4H5eNc/edit?usp=sharing).

 A dirla tutta non è scritto a nessuna parte che dobbiate impararlo per forza, ma potete liberamente utilizzarlo a vostro piacimento, copiandolo ed incollandolo sulla vostra applicazione Google Script, come ho fatto io per i miei ragazzi. L’esercizio, infatti, non era informatico, ma semplicemente di creazione di favole interscambiabili utilizzando un ambiente digitale.

Io insegno in una scuola media e quel livello di conoscenza informatica non è richiesto. Certo che lo stesso esperimento ripetuto in una scuola superiore potrebbe aprire scenari diversi anche sotto il profilo strettamente tecnico.

Il ogni caso il codice ve lo riporto di seguito commentato riga per riga, così da comprendere il processo logico.

ID_SPREADSHEET="1E6moiY34eGofbYRiXZ0xVtyaSCRk36Cu9ufW3JitvzE";

// indicazione tramite KeyId del foglio di calcolo da cui prelevare i dati

function getRandomArbitrary(min, max) {

    return Math.random() * (max - min + 1) + min;

}

//funzione di scelta casuale tra iI contenuto dello spreadsheet

function doGet() {

  var ss = SpreadsheetApp.openById(ID_SPREADSHEET);

    var metaSheet = ss.getSheetByName('Sheet1'); //attenzione alla vostra versione di google sheet. La mia è in inglese ed il foglio lo ho indicato con sheet1 così come riportato. Se ha un nome diverso dovete esattamente riportare quello.

    var RSSFeedTitle='';

  for (var i=1; i < 6; i++) {

  RSSFeedTitle += metaSheet.getRange(i,getRandomArbitrary(2,11)).getValue()+' ';

}

  return RSSFeedTitle;

}

//Funzione get che prende per ogni Colonna un pezzo della favola scritta in maniera del tutto casuale estraendo cioè un numero da 2 a 11 (le colonne su cui sono messe le favole) e pescando a caso un pezzo da 1 a 6 completando il processo.

function doPost(e) {

  var update = JSON.parse(e.postData.contents);

  // Sostituisci quello esistente col tuo token

  var API_TOKEN = '395382354:AAH0StklQDHpmyei4RLcL-AnLMH1dybbfXA';

    if (update.hasOwnProperty('message')) {

    var msg = update.message;

    var chatId = msg.chat.id;

// Funzione Post con indicazione del Token del canale Telegram.

    if (msg.hasOwnProperty('entities') && msg.entities[0].type == 'bot_command') {

      if (msg.text == '/favola') {

        var payload = {

          'method': 'sendMessage',

          'chat_id': String(chatId),

          'text': doGet(),

          'parse_mode': 'Markdown'

}

//implementazione del comando /favola per estrarre la favola dallo sheet.

        var data = {

          "method": "post",

          "payload": payload

        }

        UrlFetchApp.fetch('https://api.telegram.org/bot' + API_TOKEN + '/', data);

      }

    }

  }

}

Alla fine dovrete salvare e poi, nel menu a tendina, pubblicare lo script come applicazione web badando di renderlo disponibile in lettura a chiunque anche se anonimi (Anyone even anonymous). Quando avrete fatto vi chiederà il permesso di accedere ai contenuti del google sheet, fatelo liberamente e registrate l’URL finale che vi servirà fra un attimo. 

deploy as app

Non resta che collegare tutto.

COLLEGAMENTI E CONCLUSIONI

L’operazione che faremo si chiama WebHook. Un Webhook (in italiano letteralmente: "uncino del web") nella programmazione informatica sul web è un metodo per aumentare o alterare il comportamento di una pagina web, o di un'applicazione web con chiamate di ritorno (callback) personalizzate.

Questo è quello che dice Wikipedia ed in soldoni è un modo per uncinare un database e poterlo interrogare ogni volta che si vuole secondo il codice che abbiamo scritto.

Per fare il webhook abbiamo bisogno di due informazioni, il TOKEN del bot che avete salvato all’inizio e l'URL dell'App web ottenuto dopo la pubblicazione dello script.

https://api.telegram.org/bot{TOKEN}/setWebHook?url={WEB_APP_URL}

occorrerà scrivere nel vostro browser qualcosa del genere in cui dovrete appunto sostituire al {TOKEN} quello ottenuto da botfather e a {WEB_APP_URL} il link di pubblicazione dell'App dello script.

Il browser vi restituirà un messaggio di ok ed il gioco è fatto

umap 009

Non resta che andare su vostro canale telegram e inserire il comando /favola e divertirvi

 

favola

 

Visita la sezione del Prof.Scalzullo