文字列値を型付き値に変換する


コールフロー内で、フロー作成者が文字列値を型付き値に変換することは珍しくありません。Architect では、多くの基本的なデータ タイプの場合、文字列値を別のタイプに変換することをサポートしています。

次のシナリオは、実行時に整数値の5を返す文字列値「5」を変換しようとしたときにフロー作成者が遭遇する可能性がある問題を示しています。

ToInt("5")
注意:このプロセスは、ブール型、整数、小数点、日付/時間、接続時間など、多くのデータ タイプに対応してますが、ネットワークベースのデータ タイプは、コール フロー内で文字列がそのデータ タイプに変換されることをサポートしていません。ネットワークベースのデータ タイプには、現在ユーザー、キュー、スキル、グループ、ラップアップ コードが含まれます。


この例では、フローは文字列をネットワークベースのデータ型に変換する必要があります。フローではコールをキューに転送し、Bridge アクションを呼び出し、キューの名前を取得しようとします。Bridge アクションは文字列でキューの名前を返します。ACD に転送アクションにより、キューへの転送が行われます。

フロー作成者がACDへの転送アクションで直接文字列をキュー設定として使用しようとすると、システムはエラーを返します。ACD に転送アクションは、キューの転送先に関するキューの値が提供されることをシステムに期待します。To 機能は 1 つのデータ タイプを別のタイプに変換するため、フロー作成者は ToQueue 機能を使って、文字列を ToQueue 機能を使用する文字列に変換しようとする場合があります。ただし、Architect には文字列値をキュー値に変換する ToQueue 実装がないため、フローで文字列をネットワークベースのデータ タイプに変換することはできません。

ConvertString


Architectでは、パラレル配列を使用して文字列値を別の値型に変換します。このソリューションでは、キーから値のマッピングが効果的に設定され、指定する値に制限がないため、ネットワークベースの値タイプ以外にも対応できます。

たとえば、フローには、Task.QueueNamesという名前の文字列コレクション変数と、Task.Queuesという名前のキューコレクション変数が含まれています。両方のコレクションの項目数は同じです。変数を設定し、Task.QueueNames にある文字列値について、Task.Queues で関連するキューを素早く検索できます。

これらの変数に設定されているコレクションを設定するには、Update Dataアクションを使用します。

Task.QueueNames Task.Queues
「売り上げ」 Genesys Cloud販売キュー
" ;マーケティング" ; Genesys Cloudマーケティングキュー
" ;技術サポート" ; Genesys Cloudテクニカルサポートキュー

次に、ルックアップを実行するための式を作成します。システムがルックアップ変換に指定された文字列を見つけることができない場合は、フォールバックデフォルトキューを使用します。開始するには、Task.DefaultQueueをこの組織のGenesys Cloud Operatorキューに設定します。

それでは、名前でキューを調べ、その文字列に関連付けられたキューを返す式を構築しましょう。

If(FindFirst(Task.QueueNames, Task.QueueNameStr)!=-1, Task.Queues[FindFirst(Task.QueueNames, Task.QueueNameStr)], Task.DefaultQueue)

これで、文字列値をコールフロー内のキューにマッピングできます。上記の式は、項目の数が少ないコレクションに適しています。数の多いコレクションの場合、FindFirst コールの値を変数に保存します。これにより、同じ式でコールが 2 回実行されるのを防ぎます。FindFirst コールの値を Task.FoundIndex 整数変数に保存する場合、上記の式を以下のように書き直します。

If(Task.FoundIndex!=-1, Task.Queues[Task.FoundIndex], Task.DefaultQueue)


現在、Architectには、文字列をネットワークベースの型に変換する組み込み関数はありません。以下のようなさまざまな理由で、Architect ではこの機能をサポートしていません。

  • 呼び出しフローの実行時には、ネットワークベースのデータ型(文字列からのキューなど)の解決には、現在Edgeからクラウドへのラウンドトリップが必要です。このシナリオはネットワーク トラフィックを増大する可能性があります。
  • 切断中にEdgeが走ることがあります。この場合、クラウドを呼び出しても、文字列値からネットワークベースの値への実行時解決は不可能です。
  • 同じ名前の2つのネットワークベースのオブジェクトのまれなケースでは、システムが同じ名前の2つ以上のオブジェクトを返すことがあるため、名前による検索があいまいになります。