He instalado el plugin WP Discourse y todo parece funcionar correctamente, excepto el webhook “Sync Comment Data”. Sigue devolviendo un error con un Status Code: 400.
Esta es la respuesta:
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>400 Bad Request</title>
</head><body>
<h1>Bad Request</h1>
<p>Your browser sent a request that this server could not understand.<br />
</p>
</body></html>
La payload URL parece ser correcta.
La Webhook Secret Key está configurada tanto en Discourse como en el plugin de WP.
El Content Type es application/json.
La opción Post Event está marcada.
La opción Check TLS certificate of payload url está marcada.
Verifica que la URL de la carga y la clave secreta del webhook estén configuradas correctamente.
Si eso no soluciona el problema, ¿podrías indicarme qué estructura de enlaces permanentes está utilizando tu sitio de WordPress? La estructura de enlaces permanentes se encuentra en la sección Configuración / Enlaces permanentes de tu panel de control de WordPress.
¿Sabes si has desactivado la API REST de WordPress en tu sitio? De ser así, eso provocaría que las solicitudes de webhook enviadas desde Discourse fallen.
¿Qué formato tiene la URL que estás agregando al campo Payload URL del webhook en Discourse? Puedes omitir la parte del dominio de la URL. La URL que se te proporciona en la descripción de la opción Sync Comment Data en WordPress debería ser correcta (se crea según la estructura de enlaces permanentes que usa tu sitio), pero es posible que no sea la adecuada para tu caso.
La URL del payload parece correcta. ¿Tienes algún plugin relacionado con la seguridad en tu sitio de WordPress que pueda estar bloqueando la solicitud?
Una de las funciones promocionadas del plugin Ithemes Security es que puede utilizarse para bloquear el acceso a la API REST. Sería conveniente confirmar que esto no es la causa del problema.
No es necesario utilizar el webhook Sync Comment Data con el plugin WP Discourse. La principal ventaja de usarlo es que permite que los comentarios aparezcan inmediatamente después de publicarse en Discourse, en lugar de tener que esperar hasta 10 minutos para obtener nuevos comentarios. En sitios muy activos, el webhook puede reducir la cantidad de solicitudes a la API que tu sitio realiza a Discourse. Esto afecta principalmente a sitios que muestran el número de comentarios en una página de índice de publicaciones.
Sí, lo tengo funcionando, pero quería implementar los webhooks para evitar el retraso.
Consulté con nuestro desarrollador y dijo que no hay ninguna API REST bloqueada antes de que instalara el plugin de seguridad ni después. Estoy desconcertado.
La captura de pantalla que publicaste arriba es una buena indicación de que la URL del payload es correcta. El código de respuesta 400 que estás recibiendo indica que el servidor de WordPress está rechazando la solicitud. Si el problema fuera una clave secreta que no coincide, estarías recibiendo un código de respuesta 500.
Si tienes acceso al archivo de registro de acceso de tu sitio de WordPress, probablemente te mostrará exactamente cuál es el problema.