¡Muchas gracias a todas las partes!
Por lo tanto, espero ejecutar varias instancias de Discourse, así como un sistema de administración/coordinación general (no de Discourse) en segundo plano. Los temas se agregarán a Discourse de una de las dos maneras: o por los usuarios a través del mecanismo habitual de creación de temas de Discourse, o por el sistema de administración/coordinación a través de la API.
Donde el tema se crea a través de la API, normalmente representará una tarea o un elemento de flujo de trabajo similar que ya tendrá su propio ID no de Discourse… llamémoslo el “ID externo”.
Donde el tema es creado por el usuario dentro de Discourse, usaremos webhooks para activar una función de Azure para crear un clon tipo “stub” dentro del sistema central (para que los mensajes de Discourse se conecten a un flujo más amplio de contenido, tareas, etc.). Por lo tanto, nuevamente, el Tema de Discourse indirectamente tendrá un “ID externo” único, que proponemos actualizar el Tema con él, a través de la API.
Tenemos un componente de tema de Discourse a medida que, cada vez que se carga un tema, utilizará Ajax para recuperar información no centrada en Discourse del sistema central y mostrarla en la pantalla del Tema.
Si bien podríamos usar el ID del Tema de Discourse para parametrizar la llamada Ajax y encontrar los datos coincidentes, es más eficiente usar el “ID externo” para hacerlo (es simplemente más limpio, por varias razones: evita búsquedas, etc.).
Podríamos almacenar fácilmente el “ID externo” en un campo personalizado; ya tenemos uno para otros datos; pero notamos que la API de Temas tiene un campo “external_id” que se ve exactamente como lo que necesitamos, y preferiría usarlo por varias razones… simplemente hace que este campo algo crucial sea más fácil de incorporar en informes, exportaciones, quizás búsquedas futuras, etc.
Vea la captura de pantalla de Discourse API Docs
Supongo que este es un campo bastante nuevo; la mayor parte del asesoramiento en el foro parece relacionarse con el campo external_id del usuario, que no es lo que necesito en este momento. Como se mencionó anteriormente, estoy recuperando el modelo Ember para el tema (dentro de mi componente de tema personalizado) y puedo obtener casi toda la información sobre el tema a través de él… pero no el campo external_id.
(Como arriba, estoy obteniendo el tema usando este código, prestado de algún lugar de este sitio, no tengo idea de dónde en este momento:
const topicController = api.container.lookup("controller:topic");
if (topicController) {
const thisTopic = topicController.get("model");
Entonces, la solicitud: ¿está el campo external_id específico del tema enterrado en el modelo (“thisTopic”) en algún lugar, o estoy malinterpretando estos conceptos y debería usar el campo personalizado para almacenar este ID externo (sé que puedo hacer que ese enfoque funcione, ¡y cómo! … simplemente prefiero la limpieza y la preparación para el futuro de usar el external_id distinto, si es que está disponible).
Nuevamente, ¡gracias por la ayuda, lo aprecio!