Cómo integrar un servicio de moderación de terceros con Discourse?

Hola a todos,

Buscamos integrar un servicio externo de moderación de terceros con nuestro foro de Discourse.

El objetivo es permitir que un proveedor externo de moderación recupere las publicaciones pendientes de moderación, las revise a través de su propia plataforma y devuelva a Discourse las decisiones de moderación (aprobar, rechazar o marcar).

Me gustaría saber:

  • ¿Discourse soporta oficialmente este tipo de flujo de trabajo de moderación externa?

  • ¿Se puede implementar esta integración completamente a través de la API REST de Discourse?

  • ¿Existe una forma recomendada para recuperar publicaciones pendientes y enviar decisiones de moderación de manera programática?

  • ¿Hay algún plugin, integración o práctica recomendada existente para conectar Discourse con plataformas de moderación de terceros?

Idealmente, nos gustaría mantener Discourse como la principal plataforma de discusión, delegando las operaciones de moderación en un proveedor externo.

Cualquier orientación o ejemplo de implementaciones similares sería muy apreciado.

¡Gracias de antemano!

No como una función dedicada, pero todo en nuestra cola de revisión pasa por nuestra API, por lo que cualquier acción que un humano pueda realizar en /review es posible mediante la API. Así que puedes crear un usuario dedicado con permisos de moderación para tu integración y generar una clave de API para ese usuario.

Sí, pero hay muchas variaciones en los detalles. La cola de revisión solo ve las publicaciones si están pendientes (basándose en la configuración del sitio/categoría/usuario) o si han sido marcadas por un usuario. Si necesitas que todas las publicaciones pasen por tu sistema, tendrías que usar los webhooks de publicaciones como post_created/post_edited.

Puedes hacer polling a /review.json o usar webhooks como reviewable_created/reviewable_updated. Puedes obtener elementos individuales con /review/:id.json; esto incluirá las acciones disponibles y la versión actual.

Para enviar una acción de vuelta, puedes usar PUT /review/:id/perform/:action_id?version=N. La versión es obligatoria para no crear conflictos si el elemento ha cambiado después de la recuperación.

Si quieres averiguar cómo ejecutar una acción específica, puedes ingenieriarlo al revés haciéndolo en tu navegador a través de la interfaz de Discourse y copiando la solicitud desde la pestaña de red. Echa un vistazo a Reverse engineer the Discourse API

Discourse Akismet (probablemente el ejemplo más cercano) y Discourse AI son ambos plugins de primera parte que pueden comunicarse con terceros como parte de un proceso de marcado. Estos podrían ser útiles para echarles un vistazo.