Платформа Directual позволяет использовать шаблонизатор. Инструмент позволяет "провалиться" по связанным полям в другую структуру, либо вручную указать поле, которое вы хотите использовать.
Например, в кубике "Изменение объекта" мы выбираем слинкованное поле bookId и просим заменить его на значение из поля chatKey.lastMessageKey.text.
Поля элемента подставляются в выражениях в следующем виде:
, где name — системное название поля объекта, который обрабатывается в сценарии.
{{name}}
Это поле name, объекта, связанного с исходным объектом, обрабатывающимся в сценарии. При этом тип поля object_link должен быть типа link на структуру и содержать нужное значение OBJECT_ID привязанного объекта.
{{object_link.name}}
Экранирует специальные символы в внутри конструкции. Пусть name = 'aaaa"aaaa', то результат работы шаблонизатора: 'aaaa\"aaaa'
{{#escape}}{{name}}{{/escape}}
Функция для удаления переводов строки. Например, конструкция:
{{#stripNewLine}}testnew line{{/stripNewLine}}
вернёт значение 'test new line' в одну строку.
Экранирует специальные символы переноса строки. Можно передавать многострочные JSON объекты в теле запроса в http-request, например, так:
{"telegram":"{{#escape}}{{#escapeNewline}}{{message}}{{/escapeNewline}}{{/escape}}"}
Форматирование даты. Результатом этой конструкции будет значение 190501
{{#formatDate|yyMMdd}}2019-05-01T17:28:18{{/formatDate|yyMMdd}}
В случае, если is_vip типа boolean и имеет значение true, инструкция будет заменена на слово "vip".
{{#is_vip}}vip{{/is_vip}}
{{^is_vip}}not vip{{/is_vip}} — в случае, если is_vip типа boolean и имеет значение false, инструкция будет заменена на строку "not vip". Этот и предыдущий виды инструкций выполняются только для полей типа boolean, в противном случае инструкция заменяется на пустую строку.
{{^is_vip}}not vip{{/is_vip}}
Для полей типа arrayLink предусмотрена возможность ссылаться на поле сликованной структуры с помощью инструкций вида {{#arrayLink_field_in_Struct1}}{{data from field in Struct2}}{{/arrayLink_field_in_Struct1}}. Этот вид инструкции выполняется только для полей типа arrayLink, в противном случае инструкция заменяется на пустую строку.
{{#arrayLink_field_in_Struct1}}{{data_from_field_in_Struct2}}{{/arrayLink_field_in_Struct1}}
Рассмотрим на примере кубика "Редактирование объекта":
Поле insrtuctionsLinkToTemplate имеет тип arrayLink и ссылается на структуру с полем instructions_value. В кубике изменения объекта указываем платформе записать значение instructions_value в поле instructions_result, а путь к нему лежит через insrtuctionsLinkToTemplate.
{{#arr}}* {{.}} {{/arr}}// если arr = [1, 2, 3], то результат шаблонизации будет равен '* 1 * 2 * 3 ' {{.}} - обращение к текущему элементу массива.
Предположим, значение поля musketeers имеет значения Athos, Aramis, D'Artagnan и кто-то ещё.
{ "musketeers": ["Athos", "Aramis", "", "D'Artagnan"] }
Результат выполнения конструкции
{{#musketeers}}{{#.}}* {{.}}{{/.}}{{/musketeers}}
будет список:
* Athos * Aramis * D'Artagnan
Конструкция вида '#Arr.../Arr' игнорируется, если ссылка на массив принимает значение null, undefined, false, 0, or NaN, а не на его элементы.
В случае, если в поле объекта хранятся JSON данные, в платформе предусмотрена возможность работать с ними напрямую.
Исторически сложилось два подхода к такой обработке в шаблонизации. Через символ ">" или через точку. На данный момент поддерживаются оба варианта.
Парсинг вида {{json>key}}. Допустим, что поле json имеет тип данных string и содержит значение:
JSON{"id":1,"key":"your value"}
В таком случае, результатом шаблонизации {{json>key}} будет значение 'your value'.
Парсинг вида {{linkTo.json.key}} Предположим, в результате шаблонизации, мы ожидаем получить значение key из поля json в слинкованной структруре. В таком случае, обращаться можно через точку. Важно понимать, что поле json долно иметь тип данных JSON, иначе результат будет пустым.
JSON{"id":1,"key":"your value"}
Парсинг вида {{json.key1.key2}} вернёт значение ключа key2 из поля json.
{"id":1,"key1":{"key2":"your value","onemore":"one_more_value"}}
Парсинг JSON через точку доступен только для полей с типом данных JSON
У заполняемых полей есть возможность воспринимать выражения, написанные на Java Script, благодаря встроенному интерпретатору.
Если есть потребность вычислить выражение с использованием значения из шаблона, обязательно включайте галочку "Вычислить выражение" (Evaluate the expression). Если не включить чекбокс, то написанное выражение будет восприниматься как строка.
Например, конструкция {{id}}+1 прибавит к ID единицу, при условии корректного типа данных в ID.
В случае ошибки JS выражения движение объекта по сценарию будет остановлено.
При работе с датами и временем возможно использование следующих переменных и выражений:
now (сегодняшняя дата и текущее время) today (сегодняшняя дата, время 00:00:00) +1 day, -1 days, etc. +5 hours, -4 hour, etc. +2 months, -3 month, etc. today -14 days, now +3 hours, today -12 months, etc. {{date}} +1 day — для поля типа date
Как видно из примера, дата возвращается в формате по стандарту ISO-8601 (YYYY-MM-DDTHH:mm:ss.sssZ).