Можете рассказать подробнее о том, что вы делаете? Что именно вы изменяете в форме? Может ли это быть тематическим компонентом? Отправляетесь ли вы данные на существующую конечную точку или на новую, которую вы добавляете?
@pfaffman Мы хотим создать простую форму, которая запрашивает у пользователя четыре параметра:
Отправитель
Получатель
Тема
Тело сообщения
Пользователь заполнит эти поля, а затем нажмет кнопку, чтобы вызвать endpoint для отправки письма.
Конкретно форма будет включать четыре элемента, и после нажатия кнопки «Отправить» будет вызван endpoint для отправки сообщения.
Я не уверен, что это именно то, что вы ищете, но основная цель — позволить администратору ввести текст (тему и тело письма) и нажать кнопку, чтобы отправить его пользователю в Discourse.
В будущем мы хотели бы расширить функционал так, чтобы пользователь мог отправлять несколько сообщений от одного отправителя нескольким получателям. Мы хотим управлять такими параметрами, как общее количество сообщений и задержка между каждым из них, чтобы контролировать, сколько сообщений отправляется и с каким интервалом.
Может, отступите на шаг назад и опишите реальную проблему, которую вы пытаетесь решить.
Вы имеете в виду, что хотите отправить прямое письмо (так что сообщение не будет сохранено в Discourse), или что хотите отправить личное сообщение пользователю (что в большинстве случаев вызовет уведомление по электронной почте)?
Вы хотите изменить отправителя ЛС? Похоже, это единственное, чего не хватает в существующем интерфейсе личных сообщений, верно?
Спасибо за уточнение! Для контекста: мы работаем с большой базой пользователей и хотим вернуть тех, кто давно не взаимодействовал с нашим приложением. Цель — отправить личное сообщение (ЛС) большому количеству пользователей от конкретного отправителя, с контролем нескольких параметров:
Отправитель: Администратор укажет имя пользователя отправителя непосредственно в форме.
Тема и текст: Администратор сможет настроить как тему, так и тело ЛС.
Контроль объема: Мы хотим регулировать количество сообщений, отправляемых за один раз, чтобы избежать спама.
Время отправки: Ключевой момент — контроль скорости отправки сообщений, чтобы не перегружать наш почтовый домен и не попасть в спам-фильтры. Нам нужно будет иметь возможность выдерживать задержки между каждым сообщением (и соответствующим письмом), чтобы не спровоцировать срабатывание спам-фильтров.
Конечная цель — побудить пользователей открыть личное сообщение (которое также вызовет уведомление по электронной почте) и вернуться в наше приложение.
У нас уже есть простой Ruby-скрипт, который решает эту задачу и полностью рабочий. В данный момент мы запускаем его вручную, подключаясь к виртуальной машине через SSH, что довольно неудобно. Теперь мы хотим адаптировать этот скрипт в виде плагина, чтобы администратор мог легко запускать его через интерфейс, вводя настройки (отправитель, тема, текст, количество сообщений, задержка между ними и т. д.) прямо из панели администратора.
Мы хотим реализовать это через интерфейс плагина, который позволит администратору легко вводить эти настройки, запускать процесс и отслеживать прогресс отправки сообщений.
Я бы, вероятно, поступил так: поместил пользователей в группу и планировал отправку всем пользователям этой группы. При отправке сообщения вы устанавливали бы значение в user_custom_field и использовали бы существующую тему в качестве текста и отправителя сообщения. Задача выполнялась бы периодически и отправляла бы столько сообщений, сколько нужно. Я бы добавил группу и значение пользовательского поля в настройки.
Тогда вам не понадобится интерфейс или создание нового маршрута; вы сможете использовать существующие настройки. И вы сможете отслеживать произошедшее с помощью Data Explorer, поэтому вам не нужно разрабатывать интерфейс ни для того, ни для другого.
Но если вы хотите создать поля, которые пользователи заполняют в интерфейсе, вам стоит обратить внимание на компонент <Form>, о котором я уже упоминал.