Условные поля пользователя

Сценарий использования

Мы работаем над улучшением процесса онбординга для нашего сообщества. Естественно, мы хотели бы использовать информацию, которую мы уже знаем о пользователе, чтобы выполнять или отображать определённые действия на основе данных, которые они предоставляют.

Сегодня наши пользователи начинают создание учётной записи через нашу интеграцию с OIDC, регистрируясь в нашей компании. Они предоставляют OIDC электронную почту, имя и имя пользователя, после чего их перенаправляют обратно в Discourse.

Проблема

Теперь мы хотели бы предоставить им дополнительные поля для заполнения — что отлично, ведь Discourse это поддерживает! К сожалению, мы не можем отображать поля в зависимости от ответов на предыдущие поля. Например, мы хотели бы задать вопрос: «Какая роль лучше всего описывает вас?» с вариантами: developer, administrator и analyst.

  • Если они выберут developer, я, конечно, захочу спросить, какие языки программирования они предпочитают. Позже я также добавлю их в группу пользователей-разработчиков.
  • Если они выберут analyst, я захочу задать им другой набор вопросов и добавить в другую группу пользователей.

Предлагаемое решение

Многие формы на веб-сайтах сегодня поддерживают условные поля (например: «Где вы узнали о нас?» Если выбрано «Другое», появляется дополнительное поле для объяснения). Было бы замечательно, если бы вы пошли по похожему (но более мощному) пути, как это было сделано с шаблонами форм для новых тем, добавив возможность зависеть от ID другого поля и конкретно от его значения. Например, это могло бы выглядеть так:

- type: dropdown
  id: user-type
  choices:
    - "Developer"
    - "Application Administrator"
    - "Analyst"
  attributes:
    none_label: "Выберите свою роль..."
    label: "Какой вариант лучше всего описывает вашу работу"
  validations:
    required: true
- type: dropdown
  id: developer-type-programming-language
  depends: user-type
  choices:
    - "Python"
    - "JavaScript"
    - "Java"
  attributes:
    none_label: "Предпочитаемый язык программирования..."
    label: "Какой основной язык программирования используется в вашей роли?"
  validations:
    required: true

В этом примере всем пользователям будет задан первый вопрос. Если пользователь выберет «Developer» из выпадающего списка, на форме появится второй вопрос о предпочитаемом языке программирования.

Это улучшение условных полей можно использовать как в процессе онбординга пользователей, так и в изначально предназначенном для этого месте — при создании новых тем.

6 лайков

Вы можете посмотреть на GitHub - discourse/discourse-authentication-validations · GitHub, который делает именно это, но только для страницы регистрации пользователей. Кажется, неочевидно адаптировать его для страницы настроек пользователя, где редактируются эти поля.

Но вы просите о новой функции, а не ищете решение вашей непосредственной проблемы.

6 лайков

Звучит многообещающе — с удовольствием посмотрел бы больше документации по этому вопросу.

Для получения дополнительной информации, пожалуйста, ознакомьтесь с: ссылка на мета-тему

Похоже, намерение было.

1 лайк

К сожалению, это всё, что есть.

Это шаблонный текст из GitHub - discourse/discourse-plugin-skeleton: Template for Discourse plugins · GitHub

2 лайка

Плагин на самом деле довольно интуитивно понятен.

Нижний флажок добавляет опцию аутентификации.

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

После заполнения укажите пользовательские поля, которые вы хотите отображать. В моём примере, если количество 1–6+, пользователю будет предложено ввести основные и дополнительные HMD.

Это было бы здорово, если бы функция была расширена до экспериментальных шаблонов форм.

5 лайков

Это уже какое-то время в моём списке задач… Обязательно добавлю на этой неделе :slight_smile:

4 лайка

Я думал, что уже написал об этом.. :sweat_smile:

Обновлю репозиторий, добавив ссылку на Meta.

3 лайка

Дох! Извините, я тоже забыл об этом.

Возможно ли настроить работу этих условий в профиле пользователя, а не только на странице создания аккаунта? (Я почти уверен, что сейчас они работают только на странице создания аккаунта — у меня есть человек, который хочет, чтобы пользователи возвращались и заполняли данные, при этом правила должны соблюдаться.)

2 лайка

Да, в настоящее время это единственное место, затронутое этим плагином.

Давайте убедимся, что мы правильно поняли друг друга:

Вы хотите получить возможность обновлять публичные пользовательские поля через /preferences/profile, применяя ту же логику условного скрытия/показа, что и в модальном окне создания учётной записи?

Например: если значение пользовательского поля 1 равно показать пользовательское поле 2, то отображать второе пользовательское поле?

2 лайка

Да. Я хочу, чтобы ко всем custom_user_fields с настройкой Редактируемо после регистрации применялись те же правила на странице /preferences/profile.

Думаю, вы правы. Те же правила, которые действуют в модальном окне создания аккаунта, должны применяться и на странице профиля.

4 лайка

Думаю, это будет отличным дополнением. Перенос логики условных полей на страницу профиля должен быть довольно простым.

Это хороший кандидат для pr-welcome, но я также могу попробовать взглянуть на это в течение следующего месяца или около того.

5 лайков

Ну, может быть, для тебя! Я попробовал и быстро запутался. Казалось, что это должно быть почти так же просто, как скопировать кое-что на страницу настроек, но именно что именно — больше, чем я мог быстро понять.

Это было бы здорово!

4 лайка

У меня точно такой же сценарий использования! И при регистрации, и для редактируемых полей пользователя после регистрации. (Если у человека диабетическая кошка, я хочу узнать больше о кошке; если они проводят домашнее тестирование, нам нужно знать, как именно; и так далее.)

(Я где-то видел, как кто-то упоминал, что заполнение определённых полей пользователя может быть условием для изменения уровня доверия — это было бы тоже очень интересно для онбординга!)

Этот плагин выглядит очень круто! Я о нём не знал. Если его можно расширить для поля профиля пользователя, то это наверняка подойдёт как для нужд Jay, так и для OP.

Но этот вопрос заставил меня задуматься о плагине Custom Wizard Plugin :mage: от Pavilion и о том, может ли он найти применение в подобной ситуации. Я его не использовал, поэтому не уверен в его возможностях, но в описании указано, что он поддерживает условные настройки и управление пользовательскими полями:thinking:

1 лайк