Pregunta: Mención automática al publicar una URL de tema compartido en otro Discourse

Me pregunto si existe una manera, posiblemente modificando la URL del tema compartido, para que una cuenta de sistema mencione automáticamente un enlace cuando se mencione en este foro meta o en otro lugar.

Actualmente, simulamos este comportamiento creando una publicación y cambiando la propiedad a sistema. Verlo en acción aquí.

No estoy siguiendo. ¿Podrías proporcionar un ejemplo específico y del mundo real de por qué esto sería deseable?

Claro,

  1. Creo un nuevo post en el Foro A
  2. Comparto ese post mediante su URL en el Foro B, que es otra instancia de Discourse.
  3. De alguna manera, el Foro A puede identificar que esto ocurrió y activa system para responder automáticamente en el hilo original del Foro A, mostrando:

Bien, eso ayuda, pero ¿por qué? ¿Cuál es la importancia de esto, por qué es necesario?

(Imagino que hacemos algo similar para la integración con GitHub, donde vinculamos temas de Discourse con los commits, pero eso es mezclar dos cosas excelentes y distintas, como el chocolate y la mantequilla de cacahuete. Aquí estás mezclando mantequilla de cacahuete… y… err… ¡más mantequilla de cacahuete?)

Simplemente encuentro que esto es realmente útil, ya que estamos utilizando plataformas como meta.discourse para abordar problemas discutidos en nuestro propio Discourse, y la mayoría de los administradores no pensarán en enlazar estos hilos para dar contexto a los usuarios y a los futuros encargados del mantenimiento. Solo recientemente asumí el mantenimiento de nuestro foro, así que espero dejar más información para los futuros encargados. :slight_smile:

La “federación” de la tecnología de foros parece ser un tema candente en estos días. Parece que no es posible, pero pensé que valía la pena preguntar.

Es insanamente complicado. Es el equivalente a los “coches totalmente autónomos que están a la vuelta de la esquina” en el software social.

El caso de uso de GitHub ⇿ Discourse es defendible, pero el punto a punto mucho menos, en mi opinión, por la ley transitiva de los Reese’s Peanut Butter Cups.

¿No es así como funcionaban también los pingbacks?

Se convirtieron en la plaga de la blogosfera, con un montón de abusos y nunca se resolvieron realmente.

Podrías, tal vez, permitir solo sitios de confianza, pero aún suena a mucho dolor de cabeza por poco beneficio. ¿Qué pasa cuando un servidor se actualiza a una versión o estándar más reciente?

Por otro lado, ¿no sería esto relativamente fácil de hacer usando incoming_links, incoming_referers y incoming_domains?

¿Y si se pudiera permitir una lista blanca de un incoming_domain y obtener oneboxes para los enlaces desde esos dominios hacia ese tema?

Edición: el fragmento de código a continuación listará todos los enlaces en sitios de Discourse* que apuntan a un tema específico. Debería ser bastante sencillo integrarlo en un trabajo programado que inserte una publicación en el tema cada vez que encuentre un nuevo enlace. El oneboxing se encargará del 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

*) Actualmente estoy usando una verificación simple para determinar si es un enlace de Discourse, pero incluso podría solicitar la página de inicio del sitio e inspeccionar los metadatos. Aunque creo que esto también funcionaría muy bien para enlaces desde sitios que no son de Discourse. Quizás se puedan permitir en la lista blanca los dominios en la configuración del plugin.