Avortyx Открыть страницу целиком

Отслеживание и атрибуция

Выражения и функции

Очищайте, форматируйте и вычисляйте данные звонков и лидов на лету — в фильтрах маршрутизации, вебхуках и постбэках.

Выражения позволяют Avortyx преобразовывать и вычислять данные по мере прохождения звонков и лидов: очистить имя, прежде чем оно дойдёт до покупателя, рассчитать выплату, отформатировать дату для постбэка. Функции можно вкладывать друг в друга, поэтому из маленьких частей складывается настоящая логика.

Они работают везде, где Avortyx подставляет токены, в том числе:

  • Значения по умолчанию для полей контакта
  • URL вебхуков и тела постбэков
  • Фильтры в правилах маршрутизации

У каждого выражения есть тип (String, Integer, Float или Time), и его аргументы приводятся к этому типу перед вычислением.

Примерные данные

Примеры на этой странице используют данные ниже; результат каждого выражения указан после =>

{
  "first_name": "John",
  "last_name": "Smith",
  "birth_year": "1977",
  "yob": 2012,
  "mortgage_amount": 65000,
  "debt_amount": 8283.25,
  "started_at_utc": "2020-06-21 22:35:12 UTC"
}

Выражение String

Аргументы обрабатываются как текст перед выполнением выражения.

[!String! ALPHANUMERIC_DASH(CONCAT([first_name], " ", [last_name])) !!]
=> john-smith

Выражение Time

Аргументы обрабатываются как время перед выполнением выражения.

[!Time! DATE_FORMAT(DATE_ADD([started_at_utc], 86400), "%Y-%m-%d %M-%S") !!]
=> "2020-06-22T18:35:12"

Функции

case(statement)

логика

Проверяет несколько условий по порядку и возвращает результат первого истинного.

АргументОбязательныйОписание
statementОбязательныйВыражение, которое будет вычислено.
CASE('apple' WHEN 'apple' THEN 1 WHEN 'banana' THEN 2 ELSE 3 END)
=> 1

if(statement, output_when_true, output_when_false)

логика

Проверяет условие и возвращает одно значение, если оно выполняется, и другое — если нет.

АргументОбязательныйОписание
statementОбязательныйВыражение, которое будет вычислено.
output_when_trueОбязательныйЗначение, которое будет выведено, если выражение истинно.
output_when_falseОбязательныйЗначение, которое будет выведено, если выражение ложно.
IF(15 < 10, 10, 20)
=> 20

avg(*values)

числовые

Среднее переданных чисел.

АргументОбязательныйОписание
*valuesОбязательныйЭта функция принимает неограниченное число числовых значений.
AVG(1,2,3,4)
=> 2.5

count(*values)

числовые

Сколько значений передано.

АргументОбязательныйОписание
*valuesОбязательныйЭта функция принимает неограниченное число числовых значений.
COUNT(1,2,3,4)
=> 4

max(*values)

числовые

Наибольшее из переданных чисел.

АргументОбязательныйОписание
*valuesОбязательныйЭта функция принимает неограниченное число числовых значений.
MAX(1,2,3,4)
=> 4

min(*values)

числовые

Наименьшее из переданных чисел.

АргументОбязательныйОписание
*valuesОбязательныйЭта функция принимает неограниченное число числовых значений.
MIN(1,2,3,4)
=> 1

round(value, precision)

числовые

Округляет число до ближайшего значения с заданной точностью.

АргументОбязательныйОписание
valueОбязательныйЗначение для округления. Например:
ROUND(8.8) => 9
ROUND(8.2) => 8
precisionНеобязательныйИспользуемая точность. Например:
ROUND(8.75, 1) => 8.8
ROUND(8.2)
=> 8

rounddown(value, precision)

числовые

Округляет число вниз, к меньшему значению, с заданной точностью.

АргументОбязательныйОписание
valueОбязательныйЗначение для округления. Например:
ROUND(8.8) => 8
precisionНеобязательныйИспользуемая точность. Например:
ROUND(1.234, 2) => 1.23
ROUNDDOWN(1.234)
=> 1

roundup(value, precision)

числовые

Округляет число вверх, к большему значению, с заданной точностью.

АргументОбязательныйОписание
valueОбязательныйЗначение для округления. Например:
ROUND(8.8) => 9
precisionНеобязательныйИспользуемая точность. Например:
ROUND(1.234, 2) => 1.24
ROUNDUP(1.234)
=> 2

sum(*values)

числовые

