表达式让 Avortyx 在通话和线索流经时重塑和计算数据:在姓名到达买家前清洗它、计算支付金额、为回传格式化日期。函数可以相互嵌套,小部件组合起来就是真正的逻辑。
它们适用于 Avortyx 填充令牌的任何地方,包括:
- 联系人字段的默认值
- Webhook 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),把空格变为短横线并去除两端空格。适合生成 slug 和 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 | 必填 | 如果 [value] 包含此字符串,则输出 true。 |
| 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 哈希:按 512 位块计算的 256 位摘要。
| 参数 | 必填 | 说明 |
|---|---|---|
| value | 必填 |
DIGEST_SHA2('text')
=> ba7816bf8...
downcase(value)
字符串把所有字母变为小写。
| 参数 | 必填 | 说明 |
|---|---|---|
| value | 必填 |
DOWNCASE("HELLO World")
=> "hello world"
find(search, value)
字符串| 参数 | 必填 | 说明 |
|---|---|---|
| search | 必填 | 查找 [search] 在 [value] 中的整数索引。如果 [value] 中没有 [search],则不输出任何内容。 |
| 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 连接获取访问令牌,用于需认证的 Webhook。
| 参数 | 必填 | 说明 |
|---|---|---|
| oauth_connection_key | 必填 | 创建连接时所选的密钥。 |
OAUTH_ACCESS_TOKEN('marchex_v2')
=> "sdjf9032fj239fj90sjf90wjf390"
right(value, length)
字符串| 参数 | 必填 | 说明 |
|---|---|---|
| value | 必填 | 将被处理的字符串。 |
| length | 必填 | 从右边开始提取的字符数。 |
RIGHT('ABCD', 2)
=> "CD"
seconds_to_hms(seconds)
字符串把秒数显示为 HH:MM:SS,例如通话时长。
| 参数 | 必填 | 说明 |
|---|---|---|
| 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"