Esercitazione da svolgere individualmente.
Questa repository contiene del codice di esempio per NodeJS:
un Web service che espone un singolo metodo (in POST
), che può essere configurato come Webhook di un Bot Telegram.
Il server NodeJS riceverà quindi delle richieste HTTP per ogni messaggio ricevuto dal Bot Telegram e potrà far reagire il bot con risposte testuali (o altro).
- Registrarsi su Telegram, se non si dispone di un account utente;
- Contattare il bot
@botfather
e seguire la conversazione guidata per creare un nuovo bot, - Ottenere il token di accesso del proprio bot (una lunga sequenza di caratteri alfanumerici).
- Scaricare il contenuto della repository e configurare un server raggiungibile su Internet (si consiglia di utilizzare il servizio Glitch oppure Heroku);
- Caricare i file della repository sul proprio server;
- Rinominare il file
.env-template
in.env
, che conterrà i "segreti" della propria applicazione; - Incollare il token di accesso del proprio bot nella variabile
BOTTOKEN
del file.env
.
- Leggere la documentazione del metodo setWebhook;
- Effettuare una richiesta HTTP con metodo
POST
all'URLhttps://api.telegram.org/botTOKEN/setWebhook
(doveTOKEN
è sostituito dall'effettivo token di accesso del proprio bot) ed impostando il parametrourl
con l'URL del proprio Web service; - L'API di Telegram confermerà la creazione del Webhook ed invierà così una richiesta HTTP al Web service per ogni messaggio ricevuto dal bot.
- Verificare la logica del file
server.js
(riga 14), dove il messaggio di Telegram in arrivo viene letto come blocco JSON e se ne estraggono i parametri (generalmente i parametri di interesse sono il "chat ID", che identifica la conversazione con l'utente, ed il testo del messaggio); - Alterare la logica dove viene generata una richiesta HTTP (riga 21), in modo da usare il metodo sendMessage dell'API Telegram e quindi dialogare con l'utente.
- Implementare una conversazione con l'utente, eventualmente effettuando del semplice pattern matching sull'input testuale dell'utente (ad esempio, è possibile usare il metodo indexOf per verificare la presenza di una stringa all'interno di un'altra stringa).
Il bot consegnato deve svolgere una semplice conversazione con l'utente, ad esempio invertendo i messaggi dell'utente, inserendo emoji casuali oppure rispondendo con immagini casuali di Nicholas Cage.