Usando la API de Discourse con Front App

¡Hola a todos! Actualmente estoy trabajando en una integración entre Front App y Discourse. Por ahora, estoy usando Pipedream para conectar ambos.

He logrado configurar dos flujos de trabajo:

  1. Discourse → Front App. Cuando se recibe un nuevo mensaje en Discourse, se publica ese mensaje en Front.
  2. Front → Discourse. Cuando respondo a ese mensaje importado de Discourse en Front, un webhook de Pipedream que escucha las nuevas respuestas en Front utiliza la API de Discourse para publicar la respuesta en Discourse. Esto funciona muy bien; sin embargo, cuando voy a Front, se muestra mi respuesta (ya que activa el flujo 1, es decir, cuando se recibe un nuevo mensaje en Discourse), y ahora tengo dos mensajes en el hilo de la bandeja de entrada: el que envié desde Front y el mismo, pero importado por el flujo 1.

¿Alguien tiene alguna idea sobre cómo “excluir” estos mensajes enviados desde Front que se importan mediante ese primer flujo? ¿Es esto posible con la API de Discourse?

¡Gracias de antemano!

¡Hola! :wave: Parece que tienes una integración muy interesante en marcha.

Para poder ayudarte mejor, tengo algunas preguntas:

  1. ¿Estás enrutando con base en la creación de un mensaje privado (PM) de Discourse o en un nuevo tema / respuesta a un tema?

Si el enrutamiento se basa en un nuevo tema o respuesta a un tema…

  1. En tu instancia de Discourse, ¿estás enrutando cualquier tema o respuesta a un tema a Front como un nuevo mensaje?

  2. Cuando respondes a un mensaje desde Front, ¿estás utilizando la API para enviar una respuesta al tema original?

¡Hola Jordan!

Gracias por responderme. :blush:

Para responder a tus preguntas:

  1. Sí, es cualquier tema o respuesta a un tema hacia Front.
  2. Una vez que respondo desde Front, se envía desde una URL (generada en Pipedream) que activa la API POST de Discourse hacia el tema original (lo encuentra mediante el ID del tema).

Básicamente, funciona así…
Yo envío una respuesta a una persona en Front.
Luego, la API de Discourse (desde el Flujo de trabajo 1) detecta que hay un nuevo mensaje en el foro y lo envía como un nuevo mensaje en Front.

No quiero esa duplicación.

Sé que esto puede resultar confuso, así que avísame si no lo expliqué bien. :sweat_smile: ¡Cualquier orientación sería de gran ayuda!

¿Podemos decir con seguridad que solo deseas que un tema de Discourse se envíe como mensaje a Front en su creación inicial y, después de eso, nunca más?

¿He entendido esto correctamente?

  1. Se crea un tema en Discourse
    1a) El tema se convierte en un mensaje en Front
  2. Un usuario responde al mensaje de Front
    2a) El mensaje de Front se envía a Discourse como respuesta al tema creado.

¿Responderá un usuario de Discourse a 2a aquí? ¿O la conversación termina después de este punto?

La razón por la que pregunto es que podrías considerar verificar el ID de la publicación al crearla cuando proviene de Front. Si Front desencadena la creación de post id#345 en Discourse

…entonces, en tu código de Pipedream que monitorea y convierte una publicación de Discourse en una publicación de Front, puedes asegurarte de que el Post Id no sea igual al que acabas de crear; si lo es, entonces no lo conviertas en un mensaje de Front…

¿Es esto posible en Pipedream? No estoy familiarizado con ese producto.

Sí, los usuarios de Discourse aún pueden responder a 2a. ¡Ya tenemos esto funcionando! Así que cuando se envían nuevos mensajes de Discourse desde miembros de la comunidad, se agregan automáticamente al hilo de Front.

Esta captura de pantalla puede ayudar a ilustrarlo mejor:

Como puedes ver, respondí desde Front con “Solo un mensaje de prueba desde Front” y, como eso se publica en Discourse, la API de Discourse detecta que es un mensaje nuevo y, por lo tanto, envía un nuevo mensaje al hilo.

Tu respuesta me ha hecho pensar :thinking: Quizás crear alguna función que busque un ID de Front para luego excluirlo en la API DE ENVIAR MENSAJE de Discourse… Lo probaré. ¡Agradezco mucho tu ayuda! Gracias :blush:

¡Hola @jordan.vidrine! Solo quería darte las gracias por la ayuda. Hablarlo contigo en este hilo me dio una idea y ahora funciona. :sparkles: Específicamente esta parte:

La razón por la que pregunto es porque podrías revisar la verificación del ID del post al crearlo desde Front. Si Front activó la creación del post #345 en Discourse

¡Saludos!

¡Eso es genial! Me alegra saber que te está yendo bien :+1: