Я администратор форума организации с несколькими уровнями членства, которые соответствуют пользовательским группам на форуме. В настоящее время для каждого нового участника требуется ручной процесс: я получаю его адрес электронной почты, проверяю, привязан ли он к учётной записи пользователя, и затем добавляю его в пользовательскую группу.
Мне нужен скрипт, который бы принимал список адресов электронной почты: если пользователь с таким адресом существует, добавлять его в группу, а если нет — отправлять приглашение с уже настроенными правами группы. Как написать такой скрипт?
Спасибо!
РЕДАКТИРОВАНИЕ:
Пример ниже:
У меня есть три адреса электронной почты: alice@example.com — принадлежит участнику форума, который не состоит в группе SomeGroup. bob@foo.org — принадлежит участнику форума, который уже является членом группы SomeGroup. carol@bar.edu — не принадлежит ни одному участнику форума.
Я хочу добавить пользователя, связанного с alice@example.com, в группу SomeGroup (и отправить приветственное сообщение), ничего не делать для пользователя bob@foo.org и отправить приглашение на форум с флагом автоматического вступления в группу для carol@bar.edu.
Вы можете настроить группу так, чтобы при регистрации пользователя с определенным доменом электронной почты (например, @example.com) он автоматически добавлялся в группу.
Перейдите на вкладку «Управление» группы, затем в раздел «Членство» и в первом разделе «Автоматически» добавьте домен.
Спасибо, но это не очень помогает в данном случае. Все наши участники используют для этого свои личные электронные адреса, поэтому у них нет общего домена.
Если вы отправите ссылку-приглашение, она также будет работать для существующих участников. Вы даже можете направить их на конкретную тему, на которой они окажутся при входе, поэтому это может быть полезно для групповой регистрации или мероприятий.
Не знал. Я посмотрел в вики, и там было указано только при создании аккаунта. Можете ли вы это исправить, так как это не вики? (Invite users to a group)
Позвольте привести пример, так как мой вопрос, вероятно, был неясен.
У меня есть три адреса электронной почты: alice@example.com — принадлежит участнику форума, который не состоит в группе SomeGroup bob@foo.org — принадлежит участнику форума, который является членом группы SomeGroup carol@bar.edu — не принадлежит ни одному участнику форума.
Мне нужно, чтобы скрипт добавил пользователя, связанного с alice@example.com, в группу SomeGroup (и, возможно, отправил приветственное сообщение), ничего не делал для пользователя bob@foo.org, а для carol@bar.edu отправил приглашение с флагом автоматического зачисления в группу.
Вместо использования списка адресов электронной почты, вероятно, имеет смысл воспользоваться API. Таким образом, при регистрации пользователя вы можете автоматически добавлять его в группу, используя этот API: Discourse API Docs
Для этого пользователь должен уже быть создан в Discourse на момент вызова API. Это может потребовать немного дополнительной настройки, но позволит полностью автоматизировать процесс, избавив вас от необходимости вручную загружать адреса электронной почты пользователей.
Дело в том, что у меня на самом деле есть список адресов электронной почты, а не имена пользователей. Наша организация отслеживает уровни членства людей по имени и электронной почте, а не по имени пользователя на форуме, поскольку форум является лишь небольшой частью организации. Координатор по членству еженедельно присылает мне список имен и адресов электронной почты новых участников. У них может уже быть аккаунт на форуме, а может и не быть, так как у нас есть общедоступный раздел форума.
На самом деле, это не работает. Когда я пытаюсь отправить ссылку-приглашение, я получаю сообщение: «Нет необходимости приглашать example@gmail.com, у них уже есть учётная запись!»
Возможно, я сам запутался. Позвольте мне разобраться и посмотреть, можно ли реализовать то, что вы хотите, используя существующие функции форума.
Редактирование:
Думаю, это возможно с помощью опции «Массовое приглашение». Если у вас есть CSV-файл с адресами электронной почты и второй колонкой, в которой указаны группы, в которые нужно добавить этих пользователей, то запуск этого файла через инструмент «Массовое приглашение» отправит приглашение по электронной почте всем, у кого нет аккаунта, и добавит существующих участников в указанные группы. Однако есть один нюанс: при этом не будет генерироваться уведомление о том, что вы добавлены в группу.
Массовое приглашение должно работать пока, спасибо! Я бы хотел подать запрос на добавление возможности отправлять сообщение существующим участникам при получении ими новых разрешений.
Я разобрался со своей путаницей. Дело в том, что именно ссылки делают то, что я думал, а не письма. Так что альтернативный вариант — создать ссылку-приглашение (вместо письма), а затем отправить её по электронной почте всем подписчикам вашего списка. Новые пользователи попадут на страницу «Создать аккаунт и принять приглашение» перед добавлением в группу и перенаправлением на тему (если вы добавили этот критерий), существующие пользователи, уже вошедшие в систему, будут добавлены в группу и сразу перенаправлены на указанную вами тему, а существующие пользователи, не вошедшие в систему, смогут войти со страницы «Создать аккаунт и принять приглашение» (хотя здесь есть небольшая неясность, можно ли это сделать, но вы можете добавить дополнительный текст на страницу в js.create_account.subheader_title, чтобы дать небольшую подсказку), после чего их добавят в группу и перенаправят на тему:
Однако этот способ также не отправляет уведомление о том, что пользователя добавили в группу, но у вас появляется возможность включить объяснение в исходное письмо-приглашение, что может быть полезно? Кроме того, функцию «переход к теме» можно использовать аналогичным образом в качестве целевой страницы.
Не знаю, поможет ли это, но я рад, что разобрался.