変数

変数は変更可能な値を保存するプレースホルダーです。スクリプトを実行するたびに値が異なる場合に使用します。たとえば、ANIは、発信者のANI閉じた 発信者IDとも呼ばれます。着信音声通話のリストされた電話番号。や電話番号を保持する変数です。ANIがスクリプトで使用される場合、コンタクトのコーラーIDを保持します。スクリプトが実行されるたびに、スクリプトは異なるコンタクトを処理するため、ANIの値が変化します。

必要なときにいつでも独自の変数を作成できます。変数は1つの値を保持できます。また、ダイナミックデータオブジェクト配列を保持することもできます。

Studioスクリプトで使用される一部の変数はシステムで定義されています。つまり、Studioアクション閉じた 顧客データの収集、メッセージや音楽の再生、エージェントへの連絡先のルーティングなど、Studioスクリプト内のプロセスを実行します。内のコードの一部であるため、作成する必要はありません。システム定義変数には以下の2種類があります。

  • 予約変数:読み取り専用の変数で、スクリプトに特定の種類の情報を含める必要がある場合に使用できます。
  • 事前定義された変数:あらかじめ定義されている変数です。書き込み可能なので、値を割り当てることができます。

試してみる

変数の例スクリプトをダウンロードし、Studioインポートします。このヘルプページの例の多くは、サンプルスクリプトのSnippetアクションで利用可能です。Snippet Editor ウィンドウを開いてデバッガーを実行することで、各例の動作を確認できます。

変数の構文サマリー