Складывает переданные числа.

АргументОбязательныйОписание
*valuesОбязательныйЭта функция принимает неограниченное число числовых значений.
SUM(1,2,3,4)
=> 10

alphanumeric_dash(value)

строки

Оставляет только буквы (a-z, A-Z) и цифры (0-9), заменяет пробелы дефисами и обрезает пробелы с обоих концов. Удобно для слагов и ID.

АргументОбязательныйОписание
valueОбязательный
ALPHANUMERIC_DASH(" ./;!!!]  hello waffle world!@#$%^&*($)  ")
=> "hello-waffle-world"

alphanumeric_underscore(value)

строки

Оставляет только буквы (a-z, A-Z) и цифры (0-9), заменяет пробелы подчёркиваниями и обрезает пробелы с обоих концов.

АргументОбязательныйОписание
valueОбязательный
ALPHANUMERIC_UNDERSCORE(" ./;!!!]  hello waffle world!@#$%^&*($)  ")
=> "hello_waffle_world"

base64_decode(value)

строки

Декодирует строку Base64 (RFC 2045), пропуская символы вне алфавита Base64.

АргументОбязательныйОписание
valueОбязательный
BASE64_DECODE('dGVzdA==')
=> 'text'

base64_encode(value)

строки

Кодирует значение в Base64 (RFC 2045) с переводом строки после каждых 60 закодированных символов.

АргументОбязательныйОписание
valueОбязательный
BASE64_ENCODE('text')
=> 'dGVzdA=='

concat(*values)

строки
АргументОбязательныйОписание
*valuesОбязательныйЭта функция принимает неограниченное число строковых значений.
CONCAT('AB', 'CD', 'EF')
=> "ABCDEF"

contains(search, value)

строки
АргументОбязательныйОписание
searchОбязательныйВозвращает true, если [value] содержит эту строку.
valueОбязательныйСтрока, которая будет проверена.
CONTAINS('ABCD', 'A')
=> true

date_add(value, seconds)

строки

Сдвигает дату вперёд на заданное число секунд.

АргументОбязательныйОписание
valueОбязательныйДата, которая будет изменена.
secondsОбязательныйСекунды, которые будут добавлены.
DATE_ADD([started_at_utc], 86400)
=> "2020-06-29 11:34:25 -0400"

date_format(value, format)

строки

Записывает дату в выбранном формате.

АргументОбязательныйОписание
valueОбязательныйДата, которая будет изменена. Например, '2020-06-29 11:22:57 -0400'
formatОбязательныйЗадаёт формат даты. Можно использовать следующие символы.

Дата (год, месяц, день):
%Y - Год с веком
%y - год % 100 (00..99)
%m - Месяц года, с ведущим нулём (01..12)
%B - Полное название месяца (``January'')
%b - Сокращённое название месяца (``Jan'')
%d - День месяца, с ведущим нулём (01..31)
%j - День года (001..366)

Время
%H - Час суток, 24-часовой формат, с ведущим нулём (00..23)
%I - Час суток, 12-часовой формат, с ведущим нулём (01..12)
%P - Индикатор меридиана, строчными (``am'' или ``pm'')
%p - Индикатор меридиана, прописными (``AM'' или ``PM'')
%M - Минута часа (00..59)
%S - Секунда минуты (00..59)
%L - Миллисекунда секунды (000..999)
%N - Цифры долей секунды, по умолчанию 9 цифр (наносекунды)
%z - Часовой пояс как смещение от UTC в часах и минутах (например, +0900)

День недели
%A - Полное название дня недели (``Sunday'')
%a - Сокращённое название (``Sun'')
%u - День недели (понедельник — 1, 1..7)
%w - День недели (воскресенье — 0, 0..6)

Секунды с начала эпохи Unix
%s - Число секунд с 1970-01-01 00:00:00 UTC.
%Q - Число миллисекунд с 1970-01-01 00:00:00 UTC.
DATE_FORMAT([started_at_utc], "%Y-%m-%d %M-%S")
=> "2020-06-22T18:35:12"

date_parse(value, format)

строки

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

АргументОбязательныйОписание
valueОбязательныйДата или выражение на естественном языке (на английском).

Простые примеры
thursday
november
summer
friday 13:00
mon 2:35
4pm
yesterday
today
tomorrow
last week
next week

Сложные примеры
3 years ago
a year ago
5 months from now
7 hours ago
7 days from now
in 3 hours

