Перейти к основному содержимому

Использование логических выражений в сообщениях

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

{if lead.field in json.promo_actions1}

Они расширяют возможности персонификации сообщений, существенно сокращают объём работы.

Например, в сообщении используется подпись, которая меняется от подписчика к подписчику.

Нашим лучшим клиентам скидка 42% или Спецпредложение! Скидка 20% со второй покупки!

Вместо того, чтобы делать разные сообщения, можно использовать два условия:

  1. Сначала проверяется, есть ли у подписчика поле "best_buy_type" и является ли он клиентом нужного магазина. Если нет, то он получает обычное предложение.

  2. Затем проверяется значение в этом поле — совершал ли он хоть раз дорогую покупку.

<!-- Если в профиле подписчика есть поля "shop_name" и "best_buy_type" -->
{if lead.shop_name and lead.best_buy_type}

{if lead.shop_name equal "my_shop"}

<!-- Если подписчик покупал "premium" товары -->
{if lead.best_buy_type contains "premium"}
<p>Нашим лучшим клиентам скидка 42%.</p>

<!-- Если он покупал что-то другое -->
{else}
<p>Спецпредложение! Скидка 20% со второй покупки!</p>
{end}

<!-- Если подписчик является клиентом другого магазина-->
{else}
<p>Спецпредложение! Скидка 20% со второй покупки!</p>
{end}

<!-- На случай, когда поля в профиле не оказывется -->
{else}
<p>Спецпредложение! Скидка 20% со второй покупки!</p>
{end}

Примеры использования

Условия

Простое условие
{if "par1"}
if true
{else}
if false
{end}
Комплексное условие

Пример 1:

{if "par1" in array["par1" "par2"] and ( 5 equal length("par 3") or false )}
if true
{else}
if false
{end}

Пример 2 с apicontent:

{if apicontent.field_1 not_equal apicontent.field_2 and ( apicontent.field_1 or apicontent.field_2 )}
if true
{else}
if false
{end}

Пример 3:

{if crypt("md5" lead._fname "salt") like "123b003aa39d110d1333b37af9889e10" and crypt("base58" lead.lottery_id) like json.crypted_winner}
if true
{else}
if false
{end}

Пример 4:

{if iseven(lead.count) and iseven(lead.count2) equal false}
if true
{else}
if false
{end}

Циклы

Простой цикл
{for array[1 "2" 3.3]}
{.}
{else}
if empty array
{end}

Соответствие значения

Равно
{if "par1" equal "par2"}
if true
{else}
if false
{end}
Не равно
{if "par1" not_equal "par2"}
if true
{else}
if false
{end}
Строка равна (не учитывается регистр)
{if "par1" like "par2"}
if true
{else}
if false
{end}
Строка не равна (не учитывается регистр)
{if "par1" not_like "par2"}
if true
{else}
if false
{end}
Строка содержит (не учитывается регистр)
{if "par1" contains "par2"}
if true
{else}
if false
{end}
Строка не содержит (не учитывается регистр)
{if "par1" not_contains "par2"}
if true
{else}
if false
{end}

Сравнение чисел и дат

Больше числа/даты
{if 0 gt 1}
if true
{else}
if false
{end}
Больше или равно числа/даты
{if 0 gte 1}
if true
{else}
if false
{end}
Меньше числа/даты
{if 0 lt 1}
if true
{else}
if false
{end}
Меньше или равно числа/даты
{if 0 lte 1}
if true
{else}
if false
{end}

Массивы и поля с тегами

Элемент в массиве
{if "par1" in array["par1" "par2"]}
if true
{else}
if false
{end}
Элемент в поле тэгов
{if "tag1" in lead.TagsField}
if true
{else}
if false
{end}
Элемент не в массиве
{if "par1" not_in array["par1" "par2"]}
if true
{else}
if false
{end}
Элемент не в поле тэгов
{if "tag1" not_in lead.TagsField}
if true
{else}
if false
{end}
Все элементы первого массива
{if array["par1" "par2"] all_in array["par1" "par2"]}
if true
{else}
if false
{end}
Не все элементы первого массива
{if array["par1" "par2"] not_all_in array["par1" "par2"]}
if true
{else}
if false
{end}
Хотя бы одно совпадение в массивах
{if array["par1" "par2"] any_of array["par1" "par2"]}
if true
{else}
if false
{end}
Нет совпадений в массивах
{if array["par1" "par2"] not_any_of array["par1" "par2"]}
if true
{else}
if false
{end}

Даты

Равен дню
{if "2006-01-01" day_equal "1"}
if true
{else}
if false
{end}
Равен месяцу
{if "2006-01-01" month_equal "1"}
if true
{else}
if false
{end}
Равен году
{if "2006-01-01" year_equal "2006"}
if true
{else}
if false
{end}
Равен месяцу и году
{if "2006-01-01" yearmonth_equal "2006-01"}
if true
{else}
if false
{end}