Представляем Discourse Chat (BETA)

В настоящее время существует возможность привязать несколько каналов к одной категории.

1 лайк

Если мы установим плагин с открытым исходным кодом, будет ли плавный переход, когда он будет интегрирован в ядро/публичную часть?

1 лайк

Этот плагин официально поддерживается. Если в будущем он будет перенесен в ядро (на данный момент таких планов нет), будет обеспечен корректный путь миграции, да.

9 лайков

Было бы здорово, если бы можно было создавать каналы как приватные/публичные, и у них были бы публичные URL-адреса для индексации поисковыми системами. Это привлечет дополнительный трафик в сообщество.

3 лайка

После обновления и 10-секундного теста: теперь я могу закрывать ненужные каналы, даже и особенно приватные.

Как часто говорят наши британские друзья: просто великолепно.

9 лайков

Обнаружена ошибка, которая, по-видимому, связана с UX. При наведении курсора на сообщение и переходе к панели инструментов взаимодействия с сообщением, а затем нажатии кнопки эмодзи — оверлей с эмодзи остается на экране даже после нажатия кнопок «Ответить» или «Три точки». Однако клик вне панели инструментов приводит к закрытию окна с эмодзи.

Ниже приведена запись этого поведения: как видно, оверлей с тремя точками скрыт за оверлеем с эмодзи.

CleanShot 2022-01-07 at 07.17.32

7 лайков

Спасибо за добавление кнопок «X» для скрытия чатов. Несколько замечаний:

  1. Кнопки «X» вообще не отображаются на мобильных устройствах (поскольку они скрыты до наведения курсора?), поэтому сейчас нельзя покинуть личные чаты на мобильном.
  2. Сейчас невозможно добавить новый личный чат — возникает эта ошибка, как на компьютере, так и на мобильном.
3 лайка

Это временное компромиссное решение. Через несколько месяцев мы добавим возможность покидать чаты свайпом на мобильном устройстве.

Не могли бы вы пересобрать приложение и попробовать снова?

6 лайков

Привет, у меня всё работает отлично, но на мобильных телефонах я не вижу опции для закрытия чата.

3 лайка

+1 к вопросу о требованиях к производительности.
Сейчас я использую небольшой дроплет, который постоянно испытывает нехватку ресурсов. (Да, я знаю, что нужно перейти на более мощный дроплет :wink:)

1 лайк

Редко. Примерно в 19 случаях из 20 попыток пересборки одна из 50 команд git во время процесса зависает навсегда. Очень странно. Это началось лишь несколько недель назад.

3 лайка

Discourse Chat и блокировка категорий (версия Pavilion) несовместимы на моем экземпляре.

Журнал ошибок с обратным отслеживанием:

app/models/concerns/has_custom_fields.rb:173:in `[]'
plugins/discourse-category-lockdown/plugin.rb:16:in `block (2 levels) in activate!'
(eval):33:in `_fast_attributes'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:456:in `attributes'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:480:in `_serializable_hash'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:359:in `serializable_hash'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:347:in `as_json'
plugins/discourse-chat/app/serializers/chat_channel_serializer.rb:38:in `chatable'
(eval):4:in `_fast_attributes'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:456:in `attributes'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:480:in `_serializable_hash'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:359:in `serializable_hash'
active_model_serializers (0.8.4) lib/active_model/serializer/associations.rb:124:in `block in serialize'
active_model_serializers (0.8.4) lib/active_model/serializer/associations.rb:123:in `map'
active_model_serializers (0.8.4) lib/active_model/serializer/associations.rb:123:in `serialize'
lib/freedom_patches/ams_include_without_root.rb:57:in `include!'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:368:in `block in include_associations!'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:367:in `each_key'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:367:in `include_associations!'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:362:in `serializable_hash'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:347:in `as_json'
app/controllers/application_controller.rb:486:in `serialize_data'
app/controllers/application_controller.rb:495:in `render_serialized'
plugins/discourse-chat/app/controllers/chat_channels_controller.rb:6:in `index'
actionpack (6.1.4.1) lib/action_controller/metal/basic_implicit_render.rb:6:in `send_action'
actionpack (6.1.4.1) lib/abstract_controller/base.rb:228:in `process_action'
actionpack (6.1.4.1) lib/action_controller/metal/rendering.rb:30:in `process_action'
actionpack (6.1.4.1) lib/abstract_controller/callbacks.rb:42:in `block in process_action'
activesupport (6.1.4.1) lib/active_support/callbacks.rb:117:in `block in run_callbacks'
app/controllers/application_controller.rb:387:in `block in with_resolved_locale'
i18n (1.8.11) lib/i18n.rb:314:in `with_locale'
app/controllers/application_controller.rb:387:in `with_resolved_locale'
activesupport (6.1.4.1) lib/active_support/callbacks.rb:126:in `block in run_callbacks'
activesupport (6.1.4.1) lib/active_support/callbacks.rb:137:in `run_callbacks'
actionpack (6.1.4.1) lib/abstract_controller/callbacks.rb:41:in `process_action'
actionpack (6.1.4.1) lib/action_controller/metal/rescue.rb:22:in `process_action'
actionpack (6.1.4.1) lib/action_controller/metal/instrumentation.rb:34:in `block in process_action'
activesupport (6.1.4.1) lib/active_support/notifications.rb:203:in `block in instrument'
activesupport (6.1.4.1) lib/active_support/notifications/instrumenter.rb:24:in `instrument'
activesupport (6.1.4.1) lib/active_support/notifications.rb:203:in `instrument'
actionpack (6.1.4.1) lib/action_controller/metal/instrumentation.rb:33:in `process_action'
actionpack (6.1.4.1) lib/action_controller/metal/params_wrapper.rb:249:in `process_action'
activerecord (6.1.4.1) lib/active_record/railties/controller_runtime.rb:27:in `process_action'
actionpack (6.1.4.1) lib/abstract_controller/base.rb:165:in `process'
actionview (6.1.4.1) lib/action_view/rendering.rb:39:in `process'
rack-mini-profiler (2.3.3) lib/mini_profiler/profiling_methods.rb:85:in `block in profile_method'


actionpack (6.1.4.1) lib/action_controller/metal.rb:190:in `dispatch'
actionpack (6.1.4.1) lib/action_controller/metal.rb:254:in `dispatch'
actionpack (6.1.4.1) lib/action_dispatch/routing/route_set.rb:50:in `dispatch'
actionpack (6.1.4.1) lib/action_dispatch/routing/route_set.rb:33:in `serve'
actionpack (6.1.4.1) lib/action_dispatch/journey/router.rb:50:in `block in serve'
actionpack (6.1.4.1) lib/action_dispatch/journey/router.rb:32:in `each'
actionpack (6.1.4.1) lib/action_dispatch/journey/router.rb:32:in `serve'
actionpack (6.1.4.1) lib/action_dispatch/routing/route_set.rb:842:in `call'
railties (6.1.4.1) lib/rails/engine.rb:539:in `call'
railties (6.1.4.1) lib/rails/railtie.rb:207:in `public_send'
railties (6.1.4.1) lib/rails/railtie.rb:207:in `method_missing'
actionpack (6.1.4.1) lib/action_dispatch/routing/mapper.rb:20:in `block in <class:Constraints>'
actionpack (6.1.4.1) lib/action_dispatch/routing/mapper.rb:49:in `serve'
actionpack (6.1.4.1) lib/action_dispatch/journey/router.rb:50:in `block in serve'
actionpack (6.1.4.1) lib/action_dispatch/journey/router.rb:32:in `each'
actionpack (6.1.4.1) lib/action_dispatch/journey/router.rb:32:in `serve'
actionpack (6.1.4.1) lib/action_dispatch/routing/route_set.rb:842:in `call'
lib/middleware/omniauth_bypass_middleware.rb:71:in `call'
rack (2.2.3) lib/rack/tempfile_reaper.rb:15:in `call'
rack (2.2.3) lib/rack/conditional_get.rb:27:in `call'
rack (2.2.3) lib/rack/head.rb:12:in `call'
actionpack (6.1.4.1) lib/action_dispatch/http/permissions_policy.rb:22:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:356:in `call'
rack (2.2.3) lib/rack/session/abstract/id.rb:266:in `context'
rack (2.2.3) lib/rack/session/abstract/id.rb:260:in `call'
actionpack (6.1.4.1) lib/action_dispatch/middleware/cookies.rb:689:in `call'
actionpack (6.1.4.1) lib/action_dispatch/middleware/callbacks.rb:27:in `block in call'
activesupport (6.1.4.1) lib/active_support/callbacks.rb:98:in `run_callbacks'
actionpack (6.1.4.1) lib/action_dispatch/middleware/callbacks.rb:26:in `call'
actionpack (6.1.4.1) lib/action_dispatch/middleware/actionable_exceptions.rb:18:in `call'
actionpack (6.1.4.1) lib/action_dispatch/middleware/debug_exceptions.rb:29:in `call'
actionpack (6.1.4.1) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call'
logster (2.10.1) lib/logster/middleware/reporter.rb:43:in `call'
railties (6.1.4.1) lib/rails/rack/logger.rb:37:in `call_app'
railties (6.1.4.1) lib/rails/rack/logger.rb:28:in `call'
config/initializers/100-quiet_logger.rb:23:in `call'
config/initializers/100-silence_logger.rb:31:in `call'
actionpack (6.1.4.1) lib/action_dispatch/middleware/remote_ip.rb:81:in `call'
request_store (1.5.0) lib/request_store/middleware.rb:19:in `call'
actionpack (6.1.4.1) lib/action_dispatch/middleware/request_id.rb:26:in `call'
lib/middleware/enforce_hostname.rb:23:in `call'
rack (2.2.3) lib/rack/method_override.rb:24:in `call'
actionpack (6.1.4.1) lib/action_dispatch/middleware/executor.rb:14:in `call'
rack (2.2.3) lib/rack/sendfile.rb:110:in `call'
actionpack (6.1.4.1) lib/action_dispatch/middleware/host_authorization.rb:92:in `call'
rack-mini-profiler (2.3.3) lib/mini_profiler/profiler.rb:249:in `call'


message_bus (4.0.0) lib/message_bus/rack/middleware.rb:60:in `call'
lib/middleware/request_tracker.rb:198:in `call'
railties (6.1.4.1) lib/rails/engine.rb:539:in `call'
railties (6.1.4.1) lib/rails/railtie.rb:207:in `public_send'
railties (6.1.4.1) lib/rails/railtie.rb:207:in `method_missing'
rack (2.2.3) lib/rack/urlmap.rb:74:in `block in call'
rack (2.2.3) lib/rack/urlmap.rb:58:in `each'
rack (2.2.3) lib/rack/urlmap.rb:58:in `call'
unicorn (6.1.0) lib/unicorn/http_server.rb:634:in `process_client'
unicorn (6.1.0) lib/unicorn/http_server.rb:739:in `worker_loop'
unicorn (6.1.0) lib/unicorn/http_server.rb:547:in `spawn_missing_workers'
unicorn (6.1.0) lib/unicorn/http_server.rb:143:in `start'
unicorn (6.1.0) bin/unicorn:128:in `<top (required)>'
vendor/bundle/ruby/2.7.0/bin/unicorn:25:in `load'
vendor/bundle/ruby/2.7.0/bin/unicorn:25:in `<main>'

Журнал информации об ошибке

StandardError (Попытка доступа к не предзагруженному пользовательскому полю 'redirect_url'. Это запрещено для предотвращения запросов N+1.)
app/models/concerns/has_custom_fields.rb:173:in `[]'
(eval):33:in `_fast_attributes'
(eval):4:in `_fast_attributes'
lib/freedom_patches/ams_include_without_root.rb:57:in `include!'
app/controllers/application_controller.rb:486:in `serialize_data'
app/controllers/application_controller.rb:495:in `render_serialized'
app/controllers/application_controller.rb:387:in `block in with_resolved_locale'
app/controllers/application_controller.rb:387:in `with_resolved_locale'
lib/middleware/omniauth_bypass_middleware.rb:71:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:356:in `call'
config/initializers/100-quiet_logger.rb:23:in `call'
config/initializers/100-silence_logger.rb:31:in `call'
lib/middleware/enforce_hostname.rb:23:in `call'
lib/middleware/request_tracker.rb:198:in `call'

Ошибка Uncaught [object Object] в журнале

Uncaught [object Object]
Url: https://www.domainname.com/assets/vendor-96a5eaa8d436066b954c21ae5afb7f504310945c679465a2f1ba46b429a95edf.js
Line: 30
Column: 180630
Window Location: https://www.domainname.com/
3 лайка

Когда чат включен, как он связан с метриками пользователя? Влияет ли участие в чате каким-либо образом на рост уровня доверия или вовлеченности?

И есть ли планы добавить какие-либо метрики в панель администратора для отслеживания участия в чате?

3 лайка

Я использую чат Discourse только для пользователей с уровнем доверия 3 и привязываю его к категории (доступной только пользователям с уровнем доверия 3). Могу ли я как администратор автоматически добавить всех пользователей с уровнем доверия 3 в канал, чтобы им не приходилось самостоятельно искать его в списке каналов и вступать в него?

1 лайк

Нет.

Нет.

Никак.

10 лайков
  • Применяются ли к чату те же правила блокировки слов, что и к сообщениям?

  • Есть ли у администраторов возможность проверять личные чаты других пользователей? (Обеспокоены потенциальными злоупотреблениями. Личные сообщения можно ограничить и контролировать, но чат, похоже, является лёгким способом для злоупотреблений)

6 лайков

Пока нет, но мы это исправим.

У нас есть долгосрочные планы по внедрению шифрования в чате Discourse.

На данный момент данные в базе данных не зашифрованы.

13 лайков

Нет. Ошибки всегда будут. В Discourse сегодня есть ошибки, как и в чате. Мы исправляем их по мере поступления сообщений.

Достаточно ли безопасен чат для установки? Да. Мы активно используем его внутри компании и делаем это исключительно уже почти 2 месяца. (Ранее мы использовали Mattermost и отключили его в начале декабря.) Здесь и там встречаются мелкие ошибки, и есть множество функций, которые мы ещё хотим добавить, но пользоваться им, безусловно, безопасно.

17 лайков

Привет, спасибо за отличный плагин! Он действительно добавляет что-то интересное в Discourse.

Быстрый вопрос: возможно ли или планируется ли разместить иконку чата в профиле или на карточке пользователя?

Также непонятно, как и когда сообщения чата отправляют уведомления пользователям по электронной почте? (Вопрос в том: можем ли мы просто заменить личные сообщения функционалом чата?)

7 лайков

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

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

9 лайков