文字列値を入力値に変換


フローの作成者がコール フロー内で文字列値を入力値に変換したいと思うことは珍しくありません。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 で関連するキューを素早く検索できます。

データを更新アクションを使って、以下のように変数にコレクション セットを設定します。

Task.QueueNames Task.Queues
“Sales” PureCloud 営業キュー
“Marketing” PureCloud マーケティング キュー
“Technical Support” PureCloud テクニカル サポート キュー

次に、検索を行う式を構築し、検索変換に提供される文字列が見つからない場合の代わりのデフォルト キューを準備します。始めるには、Task.DefaultQueue をこの組織の PureCloud オペレータ キューに設定します。

ここでは、キューを名前で検索し、その文字列に関連するキューを返す式を構築します。

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 つ以上のオブジェクトを返す可能性があるためです。