현재 하나의 카테고리에 여러 채널을 연결할 수 있는 옵션이 있습니다.
오픈소스 플러그인을 설치하면, 코어/공개 버전으로 통합될 때 무리 없이 전환될 수 있나요?
이 플러그인은 공식적으로 지원되는 플러그인입니다. 코어로 마이그레이션될 경우(현재 계획은 없음), 적절한 마이그레이션 경로가 제공될 것입니다. 네, 그렇습니다.
채널을 비공개/공개로 생성할 수 있고, 검색 엔진의 인덱싱을 위해 공개 URL을 사용할 수 있다면 좋겠습니다. 이렇게 하면 커뮤니티에 추가적인 트래픽이 유입될 것입니다.
업그레이드 후 10초간 테스트해본 결과: 이제 필요 없는 채널을 닫을 수 있게 되었습니다. 특히 개인 채널도 마찬가지입니다.
영국 친구들이 자주 말하듯: 정말 훌륭하네요.
UX 버그로 보이는 문제를 발견했습니다. 메시지를 마우스로 호버한 후 메시지 상호작용 툴바로 마우스를 이동시키고 이모지 버튼을 클릭하면, 답장이나 점 세 개(…) 버튼을 클릭해도 이모지 오버레이가 화면에 계속 남아 있습니다. 다만 툴바 밖을 클릭하면 이모지 창은 닫힙니다.
아래는 해당 동작을 보여주는 클립입니다. 점 세 개(…) 오버레이가 이모지 오버레이 뒤에 가려져 있는 것을 확인할 수 있습니다.

채팅 숨김 X 버튼을 추가해 주셔서 감사합니다. 몇 가지 피드백 드릴게요:
- 모바일에서는 X 버튼이 전혀 표시되지 않습니다(호버할 때까지 숨겨져 있는 것 같아서). 현재 모바일에서는 개인 채팅을 나설 수 없습니다.
- 현재 새 개인 채팅을 추가할 수 없습니다. 데스크톱과 모바일 모두에서 이 오류가 발생합니다.
현재로서는 타협안이며, 몇 달 안에 모바일에서 개인 채팅을 나가기 위한 스와이프 동작을 구현할 예정입니다.
다시 빌드해서 시도해 볼 수 있을까요?
성능 요구 사항에 대한 질문에 +1을 보냅니다.
현재 자원이 지속적으로 부족한 작은 드롭릿을 사용 중입니다. (네, 더 큰 드롭릿으로 업그레이드해야 한다는 건 알고 있어요
)
거의 없습니다. 재빌드를 시도하는 20번 중 19번 정도는 재빌드 중 실행되는 50개의 git 명령어 중 하나가 영원히 멈춰 버립니다. 정말 이상하네요. 몇 주 전부터 이런 일이 시작되었습니다.
Discourse Chat와 category-lock (Pavilion’s one)은 제 인스턴스에서 호환되지 않습니다.
백트레이스 오류 로그:
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 (Attempted to access the non preloaded custom field 'redirect_url'. This is disallowed to prevent N+1 queries.)
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'
처리되지 않은 [object Object] 오류 로그
Uncaught [object Object]
Url: https://www.domainname.com/assets/vendor-96a5eaa8d436066b954c21ae5afb7f504310945c679465a2f1ba46b429a95edf.js
Line: 30
Column: 180630
Window Location: https://www.domainname.com/
채팅이 활성화된 경우, 사용자의 지표와 어떻게 연결되나요? 채팅 참여가 신뢰 수준 상승 또는 참여도(engagement)에 어떤 방식으로 반영되나요?
또한, 관리자 대시보드에 채팅 참여도를 추적할 수 있는 지표를 추가할 계획이 있나요?
저는 Discourse 채팅을 trust_level_3 회원 전용으로 설정하고 있으며, 카테고리 기반(trust_level_3 회원만 접근 가능한 카테고리)으로 운영하고 있습니다. 관리자인 제가 채널 목록을 통해 직접 가입할 필요 없이, 모든 trust_level_3 회원이 해당 채널에 자동으로 가입하도록 설정할 수 있을까요?
아니요.
아니요.
어떤 식으로든 연결되지 않습니다.
-
채팅도 게시물과 동일한 단어 차단 규칙이 적용됩니까?
-
관리자가 다른 사용자의 개인 채팅을 확인할 수 있는 방법이 있나요? (남용 가능성에 대해 우려됩니다. 개인 메시지는 제한 및 모니터링이 가능하지만, 채팅은 남용하기 쉬운 방법인 것 같습니다)
아직은 아니지만, 이를 구현할 예정입니다.
장기적으로 디스커스(Discourse) 암호화를 채팅에 지원할 계획입니다.
현재 데이터는 데이터베이스(DB)에서 암호화되지 않습니다.
아니요. 버그는 항상 존재합니다. 현재 디스코urs에도 버그가 있고, 채팅에도 마찬가지입니다. 버그가 보고되면 즉시 수정합니다.
채팅을 설치해도 안전합니까? 네. 우리는 내부적으로 이를 광범위하게 사용하고 있으며, 지난 2개월 동안 거의 전적으로 이 기능을 사용해 왔습니다. (이전에는 Mattermost를 사용했으나 12월 초에 종료했습니다.) 여기저기 작은 버그가 있고, 아직 추가하고 싶은 기능도 많지만, 사용에는 충분히 안전합니다.
안녕하세요, 그리고 훌륭한 플러그인을 만들어 주셔서 감사합니다. 이 플러그인은 디스커스에 정말 흥미로운 요소를 더해 주네요!
간단한 질문이 있습니다: 프로필이나 사용자 카드 내에 채팅 아이콘을 표시할 수 있거나, 그러한 계획이 있나요?
또한 채팅 메시지가 언제, 어떤 방식으로 이메일로 사용자에게 알림을 보내는지도 명확하지 않습니다. (궁극적인 질문은: 채팅 기능을 통해 직접 메시지를 완전히 대체할 수 있는가 하는 것입니다.)
모바일에서 채팅 채널 안에 있을 때, 헤더의 채팅 버블 아이콘을 눌러 채팅 채널 목록으로 돌아가려고 해도 아무 반응이 없음을 확인했습니다. 반면 채팅 채널에 있지 않을 때 이 아이콘을 누르면 채팅 채널 목록으로 이동합니다.
채팅 채널 안에 있든 없든, 모바일에서 헤더의 채팅 버블 아이콘을 누르면 항상 채팅 채널 목록으로 이동하도록 통일할 수 있는 방법이 있을까요?

