Creating a staged user with an API call

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

Есть ли какая-то документация по этому эндпоинту? Я искал в документации API, но её там нет.

Мне нужно найти способ создать тему и назначить её конкретному пользователю (с помощью плагина discourse-assign).

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

Только этот пост: Creating a staged user with an API call - #8 by blake

Это вполне выполнимо. Посмотрите на Reverse engineer the Discourse API, и вы увидите, какой эндпоинт вызывает плагин discourse-assign.

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

Спасибо за ответ. Я понимаю, как назначить конкретный пост, но как надежно найти пост, только что созданный через endpoint /admin/email/handle_mail? Также, похоже, что полученные вызовы ставятся в очередь, поэтому я не всегда смогу найти его сразу после первого вызова.

Верно, этот эндпоинт не возвращает topic_id.

Обязательно ли это должны быть staged-пользователи? Не могли бы вы просто создать пользователя через API, а затем создать тему? Или же люди, у которых еще нет аккаунтов, будут отправлять запросы на этот эндпоинт?

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

У меня вопрос с точки зрения не-разработчика.

Я использую Discourse как тикет-систему нашей компании и успешно настроил создание новых тем незарегистрированными пользователями в нашем форуме поддержки.

Иногда мне нужно создать тикет от имени клиента, вместо того чтобы он создавал его сам.

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

Попробуйте создать тему через входящее письмо:

Таким образом, при создании темы будет создан временный пользователь.

Вы также можете создать временного пользователя через API:

curl -i -sS -X POST "http://localhost:4200/users"  \
-H "Content-Type: multipart/form-data"  \
-H "Api-Key: 3e8aa0b7970cf010da24d06215fdc7b3951352c61a59ada70f5f36b4ce890bb2"  \
-H "Api-Username: system"  \
-F "name=2e6ac3603"  \
-F "active=false"  \
-F "staged=true"  \
-F "username=2e6ac3603"  \
-F "email=2e6ac3603@example.com"  \
-F "password=f9b4c3c7ebd1c2877a0ad659be6ca83e"

А затем создать тему для этого пользователя. Однако при создании пользователя Discourse отправит письмо с подтверждением:

{"success": true, "active": false, "message": "Почти готово! Мы отправили письмо с подтверждением на адрес 2e6ac3603@example.com. Пожалуйста, следуйте инструкциям в письме для активации вашей учётной записи. Если письмо не пришло, проверьте папку «Спам»."}

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

Таким образом, использование этого метода просто создаёт пользователя, но, несмотря на то, что staged=true, рассылается приглашение по электронной почте?

Самый простой ответ всегда лучший:

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