Telegram Notifications Plugin (discourse-telegram-notifications)

아마도 멍청한 질문일 수 있지만, 텔레그램을 통해 어떤 알림을 받을 수 있을까요? 봇은 정상적으로 작동 중이고, 메시지를 보내면 채팅 ID를 받았습니다. 그 ID를 사용자 프로필에 입력했는데, 그 이후로 이메일 알림은 몇 번 받았지만 텔레그램에서는 아무것도 확인되지 않았습니다. 알림을 받아야 하는 건지, 아니면 다른 곳에서 해당 알림을 설정해야 하는 건가요?

이 문제를 해결하는 데 로그가 필요하시다면 게시하는 데 문제없지만, 어디서 로그를 찾아야 하는지 안내가 필요합니다.

교정을 항상 해 주셔서 감사합니다. (아마도 제가 오류를 보지 못했던 것 같은데) 채팅 ID를 잘못 입력했던 것 같습니다. 이제 다시 입력하니 알림이 정상적으로 작동합니다. 좋습니다!

3개의 좋아요

안녕하세요. 설정을 하려고 하는데 봇에게 채팅 ID를 보내달라고 요청하는 부분에서 막혀 있습니다. 어떤 메시지를 보내도 응답이 없습니다.

먼저 안내에 따라 봇을 생성했고, 다음으로 텔레그램에서 그룹을 만들어 봇을 멤버로 추가했습니다. 그런 다음 메시지를 보내봤고, 봇을 태그해도 여전히 응답이 없습니다.

채널을 만들어 봇에게 메시지를 보내봐도 여전히 응답이 없었습니다. 데스크톱 앱과 모바일 앱을 모두 시도해 봤지만 역시 실패했습니다.

더 이상 뭘 해야 할지 모르겠습니다.

그리고 discourse-chat-integration과 discourse-telegram-notifications 두 플러그인을 모두 설치해야 하나요?

문서 어디에도 그룹을 만들라고 한 내용은 보이지 않고, 오히려 봇이 그룹에 추가되는 것을 허용하지 말라는 권장 사항이 보입니다. 봇이 포함된 그룹이 아니라 봇에게 직접 메시지를 보내세요.

OP(원문)에 따르면(상단의 그늘진 상자에도 명시되어 있음), 이 두 플러그인은 서로 다른 역할을 합니다:

1개의 좋아요

피드백 감사합니다. 다시 시도해 보겠습니다.

채팅방 통합 플러그인과 텔레그램 알림 플러그인을 동시에 사용할 수 있나요? 채팅방 통합 플러그인은 성공적으로 통합되어 잘 작동하고 있지만, 텔레그램 알림 플러그인은 사용자에게 알림을 보내지 않습니다. 봇은 저에게 이 메시지만 표시합니다!

testbot, [2019.12.28 15:58]
관리자님, Engineer's Asylum에 새 알림이 있을 때 메시지를 보내드리겠습니다. 
알림에 답장을 보내면 Engineer's Asylum에 답글로 게시됩니다.
비활성화하려면 사용자 설정을 방문하세요.

OP(첫 글 작성자)의 답변:

직접 해본 적은 없지만, 그 답변이 질문에 대한 답이 되는 것 같습니다.

1개의 좋아요

문제가 어디서 발생했는지 찾았어요. 액세스 토큰을 채팅 통합 플러그인 영역에 입력하고 있었는데, 텔레그램 플러그인 설정 영역에 있는 것을 발견했어요. 봇에게 메시지를 보냈더니 응답을 받았습니다!

인용문 그래도 텔레그램에서 봇이 응답하거나 채팅 ID를 제공하지 않아요. 봇에게 직접 메시지를 보내 봤고, 텔레그램에서 채널을 만들어 봇을 태그와 함께 메시지에 포함시켜 봤는데도 아무 반응이 없어요

이 문제의 해결 방법을 찾았나요? 저도 같은 문제가 발생했습니다.

방금 해당 플러그인에 이 PR을 열었습니다:

이 PR은 해당 문자열에 대한 지원과 함께 Discourse Follow 플러그인에 대한 지원도 추가합니다.
스태프가 조속히 병합해 주기를 바랍니다.

최고네요, 방금 머지했습니다 - @barreeeiroo 감사합니다 :smiley:

4개의 좋아요

이 기능을 확장하여 Viber와 SMS 알림을 제공하려는 경우, 제 프로젝트 GitHub - Sprachprofi/notifications_sample: Demonstrating how to cleanly handle opt-in/opt-out and notifications via a variety of platforms · GitHub 를 참고해 보세요.

1개의 좋아요

@david
매우 유용한 플러그인입니다. 감사합니다! :blush:

번역에서 {username} 대신 {name}을(를) 사용할 수 있나요?

불행히도 불가능합니다. 그렇게 하려면 플러그인 코드를 수정해야 하기 때문입니다.

4개의 좋아요

데이비드님, 제 봇이 가끔 작동하지 않아요… 토큰과 사이트 SSL을 확인했는데 모두 정상입니다… 혹시 아이디어가 있으신가요?

로그를 확인했는데 모두 개인 메시지와 관련된 내용입니다:
Failed to send Telegram message. Message data= “… private message …”