Конкретные даты и время
22nd of june at 8am
1979-05-27 05:00:00
03/01/2012 07:25:09.234567
2013-08-01T19:30:00.345-07:00
2013-08-01T19:30:00.34-07:00
formatНеобязательный
DATE_PARSE("30 days from now")
=> "2020-07-29 15:42:57 UTC"

date_subtract(time, time_or_decimal)

строки

Вычитает из даты метку времени или число секунд.

АргументОбязательныйОписание
timeОбязательныйМетка времени, которая будет изменена.
time_or_decimalОбязательныйМетка времени или число, которое будет вычтено из первого аргумента time.
DATE_SUBTRACT([current_time_utc], [started_at_utc])
=> "2020-06-29 11:34:25 -0400"

date_to_time_zone(value, time_zone)

строки

Переводит дату в другой часовой пояс.

АргументОбязательныйОписание
valueОбязательный[lead_created_at]
time_zoneОбязательный
Примеры часовых поясов:
DATE_TO_TIME_ZONE([lead_created_at], "Eastern Time (US & Canada)")
=> "2020-07-29 15:42:57"

digest_md5(value)

строки

Возвращает MD5-хеш значения (RFC 1321): 128-битный (16-байтный) дайджест.

АргументОбязательныйОписание
valueОбязательный
DIGEST_MD5('text')
=> 90015098...

digest_sha1(value)

строки

Возвращает SHA-1-хеш значения, как определено NIST в FIPS PUB 180-1.

АргументОбязательныйОписание
valueОбязательный
DIGEST_SHA1('text')
=> a9993e36...

digest_sha2(value)

строки

Возвращает SHA-256-хеш значения: 256-битный дайджест, вычисленный по 512-битным блокам.

АргументОбязательныйОписание
valueОбязательный
DIGEST_SHA2('text')
=> ba7816bf8...

downcase(value)

строки

Делает все буквы строчными.

АргументОбязательныйОписание
valueОбязательный
DOWNCASE("HELLO World")
=> "hello world"

find(search, value)

строки
АргументОбязательныйОписание
searchОбязательныйНаходит целочисленный индекс [search] в [value]. Если [search] нет в [value], ничего не выводит.
valueОбязательныйСтрока, которая будет обработана.
FIND('BC', 'ABCD')
=> 2

generate_uuid()

строки

Создаёт новый универсальный уникальный идентификатор (UUID).

GENERATE_UUID()
=> "518e8221-a29e-72c1-a716-486156481234"

left(value, length)

строки
АргументОбязательныйОписание
valueОбязательныйСтрока, которая будет обработана.
lengthОбязательныйЧисло символов, извлекаемых слева.
LEFT('ABCD', 2)
=> "AB"

len(value, length)

строки
АргументОбязательныйОписание
valueОбязательныйСтрока, которая будет обработана.
lengthОбязательныйВыводит длину строки как целое число.
LEN('ABCD')
=> 4

oauth_access_token(oauth_connection_key)

строки

Получает токен доступа из одного из ваших OAuth-подключений для аутентифицированных вебхуков.

АргументОбязательныйОписание
oauth_connection_keyОбязательныйКлюч, выбранный при создании подключения.
OAUTH_ACCESS_TOKEN('marchex_v2')
=> "sdjf9032fj239fj90sjf90wjf390"

right(value, length)

строки
АргументОбязательныйОписание
valueОбязательныйСтрока, которая будет обработана.
lengthОбязательныйЧисло символов, извлекаемых справа.
RIGHT('ABCD', 2)
=> "CD"

seconds_to_hms(seconds)

строки

Показывает число секунд как ЧЧ:ММ:СС, например длительность звонка.

АргументОбязательныйОписание
secondsОбязательный
SECONDS_TO_HMS(3672)
=> "01:01:12"

split(value, pattern, index)

строки

Разбивает значение по разделителю и возвращает часть с указанным индексом.

АргументОбязательныйОписание
valueОбязательныйТекст, который будет изменён.
patternОбязательныйPattern — строка. Её содержимое используется как разделитель при разбиении str. Если pattern — один пробел, str разбивается по пробельным символам, при этом начальные и конечные пробелы и последовательности пробелов игнорируются.
indexОбязательныйIndex — индекс возвращаемой подстроки после разбиения. Примеры:

SPLIT([full_name], ' ', 2) вернёт "Smith"
SPLIT("John Andrew Smith", ' ', 0) вернёт "John"
SPLIT("John Andrew Smith", ' ', 1) вернёт "Andrew"
SPLIT("2019-01-12", '-', 1) вернёт "01"
SPLIT("John Smith", " ", 1)
=> "Smith"

