Я не думаю, что они могут. Им нужно будет зарегистрироваться и обновить свои настройки по этой теме или общие настройки уведомлений.
Есть ли какая-то документация по этому эндпоинту? Я искал в документации 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, рассылается приглашение по электронной почте?
Самый простой ответ всегда лучший:
Поэтому мы будем использовать его для наших периодических нужд.
Спасибо за помощь.