/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/logster-2.5.1/lib/logster/logger.rb:112:in `report_to_store'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/logster-2.5.1/lib/logster/logger.rb:103:in `add_with_opts'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/logster-2.5.1/lib/logster/logger.rb:54:in `add'
/usr/local/lib/ruby/2.6.0/logger.rb:543:in `error'
/var/www/discourse/plugins/discourse-telegram-notifications/services/discourse_telegram_notifications/telegram-notifier.rb:46:in `doRequest'
/var/www/discourse/plugins/discourse-telegram-notifications/services/discourse_telegram_notifications/telegram-notifier.rb:7:in `sendMessage'
/var/www/discourse/plugins/discourse-telegram-notifications/plugin.rb:234:in `execute'
/var/www/discourse/app/jobs/base.rb:232:in `block (2 levels) in perform'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rails_multisite-2.0.7/lib/rails_multisite/connection_management.rb:63:in `with_connection'
/var/www/discourse/app/jobs/base.rb:221:in `block in perform'
/var/www/discourse/app/jobs/base.rb:217:in `each'
/var/www/discourse/app/jobs/base.rb:217:in `perform'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.4/lib/sidekiq/processor.rb:196:in `execute_job'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.4/lib/sidekiq/processor.rb:164:in `block (2 levels) in process'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.4/lib/sidekiq/middleware/chain.rb:138:in `block in invoke'
/var/www/discourse/lib/sidekiq/pausable.rb:138:in `call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.4/lib/sidekiq/middleware/chain.rb:140:in `block in invoke'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.4/lib/sidekiq/middleware/chain.rb:143:in `invoke'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.4/lib/sidekiq/processor.rb:163:in `block in process'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.4/lib/sidekiq/processor.rb:136:in `block (6 levels) in dispatch'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.4/lib/sidekiq/job_retry.rb:111:in `local'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.4/lib/sidekiq/processor.rb:135:in `block (5 levels) in dispatch'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.4/lib/sidekiq.rb:37:in `block in <module:Sidekiq>'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.4/lib/sidekiq/processor.rb:131:in `block (4 levels) in dispatch'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.4/lib/sidekiq/processor.rb:257:in `stats'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.4/lib/sidekiq/processor.rb:126:in `block (3 levels) in dispatch'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.4/lib/sidekiq/job_logger.rb:13:in `call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.4/lib/sidekiq/processor.rb:125:in `block (2 levels) in dispatch'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.4/lib/sidekiq/job_retry.rb:78:in `global'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.4/lib/sidekiq/processor.rb:124:in `block in dispatch'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.4/lib/sidekiq/logger.rb:10:in `with'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.4/lib/sidekiq/job_logger.rb:33:in `prepare'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.4/lib/sidekiq/processor.rb:123:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.4/lib/sidekiq/processor.rb:162:in `process'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.4/lib/sidekiq/processor.rb:78:in `process_one'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.4/lib/sidekiq/processor.rb:68:in `run'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.4/lib/sidekiq/util.rb:15:in `watchdog'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.4/lib/sidekiq/util.rb:24:in `block in safe_thread'

안녕하세요.
이 플러그인을 설치할 때 동일한 문제가 발생합니다..

문제 및 해결책:

문제:
두 가지 플러그인, 두 개의 텔레그램 봇, 두 개의 텔레그램 채팅(텔레그램 채널과 텔레그램 그룹) 사이에서 매우 혼란스러웠습니다. 그리고 이 혼란 속에서 항상 ‘Telegram Token’ 또는 이와 유사한 이름의 필드 하나만 주어졌기 때문에 두 가지를 계속 혼동하게 되었습니다.

해결책:
결국 Discourse 설정에서 서로 다른 두 개의 필드가 존재하는 것을 발견했습니다. 이 두 필드는 매우 유사해 보이는 라벨/이름을 가지고 있으며 서로 매우 가까운 위치에 있지만, 사실은 동일하지 않습니다.

따라서 이것이 서로 다른 두 가지이며 목적도 다르다는 점을 꼭 확인해 주세요:

텔레그램 채널/그룹 채팅이 더 이상 /getchatid 명령에 응답하지 않는다는 점을 지적했습니다. 일반적인 방식으로 채팅 ID를 공개할 수 없습니다. 이전에는 새 봇을 만들 때마다 채팅을 시작하는 즉시 봇이 자동으로 자신의 ID를 알려주었습니다. 하지만 더 이상 그런 동작을 하지 않습니다.

게시물이 승인 대기 상태일 때 알림을 받을 수 있도록 구현하는 것이 가능할까요?

안녕하세요 @david !
우선 플러그인을 만들어 주셔서 감사합니다. 모든 설정이 완료되었고 잘 작동하며, 곧 커뮤니티에 발표할 수 있게 되어 기대가 큽니다.
다만 몇 가지 질문이 있습니다:

  1. 우리 커뮤니티가 더 쉽게 사용할 수 있도록 이 플러그인을 제 언어로 번역하는 방법이 있을까요?

  2. Telegram 또는 Discourse를 통해 Telegram 메시지 표시 방식을 제어할 수 있는 방법이 있을까요? 폰트가 보기 좋지 않고, Discourse에서 전송된 실제 메시지 텍스트의 단어 사이에 이중 공백이 있습니다(플러그인 자체의 텍스트는 문제가 없습니다).

나도 마찬가지야. 지금 디자인이 별로 마음에 안 들어.

여전히 잘 작동한다고 해서 다행입니다. 우리 커뮤니티에서도 한번 시도해 볼 생각이에요.