Перейти к содержанию

Пользовательские поля

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

Для управления полями нужно helpdesk-pro.projects.manage. Любой, у кого есть доступ к рабочей области, может прочитать список.

Создание поля

  1. В рабочей области откройте Setup → Fields и выберите New field.
  2. Введите Label. Key создаётся из него, пока вы не введёте свой.
  3. Выберите Type и добавьте Options для Select или Multi-select.
  4. Выберите Visibility и Projects, к которым поле применяется.
  5. При желании установите Clients must answer it и Show as a column on All tickets.
  6. Сохраните.

Список показывает поля в том порядке, в каком их показывают формы и боковая панель заявки; меняйте порядок стрелками. Каждая строка показывает тип поля, кто его видит, его проекты и сколько заявок содержат значение. Название поля открывает редактор (#/setup/fields/<id>), который спрашивает перед уходом с несохранёнными изменениями.

Настройка Что делает
Label То, что читают люди.
Key Постоянное имя поля: строчные буквы, цифры и подчёркивания, начинается с буквы (order_number). Фиксируется после создания поля, потому что фильтры, сохранённые представления, API, MCP и правила называют поле по нему.
Type Text, Long text, Number, Select, Multi-select, Checkbox, Date, URL или Email. Фиксируется, когда любая заявка получает значение.
Help text Одна строка под полем в формах.
Visibility Кто его видит (ниже). Новые поля — Staff only, пока вы не укажете иное.
Clients must answer it Только для полей, которые заполняют клиенты, и только в веб-формах.
Options Для Select и Multi-select. У каждого варианта есть значение (что хранится и что используют фильтры и API) и метка (что читают люди). Метку можно менять в любое время; значение сохранённого варианта изменить нельзя.
Projects Все проекты (включая созданные позже) или список.
Show as a column on All tickets Добавляет поле в список заявок.

Кто видит поле

Видимость В Setup Клиент Сотрудник
public Клиенты заполняют Заполняет в форме запроса и видит в своём обращении Видит и меняет
readonly Клиенты видят Видит в своём обращении, не может изменить Видит и меняет
internal Только сотрудники Никогда и нигде не видит Видит и меняет

«Сотрудники» здесь — те, кто работает с проектом заявки. Внутреннее значение никогда не доходит до клиента: ни в портале, ни в API или MCP, ни в письмах клиенту, ни в обновлениях в реальном времени, ни в поиске, который вообще не индексирует значения полей.

Типы и что они принимают

Тип Принимает
Text Одну строку до 255 символов
Long text До 10 000 символов с сохранением строк
Number Целое или десятичное число (3,5 читается как 3.5)
Select Один из своих вариантов
Multi-select Любые из своих вариантов в порядке вариантов
Checkbox Установлен или нет; неустановленный означает отсутствие значения
Date YYYY-MM-DD
URL Адрес http или https до 2 000 символов
Email Адрес электронной почты

Пустой ответ означает отсутствие значения, и сохранение пустого очищает поле. Удаление варианта оставляет заявки, где он сохранён, показывающими старое значение в том виде, в каком оно было записано.

Удаление поля

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

  • Restore возвращает его со значениями.
  • Delete permanently, доступное только для архивного поля и подтверждаемое второй раз с числом затронутых заявок, удаляет поле и все значения.

В форме запроса

Форма запроса портала и гостевая форма показывают публичные поля предлагаемых проектов. Когда клиент выбирает проект, форма показывает поля этого проекта и скрывает остальные; скрытое поле не отправляется и не требуется. Partial helpdesk/partials/form-extra.html.twig отрисовывает их, и тема может его переопределить.

Обязательное поле, оставленное пустым, или ответ, который поле не принимает, возвращает форму с сообщением под этим полем.

  • Обязательность действует только в веб-формах. Заявки из почты пропускают обязательные поля, как и заявки, которые сотрудники открывают в рабочей области или через API.
  • Клиент или гость может задавать только публичные поля. Значение readonly или внутреннего поля, отправленное с формой, отбрасывается.

В рабочей области

  • Панель Fields. Боковая панель заявки перечисляет поля, применимые к проекту заявки. Нажмите на значение (или Add), чтобы изменить его; Enter или Save сохраняет, Escape или Cancel возвращает, а checkbox сохраняется при установке. Поле, видимое клиентам, сообщает об этом рядом с меткой. Каждое изменение записывается в активность заявки, доступную только сотрудникам («set Plan to Pro»).
  • New ticket. Форма показывает поля выбранного проекта.
  • All tickets. Поле с отметкой Show as a column on All tickets получает столбец, который скрывается, когда ни у одной заявки на странице нет значения. В More filters фильтры полей работают по вариантам select и multi-select, по Yes или No для checkbox и по диапазону от–до для даты. Они сохраняются в адресе (#/tickets?cf_plan=gold&cf_due=2026-09-01..2026-09-30), поэтому сохранённое представление их сохраняет.

В портале и письмах

Страница обращения клиента перечисляет публичные и readonly-поля, у которых есть значение, в виде метки и значения словами. Клиенты не могут менять значения после отправки обращения.

Уведомление сотруднику об одной заявке перечисляет значения её полей в таблице под сообщением. Письма клиентам вообще не несут значений полей.

В правилах

Каждое неархивное поле — условие правила (field.<key>), A custom field changes — триггер, а Set a field — действие. См. Правила и автоматизация.

Конфиденциальность

То, что клиент ввёл в публичное поле, может быть персональными данными (номер телефона, ссылка на заказ). Удаление человека очищает значения публичных полей в заявках, где он заявитель, в обоих режимах удаления. Значения readonly и internal — то, что написали сотрудники, и они сохраняются. См. Люди и конфиденциальность.

API и MCP

Маршрут Инструмент MCP Право
GET /helpdesk-pro/fields list_fields desk; клиент получает публичные и readonly-поля
POST /helpdesk-pro/fields create_field projects.manage
PUT /helpdesk-pro/fields/order reorder_fields projects.manage
GET /helpdesk-pro/fields/{id} get_field desk
PATCH /helpdesk-pro/fields/{id} update_field projects.manage
DELETE /helpdesk-pro/fields/{id} delete_field projects.manage
POST /helpdesk-pro/fields/{id}/restore restore_field projects.manage
GET /helpdesk-pro/tickets/{id}/fields get_ticket_fields desk; клиент получает публичные и readonly-поля в заявках, которые читает
PATCH /helpdesk-pro/tickets/{id}/fields set_ticket_fields desk и право редактировать заявку

Каждая заявка в API несёт значения в extra.fields в виде ключ-значение для полей, которые вызывающий может видеть. POST /helpdesk-pro/tickets принимает fields, а список принимает фильтры cf_<key> только для сотрудников. Подробности в разделе REST API.

curl -k -X PATCH "$BASE/tickets/1042/fields" -H "X-API-Key: $KEY" -H 'Content-Type: application/json' \
  -d '{"fields": {"plan": "gold", "renewal": "2026-12-01", "areas": ["api", "billing"], "vip": true}}'

Сначала проверяется каждое значение, и одно неверное не сохраняет ничего (422 с ошибками fields.<key>).