Webhook schlägt mit dem WP Discourse-Plugin fehl

Ich habe das WP Discourse-Plugin installiert, und alles scheint gut zu funktionieren, außer dem Webhook „Sync Comment Data". Er wird ständig mit „Failed" und dem Statuscode 400 zurückgemeldet.

Dies ist die Antwort:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>400 Bad Request</title>
</head><body>
<h1>Bad Request</h1>
<p>Ihr Browser hat eine Anfrage gesendet, die dieser Server nicht verstehen konnte.<br />
</p>
</body></html>
  • Die payload URL scheint korrekt zu sein.
  • Der Webhook Secret Key ist sowohl in Discourse als auch im WP-Plugin hinterlegt.
  • Der Content Type ist application/json.
  • Post Event ist aktiviert.
  • Check TLS certificate of payload url ist aktiviert.
  • Active ist aktiviert.

Ich wäre für jeden Hinweis sehr dankbar.

Überprüfen Sie noch einmal, ob die Payload-URL und der Webhook-Geheimschlüssel korrekt eingestellt sind.

Wenn das das Problem nicht löst, können Sie mir bitte mitteilen, welche Permalink-Struktur Ihre WordPress-Site verwendet? Die Permalink-Struktur finden Sie im Abschnitt Einstellungen / Permalinks Ihres WordPress-Dashboards.

Payload-URL und Webhook-Geheimschlüssel sind korrekt eingestellt.

Die Permalink-Struktur ist auf “Beitragname” gesetzt.

Welche Antwort erhältst du von deiner WordPress-Seite, wenn du auf der Discourse-Webhook-Ereignisliste auf die Schaltfläche „Ping

Ich frage mich nur, ob es dazu noch weitere Gedanken gibt …

Wissen Sie, ob Sie die WordPress REST API auf Ihrer Website deaktiviert haben? Wenn ja, würde dies dazu führen, dass die von Discourse gesendeten Webhook-Anfragen fehlschlagen.

Scheint aktiviert zu sein, aber ich werde mir das genauer ansehen.

REST sieht okay aus .. aber wenn ich die Payload-URL im Browser eingebe, erhalte ich einen 404-Fehler …

Das ist zu erwarten. Die Route, an die der Webhook auf Discourse sendet, akzeptiert nur eine POST-Anfrage.

Würde der Ping dann funktionieren?

Ja, der Ping sollte funktionieren.

In welcher Form geben Sie die URL in das Feld „Payload URL

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

Kopieren und einfügen aus dem WP Discourse-Plugin. Abschnitt „Kommentardaten synchronisieren

Die Payload-URL sieht korrekt aus. Haben Sie auf Ihrer WordPress-Seite Sicherheits-Plugins, die die Anfrage blockieren könnten?

Das tun wir jetzt, aber nicht, als ich das Problem zum ersten Mal festgestellt habe.

Das Plugin ist Solid Security Pro - SolidWP

Eine der beworbenen Funktionen des Ithemes Security-Plugins ist die Möglichkeit, den Zugriff auf die Rest-API zu blockieren. Es lohnt sich, zu überprüfen, ob dies die Ursache des Problems ist.

Sie müssen das Sync Comment Data-Webhook nicht mit dem WP Discourse-Plugin verwenden. Der Hauptvorteil der Nutzung besteht darin, dass Kommentare sofort nach ihrer Veröffentlichung auf Discourse angezeigt werden, anstatt bis zu 10 Minuten warten zu müssen, um neue Kommentare abzurufen. Auf sehr stark frequentierten Seiten kann das Webhook die Anzahl der API-Anfragen reduzieren, die Ihre Seite an Discourse sendet. Dies betrifft hauptsächlich Seiten, die auf einer Post-Indexseite die Anzahl der Kommentare anzeigen.

Ja, es funktioniert, aber ich wollte die Webhooks implementieren, um die Verzögerung zu vermeiden. Ich habe mit unserem Entwickler gesprochen, und er sagte, dass es vor und nach der Installation des Sicherheits-Plugins keine REST-API-Blockade gibt. Ich bin ratlos.

Gibt es eine Möglichkeit, die Payload-URL zu bestätigen, ohne die Webhook-Seite des Discourse-Plugins zu verwenden?

Der von dir oben gepostete Screenshot ist ein guter Hinweis darauf, dass die Payload-URL korrekt ist. Der von dir erhaltene Antwortcode 400 zeigt an, dass der WordPress-Server die Anfrage ablehnt. Hätte das Problem mit einem falschen geheimen Schlüssel zu tun, würdest du einen Antwortcode 500 erhalten.

Wenn du Zugriff auf die Zugriffsprotokolldatei deiner WordPress-Site hast, wird dort wahrscheinlich genau angezeigt, worin das Problem besteht.

Bist du mit dem genauen WP-Zugriffsprotokoll vertraut, das ich überprüfen sollte? Ich kann nichts Nützliches finden.