Puente de Chat Discourse (Telegram)

:information_source: Resumen Conecta tu chat de Discourse a Telegram
:hammer_and_wrench: Enlace del Repositorio https://github.com/Lhcfl/discourse-chat-bridge
:open_book: Guía de Instalación Cómo instalar plugins en Discourse

Estoy trabajando en la conexión de Discourse con otras plataformas. Actualmente solo soporta Telegram, pero planeo soportar Matrix, y quizás Discord o QQ en el futuro, dependiendo de mi energía y el soporte que reciba.

Este plugin solo soporta la rama test-passed de Discourse, la absolutamente más reciente. ¿Por qué? Porque Discourse Chat cambia su código frecuentemente, tengo que sincronizarme con ellos.

Así que si el plugin está disponible en tu sitio y el plugin es importante para ti, por favor reduce la frecuencia de actualización de Discourse, porque puede que no tenga tiempo de sincronizar la versión del código de parche con Discourse.

Puente de Telegram

NOTAS IMPORTANTES

Este plugin utiliza nombres de usuario con sufijos .tgid y .tg para sincronizar la información del usuario (Telegram → Discourse)

Si hay nombres de usuario con los sufijos anteriores en tu sitio, ¡el usuario puede ser tomado por este plugin!

Lista de características

Este plugin es actualmente mi propio trabajo. Me resulta difícil dedicar demasiada energía a corregir errores que considero no son lo suficientemente urgentes. Así que si el error que encuentras no está en esta lista, por favor considera un PR.

Este plugin soporta la sincronización del siguiente contenido:

  • Texto plano (¡Ciertamente!)

  • Texto formateado: Negrita, Cursiva, tachado, spoiler, código en línea y

    "bloque de código"
    
  • Citas (solo Discourse → Telegram)
    Actualmente no soportamos citas para Telegram → Discourse porque Telegram aún no ha actualizado su API para citas.

  • Imágenes, stickers y videos
    Mientras escribo esta frase, parece haber algo roto en Discourse. Simplemente publicar una imagen sin un pie de foto no activará el evento :chat_message_created. Por lo tanto, es imposible reenviar imágenes de Discourse a Telegram. Este error puede resolverse automáticamente en el futuro, pero pase lo que pase, lo arreglaré.

  • Responder

  • Edición de mensajes (Solo texto)

  • Reenviar mensajes (Telegram → Discourse)

  • Eliminación de mensajes (Discourse → Telegram)
    No soportaremos la eliminación de mensajes para Telegram → Discourse porque la API del bot de Telegram no proporciona una interfaz para escuchar eventos de eliminación de mensajes.

  • Avatar y nombres de usuario (Telegram → Discourse)

El siguiente contenido no está implementado y está planeado para ser soportado en el futuro

  • Cita (Telegram → Discourse)
  • Álbumes de imágenes (Discourse ↔ Telegram)
    Actualmente solo soporta la sincronización de la primera imagen

Vista previa


Configuración

SiteSetting.chat_telegram_bridges

Es una lista y necesitas rellenar cada columna en este formato:

discourse_chat_channel_id,telegram_chat_id,bot_token

Por ejemplo

3,-123456789,123456789-XXXXXXXXXXXXXXXXXXXXXXXXXXXX

conectará el canal de chat de Discourse 3 ↔ chat de Telegram -123456789 usando el bot con el token 123456789-XXXXXXXXXXXXXXXXXXXXXXXXXXXX

NO añadas espacios después de las comas.

Ciertamente no es elegante, pero no tengo energía extra para escribir una interfaz de configuración bonita para ello. Por favor, haz un PR si la quieres.

Permitir sincronizar videos y stickers de video

Los stickers dinámicos, gifs y videos de Telegram están básicamente en formato webp. Necesitas permitir subirlos en SiteSettings.authorized_extensions, de lo contrario solo obtendrás un [Este mensaje aún no es compatible]

CHANGELOG

  • 07/11/2023 Lanzado 0.0.1