以下のリストは変数の構文をまとめたものです。さらに詳しい情報は、このページの他のセクションで説明されています。

  • 変数を作成して値を代入するには、ASSIGNアクションまたはSnippetアクションを使用します。Snippetでは、変数を宣言する際にASSIGNキーワードを使用できます。これはオプションですが、強くお勧めしますSnippetでは次の構文を使用します:ASSIGN <var name> = <var value>または<var name> = <var value>

  • 変数に値を代入する場合:
    • 文字列と日付/時刻値は、一重引用符または二重引用符で囲む必要があります。例:ASSIGN life = "forty-two"
    • 日付/時刻関数で使用される日付/時刻値を割り当てるには、値の前、ただし二重引用符の外側にシャープ記号(#)を置きます。例:ASSIGN var = #"02/09/2023"日付/時刻値を日付/時刻関数で使用しない場合は、シャープ記号を使用する必要はありません。ただし、シャープ記号がない場合、値は日付/時刻型ではなく文字列型です。
    • 数値を二重引用符で囲む必要はありません。数値を引用符で囲むと、これが数式内で評価される場合を除き、文字列として処理されます。
    • 数式とブーリアン閉じた trueとfalseの2つの値を持つデータ型。式は引用符で囲むことができません。これらの式を引用符で囲むと、文字列として扱われます。例えば、ASSIGN myVar = var2 > 42は、var2の値によってtrueまたはfalseと評価されます。しかし、ASSIGN myVar = "var2 > 42"の結果は、myVarの値が文字通りvar2 > 42となります。
    • ブーリアン値を引用符で囲むことはできません。
    • 以下の文字を文字列値に含める必要がある場合は、エスケープシーケンスを使用します:二重引用符(")、一重引用符(' )、開中括弧({)、タブ(ASCII 9)、キャリッジリターン(ASCII 13)、ラインフィード(ASCII 10)、バックスペース(ASCII 8)、ヌル。
  • 文字列内の変数の値を置き換える場合:
    • 変数を中括弧で囲みます。例:ASSIGN myVar = "人生の意味は{life}だ"
    • 変数がダイナミックデータオブジェクトの場合、オブジェクト内のプロパティを参照する必要があります。例:ASSIGN myVar = "人生の意味は{anObj.thisProperty}だ"。オブジェクトだけを参照しようとすると、エラーが発生します。
    • 変数に配列が含まれている場合、代入したい値のインデックスを含める必要があります。例:ASSIGN myVar = myArray[4]
  • ある変数の値を別の変数に代入する場合:
    • 二重引用符や中括弧は必要ありません。例:ASSIGN myVar = var2。この結果、変数の値のコピーがmyVarに代入されます。
    • 変数に配列が含まれている場合、それを別の変数に代入することができます。
    • 変数がオブジェクトの場合、これは別のオブジェクトにしか代入できません。
  • Studioのアクションプロパティで変数を参照する場合、一般的に以下のガイドラインが適用されます。これらの記述には例外もあるため、使用するアクションのオンラインヘルプページを常に参照してください。

    • プロパティは変数かデータのどちらかの入力を期待します。データはリテラルまたは変数で構成することができます。プロパティがデータを期待する場合、一般的にはリテラルか変数のどちらかを受け入れることができる。ただし、例外も存在するので、プロパティが何を期待しているかわからない場合は、常にアクションのオンラインヘルプを参照してください。
    • プロパティが変数名を期待する場合、変数の名前を中括弧なしで入力します。

    • プロパティがデータを期待している状況で変数置換を使用するには、変数名を次のように中括弧で囲みます:{varName}

データ型と暗黙の型付け

データ型は、その変数がどのようなデータを保持し、プログラムの中でどのように使われるべきかを定義します。Studioでは、変数は以下のデータ型を持つことができます。

  • 文字列:変数の値には、英数字とピリオド、カンマ、アンダースコアなどの特殊文字が含まれます。文字列値は、二重引用符で囲む必要があります。
  • 数値:変数の値は数値です。数値には二重引用符は必要ありません。
  • 日付/時刻:変数の値は日付、時刻、またはその両方です。Studioで日付/時刻の値を日付/時刻関数で使用する場合、値を引用符で囲み、その外側にシャープ記号を付ける必要があります。例:var = #"11-23-2023"。
  • ブーリアン値:変数の値はtrue1false0のいずれかです。ブーリアン値は引用符で囲まないでください。

多くのプログラミング言語やスクリプト言語では、変数の作成時にデータ型を明示的に指定する必要があります。Studioでは、変数が暗黙的に型指定されます。Studioコンパイラは、スクリプトをコンパイルする際に各変数の型を決定します。つまり、使用する変数のデータ型を定義する必要はありません。唯一の例外は、変数が日付/時刻値を保持し、それを日付/時刻関数で使用したい場合です。

型推論

暗黙の型付けは、変数の評価方法に影響します。例えば、変数の比較は、Studioがその変数をどの型として認識するかによって結果が異なります。Studioのデフォルトの動作では、数学的な計算が必要になるまではすべてが文字列として扱われます。そして、数値として評価できるものであれば、それが引用符で囲まれていても、数値として評価されます。これは型推論として知られています。

Studioコンパイラは、値が引用符で囲まれていてもこれを数値として認識します。引用符は、値が文字列であることを示します。数値が引用符で囲まれている場合、Studioは、スクリプト内の数学的計算で使用されない限り、これを文字列として扱います。たとえば。


var1 = "42"
var2 = 42

var3 = var2 + var1	

例の結果var3 = 84Studioは、var1の値が数値であると推論し、var3の式を評価するときに、それが二重引用符で囲まれていても、数値として扱います。

変数を作成する

スクリプトで使用する変数は独自に作成できます。これは、スクリプト内でAssignアクションまたはSnippetアクションを使用して行うことができます。

ASSIGNアクション

Assignアクションを使用して、1つの変数を作成して、そこに値を代入できます。これにはアクションのVariableプロパティとValueプロパティを使用します。Assignのメリットは、使いやすい柔軟な方法で変数を作成できることです。

このアクションには、変数の使用方法を定義できる他のプロパティもあります。次が可能です:

また、スクリーンポップ値をReqagentアクションで設定することもできます(CXone Studioではアクション)。

スニペットアクション

Snippetアクションは変数を作成するためのコードベースの方法です。1つのアクションを使用して、1つまたは複数の変数と、その他の必要なカスタムコードを含めて作成することができます。Snippetを使用するメリットは、後でスクリプトに変数を追加したい場合、それらを同じアクションに追加できるという点です。もともとAssignアクションを使用していた場合と異なり、スクリプトでアクションをさらに追加したり、コネクタを設定し直したりする必要はありません。

次のいずれかの構文を使用します。

ASSIGN varName = valueまたは varName = value

Assignアクションのプロパティと一致するプロパティを変数に追加できます。

  • 変数の値をスクリーンポップに含めるには、変数名にsetscreenpop(1)を追加します。
  • 変数の値をデータベースに保存するには、変数名にsavetodb(1)を追加します。

たとえば。

ASSIGN epicPoem = "Beowulf"
epicPoem.setscreenpop(1)
epicPoem.savetodb(1)

どちらのプロパティでも、1はブーリアン閉じた trueとfalseの2つの値を持つデータ型。値で、プロパティをtrueに設定します。

Snippet アクションでの変数の作成に関する重要ポイント:

  • 変数の宣言時にデータ型を宣言する必要はありません。ただし、日付/時刻変数の場合は例外です。
  • ASSIGNキーワードを含めるかどうかは任意です。しかし、ベストプラクティスは、変数を作成するたびにこのキーワードを使用することです。高度な検索を使用すると、このキーワードを含む変数が作成された場所をすぐに特定できます。
  • サブスクリプトで変数を宣言し、それを元のスクリプトに戻す場合は、変数名の先頭にglobal:を追加します。これは、スコープがグローバルであることを示します。

一重引用符、二重引用符、引用符なし

変数の値を別の変数に代入する場合、一部の値は引用符で囲む必要があります。その他の値には引用符は必要ありません。以下のガイドラインに従ってください。

  • 文字列値は、一重引用符または二重引用符で囲む必要があります。これは、変数名がドル記号で終わる場合も同様です。文字列が引用符で囲まれていない場合、スクリプトはその値を変数と見なします。次の例では、a1a2a1$がすべてリテラル値Exampleに評価されます。a3a3$の値は、Exampleが変数として宣言されているかどうかに依存します。スクリプト内に変数Exampleが存在する場合、a3a3$Exampleの値に評価されます。Exampleが存在しない場合、a3a3$は空白の値になります。

    ASSIGN a1 = "Example"
    ASSIGN a2 = 'Example'
    ASSIGN a1$ = "Example"
    ASSIGN a3 = Example
    ASSIGN a3$ = Example
  • 数値に引用符は必要ありません。ただしオプションとして引用符を使うことはできます。次の例では、b1b2b3はすべて123に評価されます。

    ASSIGN b1 = "123" 
    ASSIGN b2 = '123' 
    ASSIGN b3 = 123
  • 数値式は引用符で囲むことができません。これには、数式やブーリアン閉じた trueとfalseの2つの値を持つデータ型。式も含まれます。数値式を引用符で囲むと、テキストとして扱われます。例えば、c1 = 123 + 456579と評価されますが、c2 = "123 + 456"の結果は123 + 456となります。
  • 変数を日付/時刻型として宣言する場合は、日付/時刻値を引用符で囲む必要があります。
  • ブーリアン値を引用符で囲むことはできません。
  • 配列やダイナミックオブジェクトのメンバーの値を変数に代入する場合、配列名やオブジェクトメンバー名に引用符や中括弧を使用することはできません。

日付/時間値を持つ変数の作成

Studioは、日付/時刻を型として暗黙的に識別しません。しかし、変数値の前に識別子を付けることで、この型として宣言することができます。これは、日付/時刻関数で値を使用する場合、または値を使って操作を実行する場合にのみ必要です。

変数の値を日付/時刻として宣言するには、ASSIGN <varName> = #"<datetime>"という構文を使います。ここで<datetime>は、変数に格納する日付/時刻の値です。例えば、 date1 = #"7/15/2050 5:00pm" 。変数が日付/時刻として宣言されていない場合、asdatetime()関数を使って変換することができます。

日付と時間を操作する関数の中には、変数を日付/時刻として宣言する必要があるものがあります。日付/時刻のフォーマットが正しい場合でも、変数が正しく宣言されていなければ、この関数は動作しません。この構文を使って、他の方法ではできないような日付/時刻の操作を行うことができます。たとえば、以下を比較することができます:

date1 = #"7/15/2050 5:00pm" 
date2 = #"7/15/2050 4pm"
x = date1 > date2 

date1 のリテラル値がdate2のリテラル値より大きいため、結果は1(true)になります。

変数の命名

以下のガイドラインに従って変数名を付けます:

  • 英数字(a-z, A-Z, 0-9)を使用できます。

  • 名前の最初の文字はアルファベットでなければなりません。
  • 名前の任意の場所に、アンダースコア文字(_)とドル記号($)を使用できます。
  • 変数名の最後の文字がドル記号の場合、その値はテキストとして扱われます
  • あらかじめ定義された変数名または予約語は使用しないでください。

変数置換

変数の値をスクリプトで使用する必要がある場合、スニペットコードまたはアクションのプロパティフィールドにその変数名を含めます。

変数の値を文字列に置換する場合は、変数の名前を中括弧で囲みます。文字列では、変数としてフォーマットされていない限り、すべてがプレーンテキストとして扱われます。たとえば。

ASSIGN foeName = "Grendel"
ASSIGN numberFoes = "3"
ASSIGN x = numberFoes
ASSIGN y = "One of Beowulf's foes is {foeName}. He faced {numberFoes} foes in all." 
ASSIGN z = "One of Beowulf's foes is foeName. He faced numberFoes in all." 

例の結果

  • x=3
  • y=One of Beowulf's foes is Grendel. He faced 3 foes in all.
  • z=One of Beowulf's foes is foeName. He faced numberFoes in all.

変数の値を別の変数にコピーする場合、中括弧を使う必要はありません。これはテキスト値と数値に適用されます。次の例では、結果がx=3およびz=Grendelになります。

ASSIGN numberFoes = "3"
ASSIGN name = "Grendel"
ASSIGN x = numberFoes 
ASSIGN y = name 

変数を使って数学的な演算を行う場合、中括弧で囲む必要はありません。次の例では、結果がy=200になります。

ASSIGN a1 = "100"
ASSIGN a2 = "100.00"
ASSIGN y = (a1 + a2) 

アクションプロパティでの変数置換

多くのアクションプロパティは、リテラル値の代わりに変数を受け入れることができます。これは、アクションのヘルプページで、プロパティの設定に変数を使用できることが指定されていない場合でも当てはまります。

アクションのプロパティで変数を使用すると、スクリプトを再利用できます。例えば、組織に3つの異なるビジネスラインがある場合、リテラル値を使用すると、各ラインのACDスキル閉じた エージェントのスキル、能力、知識に基づいてインタラクションの配信を自動化するために使用されます、優先順位管理、およびその他の設定を定義するために、3つのキューイングスクリプトが必要になります。そこで変数を使用して、ビジネスラインごとに値が異なるプロパティを設定すると、3つではなく1つのスクリプトを使用できます。

Studioのアクションプロパティで変数を参照する場合、一般的に以下のガイドラインが適用されます。

  • プロパティは変数かデータのどちらかの入力を期待します。データはリテラルまたは変数で構成することができます。プロパティがデータを期待する場合、一般的にはリテラルか変数のどちらかを受け入れることができる。ただし、例外も存在するので、プロパティが何を期待しているかわからない場合は、常にアクションのオンラインヘルプを参照してください。
  • プロパティが変数名を期待する場合、変数の名前を中括弧なしで入力します。

  • プロパティがデータを期待している状況で変数置換を使用するには、変数名を次のように中括弧で囲みます:{varName}

スクリプトからスクリプトへ変数値を渡す

変数値はスクリプトからスクリプトへ渡すことができます。次の場所から渡すことができます。

  • 元のスクリプトからサブスクリプトへ:元のスクリプトのすべての変数が存在しており、サブスクリプトで使用できます。しかし、それらはグローバルスコープを持ちます。サブスクリプトで使用するには、変数名の前にglobal:を付ける必要があります。例えば、 global:varName 。これには、事前定義されたシステム変数と、自分で作成した変数が含まれます。
  • サブスクリプトから元のスクリプトへ:スクリプトのサブスクリプトで宣言した変数は、自動的に元のスクリプトに戻されません。サブスクリプトから元のスクリプトに変数を戻すには、これをグローバルとして宣言する必要があります。同様に、サブスクリプトで変数を宣言する場合は、変数をグローバルとして宣言し、サブスクリプトとトップレベルにある元のスクリプトでグローバルとして参照する必要があります。

グローバル変数はスクリプトトレースで確認できます。トレースを表示する際、必要な場合はトレース出力ウィンドウでこのオプションを有効にしてください。

データによっては、CRM閉じた 連絡先、販売情報、サポートの詳細、ケース履歴などを管理するサードパーティのシステム。API閉じた APIを使用すると、組織が使用する他のソフトウェアとCXoneシステムを接続することにより、特定の機能を自動化できます。呼び出しなど、スクリプトの外部ソースから取得される場合があります。これらの値は、RunSubアクションまたはSpawnアクションParametersプロパティを使用して、サブスクリプトや生成されたスクリプトに渡すことができます。BeginアクションにもParametersプロパティがあります。サブスクリプトのBeginアクションは、RunSubまたはSpawnを経由して渡される値を受け取る変数の名前で設定します。

渡す必要があるデータがオブジェクトに含まれている場合、まずオブジェクトをJSONまたはXMLに変換する必要があります。JSONまたはXML文字列を含む変数を渡すことができます。2つ目のスクリプトでは、必要に応じてデータをリフォームしてオブジェクトにすることができます。

変数の比較と評価

Studioが暗黙的に変数の型付けを行うことにより、評価される式やブーリアン閉じた trueとfalseの2つの値を持つデータ型。比較における変数の処理に影響が出ます。

たとえば。

ASSIGN a1 = "100"
ASSIGN a2 = "100"
ASSIGN y = (a1 = a2)

この例では、y = (a1 = a2)という表現がy = 1(true)に評価されます。

テキストとして比較を強制

変数の値が数値であっても、これを強制的にテキストとして評価することができます。これは2つの方法で行うことができます。

  • 変数名の末尾にドル記号を追加します。例:varName$ = 42比較を行う場合、ドル記号の接尾辞が必要なのは2つの変数のうち片方だけです。
  • 変数の名前を中括弧と二重引用符で囲みます。例えば、 y = ("{a1}" = "{a2}")

変数名がドル記号で終わっている場合、その変数を使ったすべてのブーリアン閉じた 整数(操作可能な数値)、ブール値(真/偽)など、プログラムでの使用方法を定義する情報の属性。演算(=><>= <=)は、値をテキストとして扱います。たとえば。

ASSIGN a$ = 20
ASSIGN b = 100
ASSIGN x = a$ > b

この例では、変数x1 (true)です。変数a$はドル記号で終わるため、値(20)がテキストとして処理されます。これは、a$ > bが、20 100 を整数ではなくテキストの文字列として比較したものであることを意味します。テキストとして比較する場合、20は2で始まり、100は1で始まるため、20は100より大きくなります。変数名にドル記号がない場合、値は整数として比較されるため、x = a > b 0(false)です。整数20は整数100より大きくありません。

予約および定義済みの変数

Studioには既存の変数があります。これらは次のとおりです:

  • 予約変数:これらの変数は、現在の時刻やタイムゾーンのIDなど、特定の種類の情報を返します。予約変数は読み取り専用です。つまり、スクリプトは予約変数に値を保存することはできません。その機能は情報を返すことだけです。返される情報を入力したいときにスクリプトで使用できます。Studioには、10個の予約変数があります。
  • 定義済み変数:これらはシステム変数です。これらはStudioで事前に定義されているので、作成しなくてもスクリプトの中で使用することができます。システム変数が保持している情報が必要なときに、いつでもスクリプトでシステム変数を使用できます。定義済みのシステム変数を上書きするのは、オンラインヘルプやCXoneアカウント担当者で指示を受けた場合のみに限られます。定義済み変数の詳細については、定義済み変数のページを参照してください。

グローバル変数

グローバル変数を使用すると、サブスクリプトで変数を宣言し、Returnアクションの後で元のスクリプトに自動的に渡すことができます。サブスクリプトでグローバル変数を宣言した場合、Returnアクションで元のスクリプトに戻す必要はありません。

SnippetアクションまたはAssignアクションSnippetでグローバル変数を作成する場合は、以下の構文を使用します。

ASSIGN global:<variable name>

ASSIGN global:<variable name>="{firstname} {lastname}"

コロンと変数名の間にスペースがないことを確認してください。

Assignアクションを使用する場合、ASSIGNキーワードを含めないでください。

元のスクリプトの変数をグローバルに宣言する必要はありません。グローバル変数の宣言をサブスクリプトに限定することで、作業中のスクリプトについて視覚的な手がかりを得ることができます。global:varと表示されている場合、サブスクリプトで作業していることがわかります。

グローバル変数の例

次の例は、グローバル変数の使用方法を示しています。

スクリプト内のすべての変数を表示する

スクリプト内のすべての変数を確認するには、次の2つの方法があります。

  • Studioの変数タブには、スクリプトで使用されているすべての変数が表示されます。このタブが閉じている場合は、Validation >Windows >Variablesをクリックして開きます。
  • トレースを実行して、スクリプトで使用されている変数を確認することもできます。トレース出力の各行を選択すると、その時点におけるスクリプトの変数が変数ペインに表示されます。トレースの各行をクリックすると、スクリプトの進行に伴って変数の内容がどのように変化するかを確認できます。

可変編集

変数編集は、スクリプトによって生成されたトレースおよびログから変数値を削除します。変数やオブジェクトを編集できます。

編集は、スクリプトのプロパティVariableRedactionフィールドにあるスクリプトレベルで構成されます。編集された値は、X文字の文字列で置き換えられます。変数値の長さによって、Xの数が決まります。編集された5文字の単語の場合、Xは5つです。クレジットカード番号の一部など、部分的な変数の編集はサポートされていません。

変数の編集はスクリプトレベルで行われます。それは継承可能なプロパティではありません。RunScriptRunSubアクションなどで、編集された変数が他のスクリプトに渡された場合、その変数は後続のスクリプトで自動的に編集されません。変数を常に編集したい場合は、その変数が渡される可能性のあるすべてのスクリプトで変数の編集を構成する必要があります。

他のスクリプトに渡される変数にはグローバルのスコープがあります。編集するには、VariableRedactionフィールドの変数名の前にglobal:を含めて、確実に編集されるようにする必要があります。

ベストプラクティスは、スクリプトに機密データを必要以上に長く保存しないことです。変数値の編集に加えて、変数からデータを削除することもできます。データの削除は以下のタスクの手順に含まれています。

  1. Studioで、スクリプトキャンバスをクリックし、何も選択されていないことを確認します。
  2. Propertiesタブをクリックします。
  3. VariableRedactionフィールドの横にあるEllipsisボタンをクリックして、String Collection Editorを開きます。
  4. 編集したい変数の名前を入力します。1行に1つの変数を記述します。
  5. OKをクリックします。
  6. 変数からデータを削除したい場合は、機密データを使用して不要になった後、スクリプトにSnippetアクションを配置します。
  7. Snippetアクションをダブルクリックして、スニペットエディターウィンドウのテキストビュータブに次を追加します。
    • ダイナミックデータオブジェクトの場合:DYNAMIC <object name>
    • 通常の変数の場合: ASSIGN <var name> = ""
  8. OKをクリックして変更を保存します。