«Имя пользователя не может быть пустым» при настройке темы вебинара Zoom

Привет, 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;
}

Вопрос: когда кто-то регистрируется, получит ли он уведомление только на сайте и не получит ли письмо по электронной почте? Или письмо будет отправлено, если человек в данный момент не находится на сайте?

Спасибо!

Спасибо, Дэвид.

Вы выполнили все шаги по подписке на событие? Это вебхук от API Zoom, который используется для замены кнопки «Зарегистрироваться» на кнопку «Присоединиться сейчас», как только событие начинается.

Они получат личное сообщение (ЛС), что означает, что они получат письмо, если в их настройках указано, что ЛС должны отправляться на электронную почту.

Я скоро разберусь с двумя другими проблемами.

Я сделал всё это. Возможно, это глупый вопрос, но в content security policy script src у вас указано https://source.zoom.us. Должно ли слово source быть заменено на что-то другое? Возможно, на название приложения?

Хм. А вы проверили все флажки во вкладке «Вебинар»? Это должно выглядеть так:

Нет, это правильно. В любом случае, ваша настройка ещё не дошла до этого экрана.

Да, я проверил эти настройки. Какой URL-адрес конечной точки уведомлений о событиях (Event notification endpoint URL) мне указать в приложении?

Это должно быть https://yoursite.com/zoom/webhooks/webinars.json — я вижу, что в моих инструкциях выше не хватает этой детали, извините за это. Надеюсь, это будет недостающим элементом.

Вот и всё. Спасибо!

Я, возможно, не очень четко выразился. Просто для уточнения: проблема с ошибкой «Имя пользователя и т. д. не могут быть пустыми» по-прежнему сохраняется, хотя в логах теперь ничего нет. Всё остальное работает нормально.

Я разобрался в этой проблеме, @davidkingham. Похоже, что в созданном вами в Zoom вебинаре не указан ведущий, либо API не возвращает информацию о нём. Плагин пытается сопоставить учётную запись пользователя Zoom (по электронной почте) с учётной записью в Discourse; если такая учётная запись не найдена, в Discourse создаётся временный пользователь.

Либо в вашем вебинаре не назначен ведущий, либо при вызове API для получения объекта пользователя ведущего возвращается пустой результат.

Это имеет смысл, я использовал разные адреса электронной почты для каждого. Я изменил адрес электронной почты в Zoom, чтобы он совпадал с моим пользователем в Discourse. Это помогло отображать предстоящие вебинары в списке при добавлении вебинара к теме, чего раньше не происходило, но ошибка «…не может быть пустым» всё ещё появляется. Нужно ли, чтобы адрес электронной почты совпадал с пользователем, создающим тему, или с адресом электронной почты администратора?

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

Мне интересно, получаете ли вы вообще ответное письмо от Zoom для пользователя. Возможно, у API-ключа не установлены правильные области доступа (scopes)?

Это вызов API, который, как я полагаю, не возвращает данные: https://marketplace.zoom.us/docs/api-reference/zoom-api/users/user (или, возможно, статус вашего пользователя — pending?)

Да, подтверждено. Возможно, скоро будет исправление для этой проблемы. На данный момент вы можете перейти к удаленной теме и в меню администратора темы выбрать «Удалить вебинар».

Вот журнал вызовов при возникновении ошибки; похоже, что достигнуто ограничение скорости запросов

{
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: "Вы достигли максимального ограничения количества запросов в секунду для этого API. Попробуйте позже."
},
request_headers: [
"authorization: ******",
"connection: close"
],
request_params: [
],
http_status: "429"
}

Это довольно ограничительно… Насколько мне известно, совершается всего два вызова API: один для получения информации о вебинаре, а другой — для получения данных о ведущем вебинара (на самом деле, в идеальном мире данные о ведущем должны были быть включены в первый вызов API).

Вы можете попробовать поднять этот вопрос на форуме разработчиков Zoom.

Я задал этот вопрос здесь, но, судя по другим вопросам, я не очень надеюсь, что они помогут.

Небольшое предложение по поводу плагина: я хотел бы, чтобы список панелей отображался так же, как и список ведущего. То есть аватар под заголовком, а имя рядом с ним. Сейчас панель не очень заметна, так как есть только маленькая аватарка.