Форма обратной связи

:information_source: Краткое описание Добавляет форму обратной связи в начало любой темы с тегом contact. Данные, отправленные через форму, будут направлены в группу или категорию, настроенную для их получения.
:hammer_and_wrench: Ссылка на репозиторий https://github.com/jericson/discourse-contact-plugin
:open_book: Руководство по установке Как установить плагины в Discourse

Возможности

При включении плагин «Форма обратной связи» размещает форму в начале любой темы с тегом contact. Данные, отправленные через форму, направляются в категорию или группу, настроенную для получения писем от contact_form_email.[1] Как и в традиционных формах обратной связи, для отправки не требуется наличие учётной записи на сайте.

Вот что может увидеть посетитель:

Обратите внимание, что это обычное сообщение, в теле которого можно разместить любые инструкции, которые вы хотите включить.[2] В настоящее время имена полей зафиксированы в коде, и реальная проверка данных не выполняется, однако см. раздел TODO ниже. После отправки сообщения оно появится в ленте сообщений настроенной группы:

В зависимости от настроек уведомлений по электронной почте, члены настроенной группы также могут получать письмо от Discourse:

Настройка

Для использования этого плагина необходимо настроить входящую электронную почту для создания новых тем или сообщений группы. Настройка отправки ответов по электронной почте не требуется, поскольку плагин фактически не отправляет письма. Он перехватывает API для имитации входящей почты. (Тем не менее, функция отправки ответов по электронной почте очень полезна!)

В частности, этот плагин требует включения следующих параметров:

  • email_in и
  • enable_staged_users

После включения любая тема с тегом contact будет иметь форму обратной связи, добавленную в точку вставки topic-above-posts.

Отправка в группу

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

  1. Создайте новую группу для людей, которые будут обрабатывать обращения. (Обычно я называю её «Contact» для простоты, но это может быть любое название, включая существующую группу.)
  2. Добавьте участников, которые будут получать контактную информацию.
  3. Не отмечайте никакие опции доступа. Это должна быть закрытая группа.
  4. Измените видимость группы в соответствии с требованиями вашей организации.
  5. Установите «Пользовательский адрес входящей почты» таким же, как и настройка contact_form_email. (По умолчанию это «contact@example.com».)

Отправка в категорию

Отправка в категорию также возможна с помощью настройки «Пользовательский адрес входящей почты» категории. Обязательно включите опцию «Принимать письма от анонимных пользователей без учётных записей».

Однако отправка контактной информации в категорию не рекомендуется! Если по какой-то причине права доступа к категории будут изменены, это может привести к раскрытию личной информации людям (или поисковым системам), которые не должны иметь к ней доступ. Гораздо менее вероятно, что это произойдёт, если контакты отправляются в сообщения группы.

Ограничение круга лиц, которые могут добавлять формы обратной связи

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

  1. На странице /tags выберите значок гаечного ключа в правом верхнем углу.
  2. Выберите «Управление группами тегов», а затем « :heavy_plus_sign: Новая группа».
  3. Введите подходящее имя (например, «Только сотрудники»), добавьте тег contact и выберите «Теги видны всем, но использовать их могут только следующие группы».
  4. Выберите группу, которой разрешено добавлять форму обратной связи (обычно «staff» или «admins»), и сохраните группу тегов.

ИСТОРИЯ ИЗМЕНЕНИЙ

  • 25 апреля 2024 г.: Альфа-релиз.

TODO

  • Я хотел бы настроить тесты, чтобы убедиться, что ничего не сломается при внесении изменений. В частности, я хочу проверить, что люди без учётных записей могут отправлять свои данные.
  • При тестировании я обнаружил серьёзную утечку данных. Я устранил эту уязвимость, но мне очень нужна помощь в тестировании.
  • Форма не выполняет никакой проверки данных. Единственное реальное требование — чтобы поле электронной почты выглядело как адрес email. Если кто-то оставит ответ без указания email, форма тихо завершится с ошибкой.
  • Нет защиты от спама или злоупотреблений.
  • Код имеет качество «мой-первый-плагин», основанное на примерах, использующих устаревшие соглашения. Любые предложения по стилю приветствуются.
  • Мне нравится, что форма обратной связи связана с темой, помеченной тегом «contact», но это излишне усложнено и, вероятно, не нужно. Я рассматриваю возможность добавления нового маршрута, который будет просто формой обратной связи для простоты.
  • Данные контактов хранятся в базе данных, но было бы полезно иметь панель администратора для просмотра списка контактов.
  • Форма зафиксирована под мои текущие требования, но было бы удобно иметь некоторую гибкость в выборе полей, которые она запрашивает.

  1. Эта настройка по умолчанию равна «contact@example.com», но может быть изменена для приема реальных адресов электронной почты. ↩︎

  2. Даже возможно отвечать на форму обратной связи, к лучшему или к худшему. ↩︎

13 лайков

Ссылка на репозиторий не работает. Можешь обновить @jericson?

Работает на меня.

1 лайк

Это не тема, а плагин. См. Install plugins on a self-hosted site.

5 лайков

Решено.

2 лайка

Отлично! Будущим читателям может быть полезно узнать, что помогло именно вам.

Наверное, вы не устанавливаете плагин как тему :wink:

1 лайк

Можете выложить несколько скриншотов работы плагина? Можно ли изменить/настроить «Форму обратной связи»?

1 лайк

Конечно! Посмотрите отредактированный пост.

К сожалению, нет. Но мы приветствуем PR!

1 лайк

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

Верно. У меня есть другой плагин (еще более сырой, чем этот) для получения анонимных отзывов. Я использую review@example.com для маршрутизации этих сообщений в нужное место. Это просто строка.

1 лайк

Недавно я обновил плагин, так как он не работал в последних версиях Discourse.

4 лайка