TODO

  • Conectar Matrix a Discourse
23 Me gusta

¡Esto se ve increíble, buen trabajo! :+1:

Esto debería ser site_settings :slight_smile:

2 Me gusta

Oh Dios mío, gracias, lo cambiaré de inmediato

… Y debería estar en client.en.yml. Escribí el código a primera hora de la mañana y parece que la calidad del código es un poco mala. :melting_face:

3 Me gusta

¡Increíble trabajo, gracias por crearlo!

4 Me gusta

¡Lo probé un poco y funciona bien! :+1:

2 Me gusta

¡Hola!
Gracias por un plugin tan maravilloso :raised_hands: Esto es en lo que he estado pensando durante los últimos meses :confetti_ball:. Parece que has capturado mis pensamientos :sweat_smile:
Quiero aclarar. ¿El plugin solo funcionará para el modo de chat o también se puede conectar a un tema?

¿Puedes explicar un poco más específicamente?

2 Me gusta

¡Hola! Disculpa si no expresé mis pensamientos lo suficiente :pray:. Estoy usando Google Translate y no puedo estar seguro de si entiendo correctamente las publicaciones de este foro. Y no sé programar, así que no siempre entiendo los mensajes de los programadores. Déjame mostrarte mi pregunta en forma de diagrama:

Probablemente entiendo lo que quieres decir… ¿Quieres que el contenido del chat se publique en el tema simultáneamente?
Antes tenía un software de nodejs ya hecho, pero necesitaba adaptarse a otros foros. Y he estado muy ocupado recientemente y no tengo tiempo para hacer esto.
Por un tiempo, solo admitirá chat.

2 Me gusta

No estoy del todo seguro de haber entendido bien tu pregunta, pero intentaré explicar paso a paso lo que imagino. En el período de 2021 a 2022, intenté crear un foro basado en Discourse. Sin embargo, a pesar de la relevancia del foro, el proyecto no tuvo éxito porque, en nuestra región (Asia Central), la mayoría de los residentes prefieren usar mensajeros como Telegram y WhatsApp en lugar de registrarse y usar nuevas funciones en los sitios web.

Con la llegada de la inteligencia artificial, observé cambios en las reglas del juego. Surgieron varios servicios, incluidos sitios web y aplicaciones diseñados para el uso de inteligencia artificial. Los mensajeros no pueden proporcionar completamente la funcionalidad para trabajar con inteligencia artificial, aunque Telegram está más avanzado que WhatsApp. Al enterarme de los nuevos complementos en Discourse, como Discourse AI y Chatbot, me di cuenta de que esta era una nueva oportunidad para mi sitio web.

Quiero aprovechar al máximo la capacidad de crear publicaciones temáticas (temas). Recientemente, hice una pregunta aquí, en Meta, sobre el complemento Chatbot, preguntando si el chat GPT puede recordar la primera publicación y no olvidar el contenido del tema principal después de numerosos mensajes en el hilo. Entonces, @merefield respondió que el chatbot siempre recordará la primera publicación. Este se convirtió en el criterio principal para aplicar este complemento en mi sitio.

Planeo crear secciones temáticas en el foro para la interacción con inteligencia artificial y personas reales. El formato de comunicación en Discourse a través de la creación de temas es técnicamente más avanzado en comparación con los chats. Por lo tanto, los chats no son del todo adecuados para entrenar al bot, ya que en un chat, el bot puede no recordar el tema inicial entre numerosos mensajes recientes. Planeo usar la capacidad de crear publicaciones temáticas, entrenando al bot en la primera publicación para que pueda responder a las preguntas de los usuarios dentro del tema especificado.

Sin embargo, considerando la popularidad de los mensajeros en nuestra región y el hábito de la gente de usar chats, estoy contemplando cómo brindar a los usuarios la experiencia del foro Discourse sin abandonar sus mensajeros familiares. Después de instalar el complemento Discourse Chat Bridge, descubrí que conecta el chat de Discourse con el chat de Telegram, pero no crea un puente entre una publicación publicada en el foro y el chat de Telegram.

