ondata / albopopTwoDotZero

Albopop 2.0
https://albopop.it
7 stars 15 forks source link

IFTTT tronca EntryContent se presenti caratteri special con "&" #118

Closed ali-ce closed 4 years ago

ali-ce commented 4 years ago

Se nella variabile "text" della chiamata che IFTTT invia a Telegram c'è del testo che contiene il carattero "&", lFTTT non è in grado di parsare correttamente EntryContent e non pubblica il feed item su Telegram, o lo fa in parte (solo il testo prima del simbolo &), con errore 400.

Screenshot 2019-11-19 at 10 24 51
aborruso commented 4 years ago

Ciao @ali-ce e grazie per essere qui con noi.

Domanda bacchettona: quindi usi come fonte il feed RSS, e per ogni nuovo feed item si attiva il webhook di IFTTT che scrive sul canale. Corretto?

Grazie

aborruso commented 4 years ago

@FabriSS mi puoi condividere in lettura il foglio elettronico che usi per generare il feed? Grazie

ali-ce commented 4 years ago

@aborruso sì, almeno così penso. Ti allego foto di impostazioni ricetta IFTTT (ho provato diverse impostazioni, dividendo url/body o mettendo tutto in url; lasciando &parsehtml e togliendo qualsiasi carattere strano di formattazione html)

Screenshot 2019-11-19 at 19 05 47
FabriSS commented 4 years ago

@FabriSS mi puoi condividere in lettura il foglio elettronico che usi per generare il feed? Grazie

@aborruso abilitata la lettura: https://docs.google.com/spreadsheets/d/1mTYyfrXIhM5GYp5r5Q07hY619zFsz9ThlU_K4gzE1hs/edit?usp=sharing

Screenshot 2019-11-19 at 19 05 47

@ali-ce per esperienza ti consiglio di inserire tutto l'url da parsare nel campo "url", lasciando vuoto il campo "body". Come ti scrivevo su facebook, inverti la posizione di EntryUrl e EntryTitle, mettendo il secondo in ultima posizione, in modo da avere in ogni caso il link di riferimento dell'atto e la troncatura del messaggio solo in parte del titolo

ali-ce commented 4 years ago

@FabriSS all'inizio era così, con tutto su url e niente su body..diciamo che oggi le sto provando un po' tutte per vedere quale va meglio! Adesso risistemo. Posso chiederti perchè però è meglio tutto su url? stavo cercando di capire la differenza dei due approcci, ma non ho trovato niente

FabriSS commented 4 years ago

Su telegram viene passato un url tramite le api, e viene interpretato per effettuare la pubblicazione sul canale che ti interessa. Il trigger di ifttt tramite webhook interpreta come url utile proprio quello presente nel campo "url". Ciò che viene inserito nel campo body come viene concatenato? Vengono inseriti caratteri aggiuntivi? viene fatto in modo pulito? e se cambiano le impostazioni si ifttt? o quelle delle api telegram? dovrò ricomporre l'url? Visto che non ho queste info, senza saper né leggere né scrivere, metto tutto in un unico campo, così da evitare che eventuali modifiche future vadano a bloccare tutto. In passato cmq mi è accaduto che la concatenazione tra url e body venisse fatta aggiungendo uno "spazio".

Cercando su google ho trovato questa guida: https://birdie0.github.io/discord-webhooks-guide/services/ifttt.html in cui consigliano di usare la formula <<>> per fare l'escape dei caratteri speciali. Che se non ricordo male, lo avevi ipotizzato già tu... tenta così e vediamo come va

ali-ce commented 4 years ago

Un'altra cosa che mi è venuta in mente: guardando il feed, EntryContent dovrebbe avere i caratteri già con encoding giusto: forse usando quello invece di EntryTitle il problema si risolve? Intanto provo

Screenshot 2019-11-20 at 09 25 30
aborruso commented 4 years ago

@ali-ce è un problema di encoding e di tuning degli strumenti.

Non ti do una risposta ora sul tuo problema esatto, ma soltanto teorico pratica. Se voglio scrivere in una chat telegram la stringa Alice & i suoi bot > di tutti gli altri il comando di base è

curl -X POST "https://api.telegram.org/bot166104195:xxxXXX/sendMessage" -d "chat_id=@andychat&text=Alice%20%26%20i%20suoi%20bot%20%3E%20di%20tutti%20gli%20altri"

che produce quello che desidero

image

La stringa è stata sottoposta a encoding di caratteri e inviata tramite -X che setta l'invio come application/x-www-form-urlencoded. Quindi c'è da impostare/testare una cosa simile.

Io da un po' non uso più il webhook, ma aggiungo l'utente IFTTT come admin al canale e creo una regola "scrivi al canale telegram via utente ifttt". Se non sbaglio, in questo caso, gestisce lui codifica e decodifica. Ma devo testare

ali-ce commented 4 years ago

Segnalo che ho risolto il problema in questo modo:

Forse l'errore è anche di IFTTT: dicono di escape characters con "<<>>" mentre va fatto con "<<<>>>"

Screenshot 2019-11-20 at 11 37 33

Penso si possa quindi chiudere la issue

aborruso commented 4 years ago

viva @ali-ce

FabriSS commented 4 years ago

ottimissimo