Выражения позволяют 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 |
| 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 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"