strip(value)

строки

Обрезает пробельные символы в начале и конце значения.

Пробельными здесь считаются null, горизонтальная табуляция, перевод строки, вертикальная табуляция, перевод страницы, возврат каретки и пробел.

АргументОбязательныйОписание
valueОбязательный
STRIP("    hello world   ")
=> "hello world"

substitute(value, search, replacement)

строки
АргументОбязательныйОписание
valueОбязательныйСтрока, которая будет обработана.
searchОбязательныйТекст, который будет заменён.
replacementОбязательныйТекст для замены.
SUBSTITUTE('green cat, blue cat, yellow cat', 'cat', 'dog')
=> "green dog, blue cat, yellow cat"

substitute_all(value, search, replacement)

строки

Заменяет все вхождения одного фрагмента текста другим.

АргументОбязательныйОписание
valueОбязательныйСтрока, которая будет обработана.
searchОбязательныйТекст, который будет заменён.
replacementОбязательныйТекст для замены.
SUBSTITUTE_ALL("green cat, blue cat, yellow cat", "cat", "dog")
=> "green dog, blue dog, yellow dog"

substring(value, start, length)

строки

Возвращает часть строки: символы в указанном диапазоне.

АргументОбязательныйОписание
valueОбязательныйТекст, который будет изменён
startОбязательныйПозиция начала извлечения. Первый символ имеет индекс 0.
lengthОбязательныйЧисло извлекаемых символов. Передайте -1, чтобы извлечь остаток строки.
SUBSTRING([started_at_offer_time_zone], 0, 9)
=> "2020-09-20"

titleize(value)

строки

Делает первую букву каждого слова заглавной.

АргументОбязательныйОписание
valueОбязательный
TITLEIZE("  hello world  ")
=> "  Hello World  "

to_currency(value, symbol)

строки

Форматирует число как денежную сумму с символом валюты и разделителями тысяч.

АргументОбязательныйОписание
valueОбязательныйЧисловая сумма, форматируемая как валюта.
symbolНеобязательныйНеобязательный символ валюты (например, $, €, £). По умолчанию $.
TO_CURRENCY("1234567.89")
=> "$1,234,567.89"
TO_CURRENCY("1234567.89", "€")
=> "€1,234,567.89"

to_formatted_number(args, **, block)

строки

Форматирует номер телефона так, как он записывается в стране.

АргументОбязательныйОписание
argsНеобязательный
**Необязательный
blockНеобязательный
TO_FORMATTED_NUMBER(" + 1 719-852-2985 ")
=> "(719) 522-0377"

to_integer(value)

строки

Превращает значение в целое число.

АргументОбязательныйОписание
valueОбязательный
TO_INTEGER(' 15.15 ')
=> 15

to_json(value)

строки

Превращает значение в строку JSON.

АргументОбязательныйОписание
valueОбязательный
TO_JSON({example: "value"})
=> {"example": "value"}

to_phone_number(value)

строки

Нормализует номер телефона в международный формат.

АргументОбязательныйОписание
valueОбязательный
TO_PHONE_NUMBER(" 1 (719) 852 2985 ")
=> "+17198522985"

upcase(value)

строки

Делает все буквы заглавными.

АргументОбязательныйОписание
valueОбязательный
UPCASE("Hello World")
=> "HELLO WORLD"

url_decode(value)

строки

Превращает последовательности процентного кодирования (% и две шестнадцатеричные цифры) обратно в символы, которые они обозначают.

АргументОбязательныйОписание
valueОбязательный
URL_DECODE("hello%20world%2C%20how%20are%20you%3F")
=> "hello world, how are you?"

url_encode(value)

строки

Кодирует процентами все символы, кроме букв и цифр, чтобы значение было безопасно в URL.

АргументОбязательныйОписание
valueОбязательный
URL_ENCODE("hello world, how are you?")
=> "hello%20world%2C%20how%20are%20you%3F"

usa_zip_code(value)

строки

Оставляет только первые пять цифр, превращая ZIP+4 в стандартный почтовый индекс США.

АргументОбязательныйОписание
valueОбязательный
USA_ZIP_CODE("USA 90210 OR")
=> "90210"

Готовы направить свой первый звонок?

Направьте номер на Avortyx — и звонки начнут оцениваться, маршрутизироваться и рассчитываться с первого гудка. Запросите доступ или разберите свой трафик вместе с нашей командой.