Muito obrigado, a todas as partes!
Portanto, pretendo executar várias instâncias do Discourse, bem como um sistema de administração/coordenação (não-Discourse) abrangente em segundo plano. Os tópicos serão adicionados ao Discourse de uma das 2 maneiras - ou por usuários através do mecanismo usual de criação de tópicos do Discourse, ou pelo sistema de administração/coordenação através da API.
Onde o tópico é criado via API, ele normalmente representará uma tarefa ou item de fluxo de trabalho semelhante que já terá seu próprio ID não-Discourse… vamos chamá-lo de “ID Externo”.
Onde o tópico é criado pelo usuário dentro do Discourse, usaremos webhooks para acionar uma função do Azure para criar um clone tipo “stub” no sistema central (para que as mensagens do Discourse sejam conectadas a um fluxo mais amplo de conteúdo, tarefas, etc.). Portanto, novamente, o Tópico do Discourse indiretamente terá um “ID Externo” único - que propomos atualizar o Tópico com, via API.
Temos um componente de tema Discourse personalizado que, a cada carregamento de tópico, usará Ajax para recuperar informações não centradas no Discourse do sistema central e exibi-las na tela do Tópico.
Embora pudéssemos usar o ID do Tópico do Discourse para parametrizar a chamada Ajax e encontrar os dados correspondentes, é mais eficiente usá-lo como “ID Externo” para fazer isso (é simplesmente mais limpo, por vários motivos - evita pesquisas, etc.).
Poderíamos facilmente armazenar o “ID Externo” em um campo personalizado - já temos um para outros dados - mas notamos que a API de Tópicos tem um campo “external_id” que parece exatamente o que precisamos, e eu preferiria usá-lo por vários motivos… torna esse campo um tanto crucial mais fácil de incorporar em relatórios, exportações, talvez pesquisas futuras, etc.
Veja a captura de tela de Discourse API Docs
Acho que este é um campo bastante novo - a maior parte do conselho no fórum parece se relacionar com o campo external_id do Usuário, que não é o que preciso no momento. Como mencionado acima, estou recuperando o modelo Ember para o tópico (dentro do meu componente de tema personalizado) e posso obter quase todas as informações sobre o tópico através dele… mas não o campo external_id.
(Como acima - estou obtendo o tópico usando este código, emprestado de algum lugar deste site, não sei de onde neste momento:
const topicController = api.container.lookup("controller:topic");
if (topicController) {
const thisTopic = topicController.get("model");
Portanto, a solicitação - o campo external_id específico do tópico está oculto no modelo (“thisTopic”) em algum lugar, ou estou interpretando mal esses conceitos e devo apenas usar o campo personalizado para armazenar este ID externo (sei que posso fazer essa abordagem funcionar, e como! … Eu apenas prefiro a limpeza e a preparação para o futuro de usar o external_id distinto, se de fato estiver disponível).
Novamente, obrigado pela ajuda, eu aprecio!