Il webhook fallisce con il plugin WP Discourse

Ho installato il plugin WP Discourse e tutto sembra funzionare correttamente, tranne il webhook “Sincronizza i dati dei commenti”. Continua a restituire un errore con Codice di stato: 400.

Ecco la risposta:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>400 Bad Request</title>
</head><body>
<h1>Bad Request</h1>
<p>Il tuo browser ha inviato una richiesta che questo server non ha potuto comprendere.<br />
</p>
</body></html>
  • L’URL del payload sembra essere corretto.
  • La Chiave segreta del webhook è impostata sia in Discourse che nel plugin WP.
  • Il Tipo di contenuto è application/json.
  • Evento di pubblicazione è selezionato.
  • Verifica il certificato TLS dell'URL del payload è selezionato.
  • Attivo è selezionato.

Qualsiasi suggerimento sarebbe molto apprezzato.

Verifica di nuovo che l’URL del payload e la chiave segreta del webhook siano impostati correttamente.

Se ciò non risolve il problema, puoi dirmi quale struttura di permalink è in uso sul tuo sito WordPress? La struttura dei permalink si trova nella sezione Impostazioni / Permalink della dashboard di WordPress.

L’URL del payload e la chiave segreta del webhook sono impostati correttamente.

La struttura dei permalink è “Nome del post”.

Che risposta ricevi dal tuo sito WordPress se fai clic sul pulsante “Ping” dall’elenco degli eventi del webhook su Discourse?

Mi chiedevo solo se ci siano ulteriori riflessioni su questo…

Sai se hai disabilitato l’API REST di WordPress sul tuo sito? Se sì, questo causerebbe il fallimento delle richieste webhook inviate da Discourse.

Sembra essere abilitato, ma lo esaminerò più a fondo

REST sembra ok .. ma quando digito l’URL del Payload nel browser ricevo un 404 …

Questo è previsto: la rotta su cui il webhook invia i dati su Discourse accetta solo richieste POST.

Allora, ci si aspetterebbe che il ping funzioni?

Sì, il ping dovrebbe funzionare.

Qual è il formato dell’URL che stai aggiungendo al campo Payload URL del webhook su Discourse? Puoi omettere la parte del dominio dell’URL. L’URL fornito nella descrizione dell’opzione Sync Comment Data su WordPress dovrebbe essere corretto (viene generato in base alla struttura dei permalink utilizzata dal tuo sito), ma potrebbe non essere adatto al tuo caso specifico.

https://my.url.net/wp-json/wp-discourse/v1/update-topic-content

Copia e incolla dal plugin WP Discourse. Sezione “Sincronizza dati dei commenti” nella scheda webhook.

L’URL del payload sembra corretto. Hai installato sul tuo sito WordPress plugin legati alla sicurezza che potrebbero bloccare la richiesta?

Ora sì, ma non quando ho incontrato inizialmente il problema.

Il plugin è Solid Security Pro - SolidWP

Una delle funzionalità pubblicizzate dal plugin Ithemes Security è la possibilità di bloccare l’accesso alla Rest API. Vale la pena verificare che questo non sia la causa del problema.

Non è necessario utilizzare il webhook Sync Comment Data con il plugin WP Discourse. Il principale vantaggio del suo utilizzo è che consente ai commenti di apparire immediatamente dopo essere stati pubblicati su Discourse, evitando di dover attendere fino a 10 minuti per recuperare i nuovi commenti. Su siti molto trafficati, il webhook può ridurre il numero di richieste API che il sito invia a Discourse. Questo influisce principalmente sui siti che visualizzano il numero di commenti su una pagina di indice dei post.

Sì, funziona, ma volevo implementare i webhook per evitare il ritardo.
Ho verificato con il nostro sviluppatore e ha detto che non c’era alcuna API REST bloccata prima o dopo l’installazione del plugin di sicurezza. Sono perplesso.

C’è un modo per confermare l’URL del payload diverso dalla pagina webhook del plugin Discourse?

Lo screenshot che hai pubblicato sopra è un buon indicatore che l’URL del payload è corretto. Il codice di risposta 400 che stai ricevendo indica che il server WordPress sta rifiutando la richiesta. Se il problema fosse una chiave segreta non corrispondente, riceveresti un codice di risposta 500.

Se hai accesso al file di log degli accessi del tuo sito WordPress, probabilmente ti mostrerà esattamente qual è il problema.

Conosci esattamente il log di accesso di WP a cui dovrei guardare? Non riesco a trovare nulla di utile.