Переменные и функции 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 полей, которые вы указываете при создании канала.
UTM
Переменные UTM
Если у профиля в его карточке есть UTM, то их можно подставить в шаблон сообщения.
Описание | Переменная |
---|---|
UTM-метка о кампании | {lead._utm_campaign} |
UMT-метка об источнике трафика | {lead._utm_source} |
UMT-метка о типе контента | {lead._utm_medium} |
UMT-метка о содержании контента | {lead._utm_content} |
UMT-метка о ключевых словах | {lead._utm_term} |
Внешний JSON
Внешний JSON-контент
Внешний JSON-контент — это один из способов создавать динамические сообщения и автоматизировать работу. С его помощью в сообщение добавляется информация, генерируемая на вашем сервере точно в момент отправки каждого сообщения.
Подробнее о том, как работает внешний JSON можно прочесть в статье "Использование JSON-контента в сообщениях".
В тексте сообщения JSON-контент представлен переменными типа {json.variable}
. Типы данных list
и 'object' поддерживают циклы, для типа object
также доступно обращение к элементам по ключу {json.object.key_name}
.
Маркет
Использование переменных маркета
Чтобы использовать информацию о заказах и товарах в рассылках, вы можете добавить переменные маркета в шаблон сообщения. Более подробно использование таких переменных описано в статье "Использование переменных маркета в сообщениях".
Дата и время
Переменные даты и времени
Описание | Переменная | Пример |
---|---|---|
Форматированная дата | {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 |
Функции вывода
Функции вывода
Описание | Переменная | Пример |
---|---|---|
Форматирование | 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 Пример: в дополнительном поле профиля Favourite_genres хранится массив ["Детектив", "Юмор", "Фантастика"] , выражение {randomize(lead.Favourite_genres)} выведет один случайный элемент, например "Детектив" .Работает с полями Телефоны, Теги и Массив объектов, а также с массивами API-контента и внешнего JSON-контента. |
Лимит массива | 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 |
Шифрование
Шифрование и хэширование
Шифрование переменных шаблона применяется когда необходимо передать данные вместе с кликом по 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.
Логические выражения
Логические выражения
Использование логических выражений описано в отдельной статье. Для составления простого условия используется:
{if lead.age gte 18}
Если 18 или старше.
{else}
Если младше 18.
{end}
Части
Части (фрагменты) сообщения
Фрагменты — это блоки сообщений, которые используются в нескольких сообщениях. Например, это может быть хедер или футер сообщения, блок со ссылками на социальные сети — любой контент, который вы будете отправлять в рамках нескольких рассылок.
Для вызова фрагмента используйте {fragment.<короткое_имя_фрагмента>}
.
Для вызова случайного фрагмента из диапазона: {randomfragment[fragment.name1 fragment.name2 fragment.name3]}
.
Использование частей (фрагментов) более подробно описано в этой статье.
Параметры
Параметры
Описание | Переменная |
---|---|
ID отправленного сообщения (SMID) | {send_message_id} |
Токен ресурса | {resource_token} |
ID шаблона | {msgid} |
ID кампании | {campid} |
ID ресурса | {resid} |
ID Базы д анных (базы профилей) | {listid} |
SUBID кампании | {subid} |
Имя ресурса | {resname} |
Имя БД | {listname} |
Тип сообщения | {msg_type} |
URL ресурса | {resurl} |
Домен URL ресурса | {resdomain} |
Имя сообщения | {msgname} |
Имя кампании | {campname} |
Имя отправителя SMS (SMS from name) | {from_name_sms} |
ID сегмента | {segid} |
Название сегмента | {segname} |
Значение атрибута | {attribute_value("attribute")} , где вместо "attribute" — API-название атрибута |
Служебные
Служебные параметры
Описание | Переменная |
---|---|
API-контент | {apicontent.field_name} |
Отмена отправки сообщения | {cancel} |
Трекинг
Переменные трекинга
Описание | Переменная |
---|---|
Трекинг домен | {trkdomain} |
Пиксель, фиксирующий открытие письма | {pixel} |
Пиксель, фиксирующий чтение письма | {read} |
Ссылка менеджера подписок | {preferences} |
Ссылка отписки | {unsubscribe} |
Ссылка глобальной отписки | {globalunsubscribe} |
Добавление в стоп-список | {suppress} |
Ссылка на веб-версию | {webversion} |
Сценарий
Переменные сценариев
Описание | Переменная |
---|---|
Название сценария | {workflow_name} |
ID сценария | {workflow_id} |
ID ноды (элемента) сценария | {node_id} |
Тип ноды (элемента) сценария | {node_type} |
События
Переменные событий
Описание | Переменная |
---|---|
Первое событие | {event.first} |
Последнее событие | {event.last} |
Все события | Итератор по списку событий:{for event.all} {.} else - {cancel} if empty array {end} |
Кол-во событий | {event.count} |
При помощи этих переменных можно передать информацию о событии срабатывания пикселя в триггерных кампаниях и сценариях. Для вызова необходимо указать переменную типа {event.first.<параметр>}
. Возможные параметры:
- id
- type
- date
- test
- pixel_id
- goal
- value
- data
- geo_address
- geo_city
- geo_country
- geo_lat
- geo_long
- geo_region
- geo_tld
- geo_time_zone
- geo_zip
- utm_campaign
- utm_content
- utm_keyword
- utm_medium
- utm_source
- utm_term
- user_agent
- accept_language
- vendor
- browser
- os
- origin
- referer
- device
- count_items
- categories
- send_message_id
- channel
- resource_id
- template_id
- campaign_id
- subid
- loyalty_id
- promocode
- content
- custom_data
Подробнее об этих параметрах можно прочесть здесь.
emoji
Вы также можете вставить в ваши шаблоны сообщений emoji. Для этого выберите соответствующий пункт в меню переменных и нажмите на нужный emoji.
Связи профилей
Связи профилей
Общая формула переменной:
{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}
Дополнительные функции редактора
Форматирование цен
Также предусмотрена фунция форматирования числовых данных, которая делит число на блоки по три цифры заданным разделителем.
Price 8.000 RUR
<p>Price {format json.price "."} RUR</p>
Чтобы вставить функцию, нажмите на кнопку </>
в редакторе шаблонов и выберите Функции вывода → Форматирование.
Смещение даты
Функция 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>
Чтобы вставить функцию, нажмите на кнопку </>
в редакторе шаблонов и выберите Дата и время → Смещение дат.
Форматирование даты
Данные типа "дата" имеют разное представление в разных странах. Для удобства подписчиков предусмотрена функция форматирования дат.
Например, для того, чтобы представить дату рождения подписчика в виде:
Дата рождения 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"
"%ru_month": "январь"
# 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 |