Mis planes incluyen:

  1. Un usuario (posiblemente personal del sitio) envía un mensaje privado (PM) al bot de IA en el foro con instrucciones sobre cómo el bot debe responder a los mensajes posteriores, como asesorar a otros usuarios sobre el uso del foro.

  2. El usuario vincula este mensaje privado a la inteligencia artificial en un bot de Telegram normal.

  3. El usuario comparte el enlace al bot de Telegram con otros usuarios que aún no están registrados en el foro pero que desean obtener más información sobre él.

  4. Cada usuario, al hacer clic en el enlace del bot de Telegram, inicia una conversación privada con la inteligencia artificial, que responde y asesora de acuerdo con las instrucciones publicadas en el foro.

  5. Todos los mensajes de los usuarios dirigidos a la inteligencia artificial se publican en un tema privado del foro. Por lo tanto, los usuarios de Telegram no ven los mensajes de otros usuarios de Telegram, ya que cada usuario se comunica por separado con el bot de Telegram.

¿Entonces planeas usar el bot de Telegram como un embudo para los usuarios que vienen al foro o quieres permitir que los usuarios permanezcan solo en Telegram interactuando con el bot de IA (siendo el bot de IA un proxy entre el contenido del foro y el usuario)?

1 me gusta

Bien… esta parece una característica muy personalizada y no creo que añadiría esta característica de forma gratuita, porque mi energía es muy limitada.

1 me gusta

[quote=“Mr.X_Mr.X, post:13, topic:284691, username:Mr.X_Mr.X”]¿quieres permitir que los usuarios permanezcan solo en Telegram interactuando con el bot de IA (siendo el bot de IA un proxy entre el contenido del foro y el usuario)?
[/quote]

Sí, es correcto, el bot/chat de Telegram se utilizará como espejo y duplicará el contenido del foro y viceversa.

Ok, te entiendo. Actualmente estoy haciendo trabajo de preparación general en mi sitio web. Si me lo permites, volveré a este tema en unas semanas con propuestas más específicas en un mensaje personal para ti.

Estoy muy interesado en esto y me ofrezco a ayudar si lo necesita.

1 me gusta

Okay, gracias por la oferta :raised_hands:, volveré tan pronto como esté listo.

1 me gusta

Al probar, parece que descubrí un error en el plugin. Después de enviar un mensaje al chat a través de Telegram → Discourse, no aparece nada en el sitio en el chat (a veces solo aparece el nombre de usuario 1234567890.tgid). Para resolver este problema, tengo que actualizar la página del sitio. Después de actualizar, aparece el nombre del remitente del mensaje, pero el contenido del mensaje en sí no se muestra. Para resolver este problema, reorganizo el HTML y luego aparece el texto del mensaje del chat. Aquí hay un video:

Además, quería aclarar. Si envío un mensaje a través de Telegram a un chat grupal sin usar el botón Responder, el mensaje no llega al chat en Discourse. Resulta que para que el mensaje se envíe, debo seleccionar la función Responder en el chat de Telegram. ¿Pero qué pasa si no quiero responder al mensaje de nadie en el chat, sino que solo quiero enviar un mensaje con una pregunta a todos los miembros del grupo?

1 me gusta

Noté este problema hace unos días, pero nunca me dediqué a solucionarlo. Mi lista de tareas pendientes está muy larga ahora mismo.

Una actualización reciente de Discourse Chat rompió este plugin. Necesito encontrar tiempo para adaptarlo o enviar directamente las funciones que necesito al núcleo.

Estoy esperando una respuesta. Ahora, debido a la falta de esta función, necesito monkey patch, y mi plugin puede romperse por un commit en cualquier momento.

2 Me gusta

Ok, te entiendo. Espero que el equipo de desarrollo preste atención a tu mensaje :pray:

1 me gusta