Создание пользователей без паролей через API

Я планирую перенести свой форум технической поддержки из YouTrack в Discourse.

Мне нужно использовать API для выполнения следующих задач:

  1. Извлечь пользователей (имя, имя пользователя, электронная почта) из YouTrack и создать аналогичных пользователей в Discourse. Пароли для них устанавливать не нужно!
  2. Отправить всем этим пользователям приглашение зарегистрироваться в Discourse, используя те же имена пользователей и адреса электронной почты (чтобы они могли создать новые пароли).
  3. Извлечь определённые темы, вложения и комментарии из YouTrack и создать их в Discourse.

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

Проблемы:
a) В документации к API указано, что поле «password» обязательно при создании пользователя. Как можно обойти это ограничение?
b) Каким должно быть состояние такого пользователя (созданного через API, у которого уже есть темы под его именем, но который ещё не подтвердил регистрацию и не установил пароль)?

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

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

С чем будет работать такой скрипт? Напрямую с базой данных?

Посмотрите скрипты импорта в папке scripts/import.

Я попробовал использовать этот ваш скрипт, который, похоже, должен помочь, но постоянно получаю сообщение об ошибке:

 ./create-user 'Test User Four' me@[domain] test4 41 default
Creating user: test4 user test4 created. .  . Adding to group 41. . . {"errors":["You supplied invalid parameters to the request: usernames"],"error_type":"invalid_parameters"}

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

Я в основном не знаю, но кажется, что у вас неверный номер группы, и возникает ошибка? Если речь идёт о добавлении пользователя, то, похоже, группа уже не устанавливается. :wink:

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

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

Номер группы верный, я взял его из /groups.json. В любом случае, моя текущая цель — найти решение с помощью любых доступных инструментов. Спасибо за ваше предложение и помощь!

Хм. Возможно, этот API изменился. Кажется, теперь он принимает имя группы. Если у вас получится что-то придумать, вы можете отправить PR.

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

Нет. Если я использую название группы вместо ID, получаю
{"status":404,"error":"Not Found"}

Также странно, что, хотя сообщение об ошибке появляется после user test6 created. . . Adding to group, пользователь на самом деле не создан.

Хм. Ну, скрипт определённо нужно обновить, чтобы отправлять пользователя API и ключ в заголовке, а не в URL. Хотя я почти уверен, что два года назад это работало, похоже, что его написал человек с опытом на два года меньше, чем у меня сейчас. :wink:

В нём нет проверки ошибок, чтобы убедиться, что пользователь действительно создан, так что это я бы изменил, если бы взялся за работу над ним.

Похоже, что если у вас нет никаких групп, то попытка добавить пользователя в группу будет пропущена.

Привет, Дмитрий @dm.linov!

Я нашел эту тему, когда искал подходы к переносу данных между Confluence, YouTrack и Discourse.

Не могли бы вы поделиться основными моментами перехода с YouTrack на Discourse? Была ли причина в стоимости, производительности или проблемах с поиском?

Привет, Иван,

Обе причины верны. Мы хотели предоставлять поддержку нашим клиентам на открытом форуме, чтобы весь мир мог увидеть, насколько мы хороши :slight_smile: А YouTrack не был подходящим инструментом для этого по нескольким причинам, и тот факт, что он взимает плату за пользователя, — одна из них.

Наша текущая настройка следующая:

  • Discourse для поддержки, запросов на новые функции и обсуждений. Формы «Связаться с нами» на наших сайтах также ведут туда (новые темы и «промежуточные» пользователи создаются автоматически через API)
  • YouTrack для разработки — задачи, баги и другие проблемы
  • Confluence для общей документации. Некоторые статьи, описывающие конкретные случаи использования, также публикуются в Discourse (вручную)

Мы также пробовали использовать Discourse как корпоративный блог, но позже предпочли Hashnode.

Спасибо, Дмитрий. Этот опыт будет для нас полезен.

Мы планируем перенести документацию из Confluence. У неё слабая функция поиска и дорогая оплата. В YouTrack есть функция базы знаний с поддержкой Markdown. Также там есть простой импорт, а функция поиска приемлемая. YouTrack — наша система отслеживания ошибок, и мы продолжим её использовать.

Если вы подтвердите, что база знаний YT работает медленно в продакшене, мы можем рассмотреть вариант отказа от её использования.

Discourse используется как система поддержки третьего уровня. Основная функция — сохранение решений клиентов и обмен лучшими практиками. К сожалению, использование Discourse клиентами затруднено. Команда поддержки клиентов использует Service Desk. Кроме того, слишком сложно создавать сотни частных категорий для каждого клиента.

В любом случае, Discourse в целом отличный :slight_smile:.

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

Что касается Confluence, то мы тоже сейчас ищем альтернативу :slight_smile: но без спешки.

Вы уже смотрели Discourse для команд?

@blake Пока нет, посмотрю, спасибо!

Стоит подумать о том, чтобы использовать Discourse for Teams в сочетании с Google Currents. :speech_balloon: