Мост между Discourse и чатом (Telegram)

:information_source: Краткое описание Связывание чата Discourse с Telegram
:hammer_and_wrench: Ссылка на репозиторий https://github.com/Lhcfl/discourse-chat-bridge
:open_book: Руководство по установке Как установить плагины в Discourse

Я работаю над созданием моста между Discourse и другими платформами. На данный момент поддерживается только Telegram, но в будущем я планирую добавить поддержку Matrix, а возможно, и Discord или QQ, в зависимости от моих возможностей и полученной поддержки.

Этот плагин поддерживает только абсолютно последнюю ветку Discourse test-passed. Почему? Потому что в проекте Discourse Chat часто меняют код, и мне приходится синхронизироваться с ними.

Поэтому, если плагин доступен на вашем сайте и важен для вас, пожалуйста, уменьшите частоту обновлений Discourse, так как у меня может не быть времени синхронизировать версию патча с обновлениями Discourse.

Мост для Telegram

ВАЖНЫЕ ЗАМЕЧАНИЯ

Этот плагин использует имена пользователей с суффиксами .tgid и .tg для синхронизации информации о пользователях (Telegram
→ Discourse).

Если на вашем сайте уже есть имена пользователей с указанными суффиксами, они могут быть захвачены этим плагином!

Список функций

Этот плагин является моей собственной разработкой. Мне трудно тратить много времени на исправление ошибок, которые я считаю не достаточно срочными. Поэтому, если найденная вами ошибка отсутствует в этом списке, пожалуйста, рассмотрите возможность создания PR.

Этот плагин поддерживает синхронизацию следующего контента:

  • Обычный текст (Конечно!)

  • Форматированный текст: Жирный, Курсив, Зачеркнутый, скрытый текст, встроенный код и

    "блок кода"
    
  • Цитаты (только Discourse → Telegram)
    Мы пока не поддерживаем цитирование в направлении Telegram → Discourse, так как Telegram еще не обновил свой API для цитат.

  • Изображения, стикеры и видео
    На момент написания этого текста в Discourse, похоже, есть проблема. Просто отправка изображения без подписи не вызывает событие :chat_message_created. Следовательно, пересылка изображений из Discourse в Telegram невозможна. Эта ошибка может быть исправлена автоматически в будущем, но в любом случае я займусь её устранением.

  • Ответы

  • Редактирование сообщений (только текст)

  • Пересылка сообщений (Telegram → Discourse)

  • Удаление сообщений (Discourse → Telegram)
    Мы НЕ будем поддерживать удаление сообщений в направлении Telegram → Discourse, так как API бота Telegram не предоставляет интерфейса для прослушивания событий удаления сообщений.

  • Аватары и имена пользователей (Telegram → Discourse)

Следующие функции еще не реализованы, но планируется их поддержка в будущем:

  • Цитирование (Telegram → Discourse)
  • Альбомы с изображениями (Discourse ↔ Telegram)
    В настоящее время поддерживается синхронизация только первого изображения

Предпросмотр


Конфигурация

SiteSetting.chat_telegram_bridges

Это список, и вам нужно заполнить каждую строку в следующем формате:

discourse_chat_channel_id,telegram_chat_id,bot_token

Например:

3,-123456789,123456789-XXXXXXXXXXXXXXXXXXXXXXXXXXXX

создаст мост между каналом Discourse 3 ↔ чатом Telegram -123456789, используя бота с токеном 123456789-XXXXXXXXXXXXXXXXXXXXXXXXXXXX.

НЕ добавляйте пробелы после запятых.

Это, безусловно, не элегантно, но у меня нет лишних сил, чтобы создать красивый интерфейс конфигурации для этого. Пожалуйста, создавайте PR, если хотите этого.

Разрешить синхронизацию видео и видео-стикеров

Динамические стикеры, GIF-анимации и видео в Telegram в основном имеют формат webp. Вам необходимо разрешить загрузку таких файлов в настройках SiteSettings.authorized_extensions, иначе вы получите сообщение [Это сообщение пока не поддерживается].

ИСТОРИЯ ИЗМЕНЕНИЙ

  • 2023/11/07 Выпуск версии 0.0.1

ПЛАНЫ

  • Создание моста между Matrix и Discourse
23 лайка

Это выглядит потрясающе, отличная работа! :+1:

Это должно быть site_settings :slight_smile:

2 лайка

О боже, спасибо, я изменю это прямо сейчас

…И это должно быть в client.en.yml. Я писал код рано утром, и, похоже, качество кода немного хромает. :melting_face:

3 лайка

Замечательная работа, спасибо за создание этого!

4 лайка

Я немного протестировал, и всё работает отлично! :+1:

2 лайка

Привет!
Спасибо за такой замечательный плагин :raised_hands: Это именно то, о чём я думал последние несколько месяцев :confetti_ball:. Похоже, вы уловили мои мысли :sweat_smile:
Хочу уточнить: плагин будет работать только в режиме чата или его также можно подключить к теме?

Можете уточнить чуть подробнее?

2 лайка

Привет! Извините, если я недостаточно ясно выразил свои мысли :pray:. Я использую Google Translate и не могу быть уверен, что правильно понимаю посты на этом форуме. Кроме того, я не умею программировать, поэтому не всегда понимаю сообщения программистов. Позвольте мне показать свой вопрос в виде схемы:

Я, вероятно, понимаю, что вы имеете в виду… Вы хотите, чтобы сообщения из чата одновременно публиковались в теме?
У меня ранее было готовое решение на Node.js, но его нужно было адаптировать под другие форумы. В последнее время я был очень занят и не нашёл времени на это.
В ближайшее время будет поддерживаться только чат.

