Помощь

Спец. возможности
Назад

Использование переменных

В полях, отмеченных значком {}, можно использовать переменные. Например:

Добрый день, {name}!

В этом примере мы использовали переменную name -- имя клиента. Переменные обрамляются фигурными скобками. Некоторые переменные доступны только в определенном контексте.

Так бывает, что не всегда данные в карточке клиента заполнены. Для таких случаев желательно указывать значение по-умолчанию. Например:

Добрый день, {name|уважаемый клиент}!

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

Добрый день, уважаемый клиент!

Это гораздо лучше, чем:

Добрый день, !

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

Базовые переменные

Эти переменные можно использовать в любом контексте.

Переменная Содержимое
clientId Идентификатор клиента
clientMessengerId Внешний идентификатор мессенджера
clientDialogId Внешний идентификатор диалога
transport Название мессенджера
phone Отправленный клиентом номер телефона
name Имя клиента из карточки
comment Комментарий
inboxText Текст входящего сообщения
inboxPhone Номер телефона из входящего сообщения
inboxAttachment Ссылка на вложение к входящему сообщению
customFieldN Кастомное поле клиента, N -- код поля, например {customField1}
now Текущая дата и время
nowTime Текущее время
weekday Текущий день недели
testing Находимся ли в режиме тестирования
settings Объект настроек решения

Туннели

Переменная Содержимое
variables Переменные туннеля; можно обращаться как {variables[var]}/{$var}/{{ $$var }}
ref Доп. параметр старта туннеля

Виджеты (минилендинги)

Данные переменные доступны из действий виджета, а также из туннелей, запущенных этим виджетом.

Переменная Содержимое
widgetPhone Номер телефона, который был введен клиентом
utm UTM-метки в виде query string, например utm_campaign=1&utm_source=vk
utmSource  
utmCampaign  
utmTerm  
utmMedium  
utmContent  
httpUserAgent HTTP-заголовок User-Agent клиента
httpReferer HTTP-заголовок Referer клиента

Платежи

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

Переменная Содержимое
invoiceNumber Номер счета в рамках платежной системы
invoiceHash Закодированный номер счета
invoiceUrl Ссылка на оплату
invoiceAmount Сумма платежа
invoiceItems Позиции счета (массив из элементов InvoiceItem)
invoicePhone Номер телефона плательщика
invoiceEmail E-mail плательщика
invoiceDescription Описание платежа (для клиента)
invoiceComment Комментарий к платежу (для себя)
invoiceStatus Статус платежа
invoiceCreatedAt Дата создания платежа
invoiceFinishedAt Дата завершения платежа

InvoiceItem

Переменная Содержимое
id Идентификатор позиции
title Заголовок
price Цена
quantity Количество

Пример доступа:

  • {invoiceItems[0.id]} -- получить идентификатор первой позиции
  • {{ $invoiceItems | get $$i id }} -- получить идентификатор позиции с индексом {$i}

Триггеры

Переменная Содержимое
query Массив переданных параметров; можно обращаться как {query[param]}

Расширенный синтаксис

Расширенный синтаксис позволяет выполнять арифметические операции, форматировать и изменять дату и время, и др.

Расширенный синтаксис задается двумя фигурными скобками: {{ $var }}. Где $var -- это переменная var, например: {{ $name }} {{ $customField5 }} {{ $variables[var] }}. Можно также использовать строки и числа: {{ 10.06.2019 }} {{ 100 }} {{ "10.06.2019 11:13" }}. Обратите внимание на последнее выражение: оно использует двойные кавычки, т.к. в строке присутствует пробел.

Для переменных туннеля доступен короткий синтаксис: {{ $$myvar }}. Для такого синтаксиса переменная должна состоять только из латинских букв, цифр и знака подчеркивания, а также не начинаться с цифры.

В расширенном синтаксисе можно применять различные модификаторы, например сложение, вычитание и т.д. Общий синтаксис такой: {{ $var | <modifier> <params> }}. <modifier> -- название модификатора, <params> -- возможные параметры, указанные через пробел. Параметры также могут быть переменной, строкой или числом.

Примеры:

  • {{ $customField1 |+ 1 }} -- прибавить 1 к значению поля; т.е. если в поле хранится число 10, то такое выражение вернет 11 (но НЕ обновит поле, для этого нужно выполнить действие обновления поля)
  • {{ 100 |- $variables[discount] |/ 100 |* $variables[sum] }} -- показать сумму из переменной sum со скидкой из переменной discount; эти переменные могут заполняться на основе действий клиента в туннеле
  • {{ $now |~ d.m.Y }} -- форматировать текущее время как дату
  • {{ $now |~ U }} -- форматировать текущее время в timestamp
  • {{ $now | dateAdd 2 days }} -- добавить к текущему времени 2 дня

Доступные модификаторы

Арифметические

Арифметические модификаторы преобразуют параметр на входе в число или в 0, если на входе не число.

Модификатор Описание Пример
+ <amount> Прибавить <amount> {{ $customField1 |+ $customField2 }}
- <amount> Вычесть <amount> {{ $customField1 |- $customField2 }}
* <amount> Умножить на <amount> {{ $customField1 |* $customField2 }}
/ <amount> Разделить на <amount> {{ $customField1 |/ $customField2 }}

Дата и время

Входящее значение преобразуется во время; если преобразование невозможно, то на выходе получится пустая строка.

Модификатор Описание Пример
~ <format> Форматировать время в указанном формате (описание форматов) {{ $now |~ 'd M Y' }}
dateAdd <amount> <intervalType> Добавить к дате указанный интервал {{ $now | dateAdd 2 hours }}
dateSub <amount> <intervalType> Вычесть из даты указанный интервал {{ $now | dateSub 1 week }}
dateDiff <date> <intervalType> <absolute>  Посчитать разницу между датами. <date> -- другая дата, <intervalType> -- в чем считать разницу, <absolute> -- выводить абсолютное значение или точное  {{ $now | dateSub $$date days }} {{ $now | dateSub 2019-01-01 months 0 }}

 

Тип интервала (intervalType) Описание
second/seconds Секунды
minute/minutes Минуты
hour/hours Часы
day/days Дни
week/weeks Недели
month/months Месяцы
year/years Года

Разное

Модификатор Описание Пример
| <default> Использовать значение <default>, если входящее значение является пустым {{ $name || "уважаемый клиент" }}
lower Преобразовать строку в нижний регистр {{ $inboxText | lower }}
base64Decode Декодировать строку из Base64 {{ $inboxText | base64Decode }}
get <key>, ... Извлечь из массива/объекта значение по ключу <key>. Ключей может быть несколько, если это вложенный объект. {{ $settings | get $$var key }}
split <delim> Разбить строку на подстроки по разделителю <delim> {{ $$var | split , | get 0 }} -- взять часть строки до первой запятой
merge <delim> Слить массив строк в одну строку с разделителем <delim>. Используйте \n для перевода строки. {{ $$var | split , | merge \n }} -- разбить строку по запятым и потом слить с помощью разделителя строки.
merge <param> <delim> Слить массив объектов в одну строку с разделителем <delim>, при этом вместо объекта используется его поле <param>. Используйте \n для перевода строки. {{ $$collection | merge name \n }} -- вывести список объектов каждый на отдельной строке, при этом выводить нужно содержимое поля name