enВойти в Senler

Формат элемента контекста

Этот формат общий для контекста страницы и контекста отдельного сообщения.

Передавайте только данные, которые разрешено видеть этому посетителю. Не добавляйте секреты, токены или платёжные данные. Контекст не выдаёт права на выполнение действий.

Опишите каждый элемент

ПолеТипОбязательноеЧто передавать
idstringДаСтабильный ID элемента, например order:123.
kindstringДаТип сущности: page, order, product.
rolestringДаНазначение элемента из списка ниже.
display.labelstringДаКороткая понятная подпись плашки.
display.subtitlestringНетДополнительное пояснение в плашке.
display.iconstringНетЗарезервированный строковый идентификатор до 40 символов. Текущий интерфейс выбирает стандартную иконку по kind и не отрисовывает это значение.
display.avatar_urlstringНетURL изображения.
refobjectНетСтабильные ID, маршрут или URL, по которым можно найти актуальный объект.
snapshotobjectНетЗначения объекта, зафиксированные на момент отправки.
payloadobjectНетДополнительные JSON-данные, формат которых определяет ваша интеграция.
Значение roleКогда использовать
technicalТекущая страница или служебная часть сценария.
user_selectedОбъект, который явно выбрал посетитель.
business_contextЗаказ, товар, проект или другая предметная сущность вопроса.
action_targetОбъект, который пользователь предполагает изменить.

Роль описывает назначение элемента, но сама по себе не выдаёт разрешение на действие. После объединения постоянного контекста, одноразового контекста и выбранного элемента в одном сообщении должно остаться не более 12 элементов.

Ограничения: id — до 120 символов, kind — до 80, display.label — до 80, display.subtitle — до 140, display.icon — до 40, display.avatar_url — до 500. ref, snapshot и payload должны быть JSON-совместимыми объектами.

Ссылки на страницу из истории

Для ссылки из плашки передавайте ref.url или ref.route. Непустой ref.url имеет приоритет. При передаче через loader относительный адрес, например /orders/123, превращается в абсолютный URL относительно страницы вашего сайта. Поэтому ссылка из сохранённой переписки ведёт к заказу на вашем сайте, а не к такому же пути внутри Senler.

При прямой передаче данных без loader указывайте полный URL с https:// или http://. Если в сохранённом контексте указан только относительный маршрут без домена, он не открывается как ссылка: по нему нельзя надёжно определить исходный сайт. Адреса с другими протоколами, включая javascript:, не становятся ссылками в истории. Сам контекст при этом остаётся доступен для чтения.

Проверьте плашки перед отправкой

Используйте ID вида page:/orders/123, project:019..., order:123. Если один объект пришёл и из page context, и из contextItems, совпадающий id оставит один тег. Разным сущностям задавайте разные kind и id, даже если подписи похожи.

Постоянный контекст, одноразовые contextItems и выбранный элемент объединяются в таком порядке и дедуплицируются по id: более поздний элемент с тем же ID заменяет предыдущий. Поэтому одноразовый элемент может уточнить постоянный, а выбранный элемент — оба предыдущих. Пользователь может удалить любую плашку из черновика до отправки.

После отправки плашки сохраняются в истории диалога только для чтения. Их можно раскрыть и, если переданы ссылки, открыть ref.url или ref.route. В деталях показывается только поддерживаемая часть данных, поэтому не рассчитывайте на отображение каждого произвольного поля payload.