2 лайка

Я не до конца уверен, правильно ли я понял ваш вопрос, но попробую пошагово объяснить, что я имею в виду. В период с 2021 по 2022 год я пытался создать форум на базе Discourse. Однако, несмотря на актуальность форума, проект не увенчался успехом, потому что в нашем регионе (Центральная Азия) большинство жителей предпочитают использовать мессенджеры, такие как Telegram и WhatsApp, вместо регистрации и использования новых функций на веб-сайтах.

С появлением искусственного интеллекта я заметил изменения в правилах игры. Появились различные сервисы, включая веб-сайты и приложения, предназначенные для работы с искусственным интеллектом. Мессенджеры не могут полностью обеспечить функциональность для работы с ИИ, хотя Telegram более продвинут, чем WhatsApp. Изучая новые плагины в Discourse, такие как Discourse AI и Chatbot, я понял, что это новая возможность для моего сайта.

Я хочу полностью использовать возможность создания тематических постов (тем). Недавно я задал вопрос здесь — на Meta — о плагине Chatbot, спрашивая, может ли чат с GPT запоминать первый пост и не забывать содержание основной темы после множества сообщений в потоке. Тогда @merefield ответил, что чат-бот всегда будет помнить первый пост. Это стало основным критерием для применения этого плагина на моем сайте.

Я планирую создать тематические разделы на форуме для взаимодействия с искусственным интеллектом и реальными людьми. Формат общения в Discourse через создание тем технически более продвинут по сравнению с чатами. Поэтому чаты не совсем подходят для обучения бота, так как в чате бот может не помнить начальную тему среди множества недавних сообщений. Я планирую использовать возможность создания тематических постов, обучая бота в первом посте, чтобы он мог отвечать на вопросы пользователей в рамках указанной темы.

Однако, учитывая популярность мессенджеров в нашем регионе и привычку людей использовать чаты, я размышляю о том, как предоставить пользователям опыт форума Discourse, не отказываясь от привычных им мессенджеров. После установки плагина Discourse Chat Bridge я обнаружил, что он соединяет чат Discourse с чатом Telegram, но не создает мост между опубликованным постом на форуме и чатом Telegram.

Мои планы включают:

  1. Пользователь (возможно, сотрудник сайта) отправляет боту ИИ на форуме личное сообщение (PM) с инструкциями о том, как бот должен отвечать на последующие сообщения, например, советуя другим пользователям пользоваться форумом.

  2. Пользователь связывает это личное сообщение с искусственным интеллектом в обычном боте Telegram.

  3. Пользователь делится ссылкой на бота Telegram с другими пользователями, которые еще не зарегистрированы на форуме, но хотят узнать о нем больше.

  4. Каждый пользователь, нажав на ссылку в боте Telegram, начинает частный разговор с искусственным интеллектом, который отвечает и дает советы в соответствии с инструкциями, размещенными на форуме.

  5. Все сообщения пользователей, направленные искусственному интеллекту, публикуются в частной теме на форуме. Таким образом, пользователи Telegram не видят сообщения других пользователей Telegram, так как каждый пользователь общается отдельно с ботом Telegram.

Итак, вы планируете использовать Telegram-бота как воронку для пользователей, приходящих на форум, или хотите, чтобы пользователи оставались исключительно в Telegram, взаимодействуя с AI-ботом (где AI-бот выступает в качестве посредника между контентом форума и пользователем)?

1 лайк

Ладно… это выглядит как очень персонализированная функция, и я не думаю, что стал бы добавлять её бесплатно, потому что моя энергия очень ограничена.

1 лайк

Да, всё верно, телеграм-бот/чат будет использоваться как зеркало для дублирования контента с форума и обратно.

Понял вас. Сейчас я занимаюсь общей подготовкой своего сайта. Если вы не против, я вернусь к этой теме через пару недель и отправлю вам в личном сообщении более конкретные предложения.

Меня это очень интересует, и я готов помочь, если нужно.

1 лайк

Ладно, спасибо за предложение :raised_hands:, я вернусь, как только буду готов.

1 лайк

При тестировании, похоже, я обнаружил ошибку в плагине. После отправки сообщения в чат через Telegram → Discourse ничего не появляется на сайте в чате (иногда отображается только имя пользователя 1234567890.tgid). Чтобы решить эту проблему, мне приходится обновлять страницу сайта. После обновления появляется имя отправителя сообщения, но сам текст сообщения не отображается. Чтобы решить эту проблему, я перестраиваю HTML, и тогда текст сообщения в чате появляется. Вот видео:

Также я хотел уточнить. Если я отправляю сообщение через Telegram в групповой чат без использования кнопки «Ответить», сообщение не попадает в чат Discourse. Получается, что для отправки сообщения мне необходимо выбрать функцию «Ответить» в чате Telegram. Но что делать, если я не хочу отвечать на чье-либо сообщение в чате, а просто хочу отправить сообщение с вопросом всем участникам группы?

1 лайк

Я заметил эту проблему несколько дней назад, но так и не дошёл до её исправления, честно говоря. Мой список дел сейчас завален.

Недавнее обновление Discourse Chat сломало этот плагин. Мне нужно найти время, чтобы адаптировать его или напрямую внести необходимые функции в ядро.

Я жду ответа. Сейчас, из-за отсутствия этой функции, мне приходится использовать monkey patch, и мой плагин может быть сломан любым коммитом в любой момент.

2 лайка

Понял тебя. Надеюсь, команда разработки обратит внимание на твоё сообщение :pray:

1 лайк