Da WordPress a Telegram, passando per IFTTT

Gioxx  —  03/04/2018 — Leave a comment

Di come creare un bot di Telegram per poterlo utilizzare come ponte tra il tuo blog e il gruppo / canale che preferisci, te ne avevo già parlato qualche tempo fa. Quello di cui ti parlo oggi è un modo diverso per consegnare le ultime novità del blog (o qualsiasi altro sito web fornito di feed RSS) a Telegram, e va un po’ in contrasto con quanto ammesso nel 2016, perché nel frattempo le cose su IFTTT sono cambiate (e si sono stabilizzate e velocizzate).

Da WordPress a Telegram, passando per IFTTT

In funzione ormai da diversi mesi (quasi un anno, a dirla tutta), il bot di Gioxx’s Wall consegna –in un gruppo di amici “non aperto al pubblico”– le ultime pubblicazioni che compaiono qui dove tu stesso stai leggendo adesso l’articolo, prendendo URL e immagini di copertina dal feed RSS pubblico. Questo genera un’anteprima immediatamente selezionabile su Telegram, che i frequentatori del gruppo possono utilizzare per puntare il browser alla pagina dell’articolo, in attesa dell’approvazione del template di apertura rapida che ho finalizzato e sottoposto lo scorso gennaio.

L’applet

L’applet di IFTTT si basa su Webhook, e ricostruisce quindi un’azione scatenata da una nuova voce disponibile nel feed di cui ti parlavo prima, per poi catturarla e trasformarla in un URL da richiamare (e in quel caso, passo dalle API di Telegram).

Da WordPress a Telegram, passando per IFTTT 1

Cosa ti serve conoscere:

  • il token HTTP API che ti viene rilasciato da @BotFather (fai riferimento sempre a questo articolo se non hai ancora creato il tuo bot, paragrafo “Creazione del bot“),
  • l’ID del gruppo o del canale (chat_id), di cui ti parlo adesso.

Ricavare il chat_id

Fino a qualche tempo fa era il dato più ostico da ricercare per chi non è abituato a giocare con API e output JSON, oggi è facilmente ricavabile grazie all’utilizzo di un bot (giusto per rimanere in tema) :-) Io ti parlo di entrambi i metodi utilizzabili, scegli tu la via preferita. La prima è più manuale, la seconda è immediata ed evidentemente più comoda per tutti.

Manualmente

Invita il tuo bot all’interno del canale o gruppo che ti interessa “servire“, quindi collegati all’indirizzo https://api.telegram.org/bot<Token del bot>/getUpdates dove <Token del bot> andrà sostituito con il token HTTP API di cui si parlava poco fa. Un esempio pratico potrebbe essere questo: https://api.telegram.org/botjbd78sadvbdy63d37gda37bd8/getUpdates (quel token non esiste e otterrai un output di errore, è solo per fare un esempio). Accedendo alla pagina, ammesso che il token sia giusto, ti ritroverai davanti a una serie di dettagli in JSON che mostreranno i dettagli di ciò che il bot ha visto negli ultimi minuti, compreso l’ingresso nel gruppo / canale che hai portato tu a termine:

Da WordPress a Telegram, passando per IFTTT 2

Quell’ID evidenziato in rosso è proprio quello che identifica il gruppo / canale, dettaglio che a te serve per completare il lavoro, compreso di quel “” davanti, come fosse un numero negativo. Copialo negli appunti.

Automaticamente

Inserisci il bot @RawDataBot all’interno del tuo gruppo / canale. Appena entrato, questo risponderà fornendoti proprio quei dettagli JSON che tu avresti potuto vedere manualmente (spiegato sopra). Ti basterà individuare la riga id in corrispondenza di chat, quindi copiare il numero negativo riportato.

Da WordPress a Telegram, passando per IFTTT 3

IFTTT: completare la configurazione

Hai i due dettagli fondamentali che servono per completare la configurazione dell’Applet su IFTTT. Attiva (su IFTTT, se non lo hai già fatto) il servizio di RSS e anche quello di web request, quindi crea la nuova Applet con questi dettagli:

  • New feed item: indica l’URL del tuo feed (es. https://gioxx.org/feed)
  • Make a web request: inserisci all’interno dell’URL il richiamo alle API di Telegram (un po’ come fatto prima se hai scelto il metodo manuale per ricavare il chat_id) ma stavolta citando l’azione di invio nuovo messaggio, https://api.telegram.org/botjbd78sadvbdy63d-37gda37bd8/sendMessage.
    Il Method dovrà essere di tipo POST e il Content Type di tipo application/json.
    All’interno del Body potrai finalmente specificare il contenuto di ciò che il bot dovrà inviare all’interno del gruppo / canale, io ho inserito questo contenuto:
{"chat_id":"-123456789","text":"{{EntryTitle}} - {{EntryUrl}}/?utm_source=telegram&utm_medium=group"}

Dovrai chiaramente sostituire -123456789 con il vero chat_id ricavato precedentemente, mentre il resto potrebbe anche rimanere identico. L’articolo verrà infatti servito nella modalità “Titolo – URL“, quest’ultimo seguito da alcuni parametri per me utili a fini statistici (e monitorati da Google Analytics, nda).

Ti propongo alcuni ritagli della schermata di IFTTT per permetterti di capire meglio i vari passaggi (in realtà si tratta di un grande blocco in pagina unica):

Salva ora la tua configurazione e attiva l’Applet (se IFTTT non lo ha già fatto autonomamente), quindi attendi che il tutto cominci a funzionare (dovrai pubblicare un nuovo articolo sul tuo blog).

Se vuoi effettuare un test

Ho messo insieme qualche riga di PHP per permetterti di effettuare dei test prima di andare “in produzione“, trovi il risultato all’indirizzo mobile.gfsolone.com/tgram_public.php:

Da WordPress a Telegram, passando per IFTTT 7

Compila il form con i veri dettagli del tuo bot (Token) e del canale / gruppo che vuoi raggiungere (ChatID), quindi inserisci il testo che vuoi inviare e fai clic su “Invia messaggio“. Salvo errori, vedrai comparire il tuo messaggio su Telegram.

Da WordPress a Telegram, passando per IFTTT 8

Lo so, il messaggio è stupido, era per dire che ho migrato mobile.gfsolone.com a HTTPS :-p

Ora dovresti praticamente avere tutto a tua disposizione per replicare una configurazione funzionante, non ti resta che iniziare a sperimentare.

Buon inizio settimana breve! :-)


credits: stackoverflow.com/questions/32423837/telegram-bot-how-to-get-a-group-chat-id

Un doveroso ringraziamento anche a Napolux che tempo addietro mi aveva suggerito di adottare questo metodo passando da IFTTT.

×

Attenzione

Questo post è stato scritto più di 5 mesi fa, potrebbe non essere aggiornato. Per qualsiasi dubbio ti invito a lasciare un commento per chiedere ulteriori informazioni! :-)

Condividi l'articolo con i tuoi contatti: