Переменные и функции ALTCRAFT
Переменные
Переменные данных профиля
Описание | Переменная |
---|---|
Email-адрес | {lead.email} |
Список телефонов | {lead.phones} |
Имя | {lead._fname} |
Фамилия | {lead._lname} |
Дата рождения | {lead._bdate} |
Пол | {lead._sex} |
Дата регистрации | {lead._regdate} |
IP-адрес регистрации | {lead._regip} |
Город регистрации | {lead._regcity} |
Страна регистрации | {lead._regcountry} |
URL-адрес регистрации | {lead._regurl} |
IP-адрес | {lead._ip} |
Город | {lead._city} |
Страна | {lead._country} |
Регион | {lead._region} |
Индекс | {lead._postal_code} |
Временная зона | {lead._tz} |
Поставщик | {lead._vendor} |
Идентификатор профиля | {lead._id} |
XXM-хеш | {lead._xxm} |
XX-хеш | {lead._xxh} |
MD5-хеш | {lead._md5} |
* Дополнительно е поле | {lead.название_поля} |
Переменные подписок профиля
Описание | Переменная |
---|---|
Email-адрес подписки | {subscription.email} |
Домен email-адреса | {subscription.email_domain} |
Список email-адресов подписки | {subscription.emails} |
Телефон подписки | {subscription.phone} |
Список телефонов подписки | {subscription.phones} |
Список push-подписок | {subscription.pushes} |
MD5-хеш email-адреса | {subscription.email_md5} |
MD5-хеш телефона | {subscription.phone_md5} |
Hash подписки | {subscription.hash_id} |
Кастомное поле подписки | {subscription_field("channel" "field_name" resource_id)} channel — строка с указанием на канал ("email") field_name — имя поля для вставки ("domain") resource — идентификатор ресурса (10) |
Функция subscription_field
позволяет вставлять поля из подписок, независимо от того, какой канал используется в текущем сообщении. Например, если у профиля есть SMS подписка, вы можете подставить его телефон в email версию сообщения:
{subscription_field("sms" "phone")}
Если под условия подходят несколько подписок, выбирается подписка с самым высоким приоритетом.
Доступные поля для подстановки:
Канал | Поле | Описание |
---|---|---|
Email-адрес подписки | ||
domain | Домен email-адреса подписки | |
domain_group | Доменная группа | |
md5 | MD5-хеш email-адреса | |
sms | phone | Телефон подписки |
md5 | MD5-хеш телефона | |
push | subscription_id | Идентификатор push-подписки |
bundle_id | Идентификатор приложения для iOS APNs | |
provider | Push провайдер |
Аналогично в шаблон можно подставлять данные из подписок кастомных каналов. Поля кастомных каналов соответствуют sid полей, которые вы указываете при создании канала.
Связи профилей
Общая формула переменной:
{relation.[короткое_имя_связи].[direct для прямых или reverse для обратных].[имя_свойства].[count — количество, total — сумма, top — топ связей]}
Количество прямых связей со свойством profit:
{relation.managers_loyal.direct.profit.count}
Топ обратных связей со свойством profit
. Используется цикл для вывода нескольких значений:
{for $index $item = relation.managers_loyal.reverse.profit.top}
{$item.lead._fname} {$item.lead._lname} ({$item.value} profit)
{else} There is no ‘profit’ for you :(
{end}
Сумма значения свойства profit для прямой связи:
{relation.managers_loyal.direct.profit.total}
Переменные даты и времени
Описание | Переменная | Пример |
---|---|---|
Форматированная дата | {format} | {format datenow "%Y-%m-%D %H:%M:%S timezone, %I am"} 2018-12-25 18:56:10 +03:00, 6 pm |
Неформатированная дата | {datenow} | 2018-12-25T18:56:10+0300 |
Смещение даты | {adddate()} | {adddate(datenow 0 0 3)} 2018-12-27T18:56:10+0300 |
Полный год | {yearlong} | 2018 |
Год | {year} | 18 |
Месяц | {month} | 12 |
День | {day} | 10 |
Часы в 24-часовом формате | {hours} | 18 |
Часы в 12-часовом фо рмате | {hours12} | 06 |
«До полудня», «После полудня» | {ampm} | PM |
Минуты | {minutes} | 56 |
Секунды | {seconds} | 10 |
Дополнительные переменные
Описание | Переменная |
---|---|
API контент | {apicontent.field_name} |
Имя отправителя SMS | {from_name_sms} |
Пиксель, чтобы зафиксировать открытие письма | {pixel} |
Пиксель, чтобы зафиксировать чтение письма | {read} |
Идентификатор ресурса | {resid} |
Пиксель, чтобы зафиксировать чтение письма | {read} |
Название базы данных | {listname} |
Идентификатор базы данных | {listid} |
Название сообщения | {msgname} |
Идентификатор сообщения | {msgid} |
Тип сообщения | {msg_type} |
Отмена отправки сообщения | {cancel} |
Трекинг домен | {trkdomain} |
Название кампании | {campname} |
Идентификатор кампании | {campid} |
SUBID кампании | {subid} |
Добавление в стоп-список | {suppress} |
URL-адрес менеджера подписок | {preferences} |
URL-адрес отписки | {unsubscribe} |
URL-адрес глобальной отписки | {globalunsubscribe} |
Функции редактора
Форматирование даты
Данные типа "дата" имеют разное представление в разных странах. Для удобства подписчиков предусмотрена функция форматирования дат.
Например, для того, чтобы представить дату рождения подписчика в виде:
Дата рождения 02.11.1998
Используется такая функция:
<p>Дата рождения {format lead._bdate "%D.%m.%Y"}</p>
Все параметры форматирования даты:
# years
"%y": "06"
"%Y": "2006"
"yy": "06"
"YYYY": "2006"
# months
"%m": "01"
"MM": "01"
"%B": "January"
"month": "January"
# days
"%d": "2"
"%D": "02"
"DD": "_2"
"%A": "Monday"
"weekday": "Monday"
# hours
"%H": "15"
"%I": "3"
"hh": "15"
"hours": "15"
"twelve_h": "3"
# mins
"%M": "04"
"mm": "04"
# seconds
"%S": "05"
"ss": "05"
# am/pm indicator
"am": "pm"
"AM": "PM"
"%p": "pm"
# timezone
"tzone": "-07"
"timezone": "-07:00"
"%Z": "Z0700"
Чтобы вставить функцию, нажмите на кнопку </>
в редакторе шаблонов и выберите Дата и время → Форматированная дата.
Если в шаблоне используется контент из внешнего JSON (переменная apicontent или динамический JSON контент), платформа может преобразовать строки в формате RFC 3339 в дату и время.
Пример форматирования:
Режим | Формат |
---|---|
JSON | "date_time": "2023-02-21T11:10:35.141Z" |
Шаблон | {format apicontent.date_time "%Y-%m-%d %H:%M:%S"} |
Предпросмотр | 2023-02-21 11:10:35 |
Смещение даты
Функция adddate(date, year, month, day)
возращает значение даты после того, как добавит к ней определённый интервал.
<p>Event starts on {adddate(lead.notify_date 0 0 10)}</p>
adddate()
может использоваться внутри функции format()
.
<p>Event starts on {format adddate(lead.notify_date 0 0 10) "%Y-%m-%D"}</p>
Чтобы вставить функцию, нажмите на кнопку </>
в редакторе шаблонов и выберите Дата и время → Смещение дат.
Форматирование цен
Также предусмотрена фунция форматирования числовых данных, которая делит число на блоки по три цифры заданным разделителем.
Price 8.000 RUR
<p>Price {format json.price "."} RUR</p>
Чтобы вставить функцию, нажмите на кнопку </>
в редакторе шаблонов и выберите Функции вывода → Форматирование.
Шифрование и хэширование
Шифрование переменных шаблона применяется когда необходимо передать данные вместе с кликом по URL на целевой сайт, но при этом данные не должны отражаться в журналах веб серверов или каким-то образом у пользователя. Например, в некоторых случаях данные предзаполнения форм достаточно закодировать в base58, чтобы на стороне сайта их раскодировать и подставить в форму.
Чтобы передавать контент шаблона и переменные в зашифрованном или хeшированном виде, в редакторе шаблонов предусмотрена функция crypt
. Чтобы получить доступ к ней, нажмите на кнопку </>
в редакторе шаблонов и выберите Шифрование.
{crypt(алгоритм поле ключ)}
Можно изменить кодировку или зашифровать данные по одному из этих алгоритмов:
- base58
- base64
- sha1
- sha256
- aes
- blowfish
Для sha1, sha256, aes и Blowfish необходимо указать ключ, который будет применяться на другой стороне для дешифровки значения.
Детали шифрования AES и Blowfish:
AES | Blowfish | |
---|---|---|
Вектор инициализации | Первые 16 байт строки | Первые 8 байт строки |
Режим шифрования | CFB (Cipher Feedback) | CBC (Cipher Block Chaining) |
Длина ключа | 128 бит — 16 символов | 64 бит — 8 символов |
Padding | нулевой | нулевой |
Шифрование / дешифрование происходит через кодировку Base64URL.
Ниже приведены примеры синтаксиса для изменения кодировки и шифрования:
{crypt(base58 lead._fname)}
{crypt(base64 lead._lname)}
{crypt(sha256 lead.custom_field "encrypt_key")}
{crypt(sha1 lead._city "encrypt_key")}
{crypt(aes lead._fname "key1234567891234")}
{crypt(blowfish lead._fname "key12345")}
Если необходимо зашифровать строку текста, её нужно заключить в кавычки. Если число — кавычки не нужны:
{crypt(base58 "value")}
{crypt(base64 42)}
Для хеширования доступны следующие алгоритмы. Для каждого можно использовать соль:
- md5 + соль
- xxh32 + соль
- xxh64 + соль
Синтаксис такой же, как для функций шифрования:
{crypt(md5 subscription.email "salt")}
{crypt(xxh32 loyalty.new2.promocode "salt")}
{crypt(xxh64 json.text "salt")}
Обратите внимание, что зашифрованные данные уже будут закодированы в base64.
Функции вывода
Описание | Переменная | Пример |
---|---|---|
Форматирование | format | {format 1000000000 ","} 1,000,000,000 |
Длина переменной | length | {length("abc")} 3 |
Массив значений | array | {array[1 "2" 3.3]} [1 2 3.3] |
Случайный элемент массива | `randomize | {randomize(array[1 2 3])} 1 |
Лимит массива | limit | {limit(array[1 2 3] 2)} [1 2] |
Чётность числа | iseven | {iseven(2)} => true{iseven(3)} => false |
Кодирование URL-адреса | urlencode | {urlencode(lead._regurl)} http:%2F%2Ftest.testdomain.com%2Fsomething Используется для кодирования недопустимых символов в URL параметрах. |
Декодирование URL-адреса | urldecode | {urldecode(lead._regurl)} http://test.testdomain.com/something |
Верхний регистр | uppercase | {uppercase("text")} TEXT |
Первый символ в верхнем регистре | uppercasefirst | {uppercasefirst("john")} John |
Логические выражения
Использование логических выражений описано в отдельной статье. Для составления простого условия используется:
{if lead.age gte 18}
Если 18 или старше.
{else}
Если младше 18.
{end}
Циклы
Использование циклов описаны в соответствующей статье.
Внешний JSON
Описано в статье "Использование JSON контента в сообщениях".
Переменные маркета
Описано в статье "Использование переменных маркета в сообщениях".
Фрагменты
Использование фрагментов описано в этой статье.
Для вызова фрагмента используйте {fragment.<короткое_имя_фрагмента>}
.
Для вызова случайного фрагмента из диапазона: {randomfragment[fragment.name1 fragment.name2 fragment.name3]}
.