高度なアクションでは、MathJSに基づく関数に加えてカスタム関数を使うことができます。

文字列関数

indexOf(干し草の山、針)

もし、「針」の文字列が「干し草の山」の文字列またはリストの中に見つかれば、その(0基準の)位置を返し、そうでなければ、-1と評価されます。

例:
 indexOf("ABCD", "A") //returns 0
 indexOf("ABCD", "CD") //returns 2
 indexOf("ABCD", "E") //returns -1
 indexOf(["a","b","c"], "a") //returns 0
 indexOf(["a","b","c"], "bc") //returns -1

getIndexValue(干し草の山、インデックス)

index」の数値が「haystack」のリストより小さい場合は、「index」の位置にある値を返し、それ以外の場合はエラーとなります。

例:
 getIndexValue(["a","b","c"], 0) //returns a
 getIndexValue(["a","b","c"], 1) //returns b

substr(string、start [、length])

この関数は、ゼロから始まる開始位置から、元の文字列の部分文字列を返します。 長さが指定されている場合、多くの文字を返し、それ以外の場合、文字列の残りの部分を返します。

例:
 substr("ABCD", 1) //returns "BCD"
 substr("ABCD", 2, 1) //returns "C"
 substr("ABCD", 5) //returns ""

slice(string、start [、end])

この関数は、ゼロから始まる開始位置から、元の文字列の部分文字列を返します。 終了位置が指定されている場合は、までのすべての文字が、ないを含む、その位置にある文字を返します。 それ以外の場合、文字列の残りの部分を返します。

開始位置または終了位置の負の位置は、文字列の右側から数えられます。

例:
 slice("ABCD", 1) //returns "BCD"
 slice("ABCD", 0, 2) //returns "AB"
 slice("ABCD", 1, -1) //returns "BC"
 slice("ABCD", 2, 1) //returns ""

上(文字列)

この関数は、提供された文字列を大文字に変換して返します。

例: 
upper("aBcD") //returns "ABCD"

下(文字列)

この関数は提供された文字列を小文字に変換して返します。

例: 
lower("aBcD") //returns "abcd"

長さ(文字列)

この関数は文字列の長さを返します。

例:
 length("") //returns 0
 length("ABCD") //returns 4

論理関数

等しい(値1、値2)

この関数は、value1とvalue2が同じ値と型であればtrueを返し、そうでなければfalseを返します。 `value1 === value2`の代替構文( `value1 == value2`は弱い比較です)

例:
 equal(2, 1) //returns false
 equal(1, 1) //returns true
 equal(1, "1") //returns false (different types)

ifElse(condition、valueIfTrue、valueIfFalse)

この機能は提供された条件をチェックします。 条件が真(または 真実)、valueIfTrueを返します。それ以外の場合はvalueIfFalseを返します。

例:
 ifElse(equal(1, 5), "equal", "not equal") //returns "not equal"
 ifElse(equal(2, 2), "equal", "not equal") //returns "equal"

Regex関数

match(value, pattern[, flags, groupIndex])

matchAll(値, パターン, matchIndex[, flags])

これらの関数は、正規表現マッチングを行い、与えられた「値」が、与えられた正規表現「パターン」に一致するかどうかをテストするものである。 

オプションのflags引数は、高度な動作を可能にする一文字の正規表現フラグの文字列です(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#advanced_searching_with_flags)。 フラグ引数の最も一般的な使用法は、大文字小文字を区別せずにマッチさせるために "i" を渡すことである。

ここでは、関連する2つの機能を紹介します。

  • T match 関数は、単一のマッチを探し、最後の引数を使って希望のキャプチャ グループを選択する、数値キャプチャグループによる高度な使い方をサポートします (0 はマッチ全体、1 は最初のキャプチャグループ、といった具合です)。
  • matchAll 版は、matchIndex 引数を用いて希望するマッチを選択することで、複数のマッチに対応します。 (0が最初の一致、1が2番目の一致、以下同様)。

いずれの場合も、マッチした場合はその結果が文字列の内容となり、動的ブール変数の本体として使われた場合は、マッチした場合はtrue となり、マッチしなかった場合はfalse となる。

例:
// Basic usage
match("abc", "b.") // returns "bc" (or true as a Dynamic Boolean Variable)
match("abc", "c.") // returns no match (or false as a Dynamic Boolean Variable)

// Advanced usage

// Case-insensitive
match("aBc", "b.", "i") // returns "Bc", since casing was ignored with the "i" flag

// Capture Groups
match("acd bce", "b(c.)", "", 1); // returns "ce" - the whole match was "bce", but the first capture group is (c.)

// Multiple matches
matchAll("acd bce", "c.", 1); // returns "ce" - "c." matches both "cd" and "ce", the last argument (and usage of matchAll) selected the second one.

日付機能

formatDate(date[, formatString])

数値で日付を受け取り、人間が読みやすい形式に変換する。  これは、日付に何らかの数値操作を行った後に、エージェントに表示するのに便利です。

日付  値は、1970 年 1 月 1 日からのミリ秒である。

formatString  は Unicode 標準 の代入を受け付けます。

注意: 結果の文字列はエージェントのタイムゾーンになるので、フォーマット文字列にタイムゾーンを含めると便利かもしれません。
例:
// Default formatting
formatDate(946684800000)                                      // 01/01/2000 12:00:00 am (+00:00)
 
// Custom formatting
formatDate(946684800000, "eeee, MMMM do yyyy, h:mm:ss a (z)")     // Saturday, January 1st 2000, 12:00:00 am (GMT)
formatDate(946684800000, "eeee, MMMM do yyyy, h:mm:ss a (xxxxx)") // Saturday, January 1st 2000, 12:00:00 am (+00:00)

formatDateISO(日付)

数値の日付を受け取り、ISO 8601形式のフォーマットされた日付文字列に変換する。 これは、日付コンポーネントを扱うときや、APIコールで日付を送信するときに便利です。 

日付 値は、1970年1月1日からのミリ秒単位です。

注意: 結果の文字列は、エージェントのタイムゾーンになります。

例: 
formatDateISO(946684800000)                    // 1999-12-31T19:00:00-05:00

dateToMilliseconds(date)

文字列の日付を受け取り、数値操作のために、1970年1月1日からのミリ秒数 に変換します。

提供された日付は、スクリプト変数で使用されるデフォルトのフォーマットであることが期待されます。

例:
dateToMilliseconds("01/01/2000 12:00:00 am (+00:00)"); // 946684800000

formatDate(dateToMilliseconds({{Scripter.Customer Call Start Time}}) + 5 * 60 * 1000) // Five minutes (multiplied by 60 sec/minute and 1000 ms/sec to convert to ms) after the customer was connected

formatDuration(duration)

DELETE関数は、ミリ秒単位の継続時間を人間が読みやすい形式に変換します。  

例: 
formatDuration(5 * 1000 * 60 + 55); // "00:05:55"

durationToMilliseconds(durationString)

文字列の継続時間を数値に変換します。

例: 
durationToMilliseconds({{Scripter.Customer Call Duration}}) // How long has the customer been connected

formatDuration(5 * 1000 * 60 - durationToMilliseconds({{Scripter.Customer Call Duration}})) // Countdown until the customer has been on the line for five minutes