Пользовательские поля¶
Пользовательские поля — дополнительные вопросы к заявкам: номер заказа, который спрашивает форма, браузер, в котором заметили ошибку, уровень договора, который смотрят сотрудники, риск оттока, который должны читать только сотрудники. У каждого поля есть тип, оно применяется ко всем проектам или к некоторым и определяет, кто его видит.
Для управления полями нужно helpdesk-pro.projects.manage. Любой, у кого есть доступ к рабочей области, может прочитать список.
Создание поля¶
- В рабочей области откройте Setup → Fields и выберите New field.
- Введите Label. Key создаётся из него, пока вы не введёте свой.
- Выберите Type и добавьте Options для Select или Multi-select.
- Выберите Visibility и Projects, к которым поле применяется.
- При желании установите Clients must answer it и Show as a column on All tickets.
- Сохраните.
Список показывает поля в том порядке, в каком их показывают формы и боковая панель заявки; меняйте порядок стрелками. Каждая строка показывает тип поля, кто его видит, его проекты и сколько заявок содержат значение. Название поля открывает редактор (#/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 символов |
| Адрес электронной почты |
Пустой ответ означает отсутствие значения, и сохранение пустого очищает поле. Удаление варианта оставляет заявки, где он сохранён, показывающими старое значение в том виде, в каком оно было записано.
Удаление поля¶
Поле, которое не содержит значений ни в одной заявке, удаляется. Поле со значениями вместо этого архивируется, и диалог подтверждения сообщает, что произойдёт. Архивное поле исчезает из всех форм, боковой панели заявки, портала, списка и 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>).