줌 웹세미나 주제 설정 시 '사용자 이름은 비워둘 수 없습니다' 오류 발생

Penar님, 정말 훌륭한 플러그인을 만들어 주셔서 감사합니다! 정말 유용할 것 같습니다! 방금 테스트해 봤는데 설치 과정은 순조로웠습니다. 몇 가지 문제를 발견했는데:

  • 웹세미나로 토픽을 생성하면 이 오류가 발생하지만, 페이지를 새로고침하면 토픽이 생성되고 모든 것이 정상인 것 같습니다.

로그에는 이런 내용이 나옵니다.

/var/www/discourse/plugins/discourse-zoom/app/jobs/scheduled/send_webinar_reminders.rb:18:in `block (2 levels) in execute'
activerecord-6.0.1/lib/active_record/relation/delegation.rb:85:in `each'
activerecord-6.0.1/lib/active_record/relation/delegation.rb:85:in `each'
/var/www/discourse/plugins/discourse-zoom/app/jobs/scheduled/send_webinar_reminders.rb:12:in `block in execute'
activerecord-6.0.1/lib/active_record/relation/delegation.rb:85:in `each'
activerecord-6.0.1/lib/active_record/relation/delegation.rb:85:in `each'
/var/www/discourse/plugins/discourse-zoom/app/jobs/scheduled/send_webinar_reminders.rb:11:in `execute'
/var/www/discourse/app/jobs/base.rb:232:in `block (2 levels) in perform'
rails_multisite-2.1.1/lib/rails_multisite/connection_management.rb:64: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/app/jobs/base.rb:279:in `perform'
mini_scheduler-0.12.2/lib/mini_scheduler/manager.rb:86:in `process_queue'
mini_scheduler-0.12.2/lib/mini_scheduler/manager.rb:36:in `block (2 levels) in initialize'
  • 가장 큰 문제는 미팅이 라이브 상태일 때 참가 버튼이 보이지 않는다는 것입니다:

  • 참고로 카운트다운 배경색이 테마를 따르지 않아서, 하얀색이었던 것을 다크 테마에 맞춰 변경해야 했습니다:
.webinar-header .countdown .pill {
    background: #485769;
}

질문이 하나 있습니다. 사용자가 등록하면 사이트 내 알림만 받고 이메일은 받지 않는 건가요? 아니면 현재 사이트에 접속해 있지 않다면 이메일도 받는 건가요?

감사합니다!

David, 감사합니다.

이벤트 구독 단계를 완료하셨나요? 이는 Zoom API의 웹훅(Webhook)으로, 이벤트가 시작되는 즉시 ‘등록됨’ 버튼을 ‘지금 참가’ 버튼으로 전환하는 데 사용됩니다.

개인 메시지(PM)를 받게 되며, 이는 설정에 따라 개인 메시지가 이메일로 전송되도록 되어 있으면 이메일도 받게 됩니다.

나머지 두 가지 문제는 곧바로 확인하겠습니다.

모든 단계를 완료했습니다. 아마도 어리석은 질문일 수 있지만, content security policy script src에 https://source.zoom.us가 있는 것으로 보이는데, source 부분을 다른 것으로 대체해야 하나요? 아마도 앱 이름일까요?

음. 웹세미나 탭의 모든 항목을 확인해 보셨나요? 이렇게 보여야 합니다:

아니요, 괜찮습니다. 어쨌든 아직 해당 화면까지 도달하지 않으셨습니다.

네, 그 부분은 확인했습니다. 앱에서 Event notification endpoint URL은 무엇으로 설정해야 하나요?

https://yoursite.com/zoom/webhooks/webinars.json이어야 합니다. 아까 제가 안내해 드린 내용에는 해당 세부 사항이 빠져 있네요, 죄송합니다. 아마 이것이 빠졌던 부분이 아닐까 싶습니다.

이제 해결됐어요. 감사합니다!

설명하지 못한 부분이 있었던 것 같습니다. 명확히 하기 위해 말씀드리면, 로그에는 아무것도 표시되지 않는 상태인데도 여전히 Username 등이 비어 있을 수 없다는 오류가 발생하고 있습니다. 그 외에는 모두 정상적으로 작동하고 있습니다.

@davidkingham 님, 이 문제를 확인해 보았더니 Zoom에서 생성 중인 웨비나에 호스트가 설정되어 있지 않거나, API가 호스트의 세부 정보를 반환하지 않는 것 같습니다. 플러그인은 Zoom 사용자 계정(이메일을 통해)을 Discourse 계정과 일치시키려고 하며, 계정을 찾지 못할 경우 Discourse에서 스테이징된 사용자를 생성합니다.

즉, 웨비나에 호스트가 설정되어 있지 않거나, 호스트의 사용자 객체를 가져오기 위한 API 호출이 빈 결과를 반환하고 있는 것입니다.

그 말이 맞습니다. 저는 각각 다른 이메일을 사용하고 있었어요. Zoom의 이메일을 Discourse의 내 계정과 일치하도록 변경했는데, 덕분에 토픽에 웨비나를 추가할 때 목록에 예정된 웨비나가 표시되게 되었습니다(이전에는 표시되지 않던 부분이었죠). 하지만 여전히 ...can't be blank 오류가 발생합니다. 이메일은 토픽을 생성하는 사용자와 일치해야 하나요, 아니면 관리자 이메일과 일치해야 하나요?

또한, 재시도하려고 토픽을 삭제하면 해당 웨비나가 이미 다른 토픽에 연결되어 있다고 판단하여 다른 토픽에 추가할 수 없습니다. 토픽은 이미 삭제된 상태인데도 말이죠.

Zoom에서 해당 사용자에게 이메일이 반환되는지 확인해 보셨나요? 아마도 API 키에 올바른 스코프가 설정되어 있지 않을 수도 있습니다.

데이터가 반환되지 않는다고 생각하는 API 호출은 다음과 같습니다: https://marketplace.zoom.us/docs/api-reference/zoom-api/users/user (또는 사용자의 상태가 pending일 수도 있나요?)

네, 확인했습니다. 이 문제에 대한 수정이 곧 나올 수 있습니다. 당분간은 삭제된 주제에 들어가서 주제 관리 메뉴에서 '웹ина르 제거’를 클릭할 수 있습니다.

오류가 발생했을 때의 호출 로그입니다. 레이트 리밋(rate limit)에 걸린 것 같습니다.

{
endpoint: "https://api.zoom.us/v2/users/VI4TWwOvT-SKaycEEMws8w",
response_headers: [
"Set-Cookie: cred=73B256F7AFD1CC7FEA83613B92876F28; Path=/; Secure; HttpOnly"
],
date_time: "2020-03-25 11:42:17",
method: "GET",
request_body: "N/A",
response: {
code: 429,
message: "You have reached the maximum per-second rate limit for this API. Try again later."
},
request_headers: [
"authorization: ******",
"connection: close"
],
request_params: [
],
http_status: "429"
}

그건 좀 제한적이에요… AFAIK(제 지식 범위 내에서) 웹미너를 가져오고, 웹미너 호스트의 상세 정보를 가져오는 것, 이렇게 API 호출이 2번만 이루어지는 것 같습니다(사실 이상적인 상황에서는 호스트의 상세 정보가 첫 번째 API 호출에 포함되어 있어야 합니다).

Zoom 개발자 포럼에서 이 문제를 제기해 보시는 걸 추천합니다.

다른 질문들을 참고했지만, 그 답변들이 도움이 될 거라 확신이 들지 않아서 여기에 질문을 올렸습니다.

플러그인에 대한 작은 제안입니다. 패널리스트가 호스트와 같은 방식으로 표시되기를 원합니다. 즉, 제목 아래에 아바타를 배치하고 그 옆에 이름을 표시하는 방식입니다. 현재는 작은 아바타만 표시되어 패널리스트가 잘 눈에 띄지 않습니다.