Pergunta: Menção automática ao publicar um URL de tópico compartilhado em outro Discourse

Estou me perguntando se há uma maneira, possivelmente ao modificar a URL do tópico compartilhado, para que um link seja mencionado automaticamente pela minha conta do sistema quando for mencionado neste fórum meta ou em outro lugar.

Atualmente, simulamos esse comportamento criando uma postagem e transferindo a propriedade para o sistema. Veja em ação aqui.

Não estou entendendo. Você poderia fornecer um exemplo específico e do mundo real do por que isso seria desejável?

Claro,

  1. Eu crio uma nova postagem no Fórum A
  2. Eu compartilho essa postagem via URL para o Fórum B, que é outra instância do Discourse.
  3. De alguma forma, o Fórum A consegue identificar que isso ocorreu e aciona o system para responder automaticamente na thread original do Fórum A, exibindo:

Certo, isso ajuda, mas por quê? Qual é a importância disso, por que é necessário?

(Acho que fazemos algo semelhante na integração com o GitHub, onde vinculamos tópicos do Discourse ao commit, mas isso é juntar duas coisas excelentes e diferentes, como chocolate e pasta de amendoim. Aqui, você está juntando pasta de amendoim… e… hum… mais pasta de amendoim?)

Achei isso muito útil, já que usamos plataformas como meta.discourse para discutir questões relacionadas ao nosso próprio Discourse, e a maioria dos administradores não pensa em vincular esses tóculos de volta para fornecer contexto aos usuários e aos futuros mantenedores. Eu assumi recentemente a manutenção do nosso fórum, então espero deixar mais informações para os mantenedores no futuro. :slight_smile:

A “federação” de tecnologias de fórum parece ser um tema em alta atualmente. Parece que não é possível, mas achei melhor verificar.

É insanamente complicado. É o equivalente social do “carros autônomos totalmente autônomos estão logo ali no horizonte”.

O caso de uso GitHub ⇿ Discourse é defensável, mas peer to peer muito menos, na minha opinião, pela lei transitiva dos Reeses Peanut Butter Cups.

Isso não é também como funcionavam os pingbacks?

Eles se tornaram o pesadelo da blogosfera, com toneladas de abuso e nunca foram realmente resolvidos.

Talvez você pudesse permitir apenas sites confiáveis, mas ainda parece muito trabalho para pouco retorno. O que acontece quando um servidor atualiza para uma versão ou padrão mais recente?

Por outro lado, isso não seria relativamente fácil de fazer usando incoming_links, incoming_referers e incoming_domains?

E se fosse possível colocar um incoming_domain em uma lista de permissões (whitelist) e pudéssemos obter oneboxes para links desses domínios que apontam para aquele tópico?

Edição: o trecho abaixo listará todos os links em sites Discourse* que apontam para um tópico específico. Deve ser bem simples colocar isso em uma tarefa agendada que insere uma postagem no tópico sempre que encontrar um novo link. O oneboxing cuidará do resto.

topic = Topic.find(xxx)
IncomingLink.where("post_id in (#{topic.posts.pluck(:id).join(',')})").where("incoming_referer_id is not null").each do |link|
  next unless link.incoming_referer.path.start_with?('/t/')
  puts "https://#{link.incoming_referer.incoming_domain.name}#{link.incoming_referer.path}"
end

) Estou usando uma verificação simples agora para determinar se é um link do Discourse, mas isso poderia até mesmo solicitar a página inicial do site e inspecionar os metadados — embora eu ache que isso funcionaria muito bem para links de sites que não são do Discourse também. Talvez seja possível colocar os domínios em uma lista de permissões nas configurações do plugin.