式を使うと、コールやリードが流れる途中で 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) だけを残し、スペースをハイフンに置き換え、両端のスペースを取り除きます。スラッグや 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)
文字列NIST が FIPS PUB 180-1 で定義した、値の SHA-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 | 必須 | [value] 内の [search] の位置を整数で返します。[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)
文字列認証付き Webhook のために、OAuth 接続の 1 つからアクセストークンを取得します。
| 引数 | 必須 | 説明 |
|---|---|---|
| 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 が半角スペース 1 つの場合、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)
文字列パーセントエンコードされたシーケンス(% の後に 16 進数 2 桁)を、元の文字に戻します。
| 引数 | 必須 | 説明 |
|---|---|---|
| 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)
文字列最初の 5 桁だけを残し、ZIP+4 を標準的な米国の郵便番号にします。
| 引数 | 必須 | 説明 |
|---|---|---|
| value | 必須 |
USA_ZIP_CODE("USA 90210 OR")
=> "90210"