B-iggy
(B Iggy)
5 Luglio 2020, 9:16am
1
Ciao a tutti,
Ho cercato ma non sono riuscito a trovare la direzione corretta.
Voglio pubblicare automaticamente una risposta all’interno di un argomento non appena spingo un commit su un repository GitHub, tramite un webhook.
Lavoro con Integromat e ho già realizzato con successo qualcosa di simile con gli argomenti .
Ho configurato un’API in Discourse, un webhook su GitHub e uno scenario HTTP POST in Integromat, ma mi manca il pezzo finale per far funzionare tutto.
Il mio attuale tentativo è questo, ma non funziona.
Penso che sia perché Discourse non sa cosa fare con la richiesta POST.
Intendo che ci sono /new-message? e /new-topic?, ma non /new-reply?
Forse è qualcosa di banale, grazie in anticipo per il vostro aiuto!
bartv
(Bart )
5 Luglio 2020, 9:37am
2
Puoi scoprire come costruire la tua richiesta effettuando il reverse engineering dell’API di Discourse. Fondamentalmente, apri lo strumento di ispezione di rete, pubblichi una risposta a un argomento e osservi cosa succede sotto il cofano:
Discourse è supportato da una completa API JSON. Tutto ciò che puoi fare sul sito puoi farlo anche utilizzando l’API JSON.
L’API è documentata su docs.discourse.org . Puoi anche utilizzare la gem Ruby discourse_api come libreria client. Tuttavia, non tutti gli endpoint sono documentati.
Per determinare come eseguire un’operazione con l’API JSON, puoi seguire questi passaggi.
Esempio: ricategorizzare un argomento.
Vai a un argomento e inizia a modificare una categoria:
[image]
Apri gli str…
B-iggy
(B Iggy)
5 Luglio 2020, 9:42am
3
Grazie mille @bartv
Lo sto facendo proprio ora
L’unica domanda sarebbe: sono TUTTI i campi obbligatori per effettuare una chiamata POST di risposta? È una quantità piuttosto elevata e penso che alcuni campi non possano essere compilati da me dinamicamente o siano soggetti a errori! (ad esempio l’id:)
In Zapier, ad esempio, ho creato una volta un webhook POST di argomento di successo con solo quei campi dati
bartv
(Bart )
5 Luglio 2020, 9:44am
4
Dubito che siano tutti necessari. Prova pure
B-iggy
(B Iggy)
5 Luglio 2020, 10:16am
5
Solo come informazione, non sta fallendo a causa dei campi dati, ma a causa di un CSRF errato.
Vedi qui:
API requests with the Content-Type as “application/json” often receive an unhelpful message like “BAD CSRF”, so we should improve the error messaging so that it provides more details as to why they are receiving this error message.
@blake Questo significa che devo impostare api_username e api_key nell’Header?
Il mio progresso attuale, che fallisce:
blake
(Blake Erickson)
6 Luglio 2020, 3:47pm
6
Sì, dovrai impostare Api-Username e Api-Key nell’intestazione. Assicurati di sostituire _ con -. Dovrai anche rimuovere le credenziali dal corpo.
B-iggy
(B Iggy)
6 Luglio 2020, 4:35pm
7
Fantastico, grazie mille @blake !
Era proprio quello.
Per chi, come me, ha cercato per ore su Google e con la funzione di ricerca, ecco la soluzione: