基本概念
ビジュアル・フロー・デザイナは、スキルとそのユーザー間の相互作用を設計するためのビジュアル・ツールです。次のトピックでは、最初に知っておく必要があることを説明します。
ビジュアル・デザイナ
ビジュアル・フロー・デザイナでは、ダイアログ・フローはコード・エディタではなく視覚的に設計されています。状態間の接続は、視覚的な図で表されます。変数、パラメータおよびコンポーネント・プロパティは、特殊なエディタおよびダイアログで定義されます。
複数のフロー
ビジュアル・フロー・デザイナで、スキルを設計する会話の様々な部分を処理するフローを作成します。通常、次のものがあります。
- メイン・フロー。これはスキルのメイン・エントリ・ポイントであり、フローよりも構成が多いものです。メイン・フローには次のものが含まれます。
- グローバル変数
- フローにマップするイベント。
- 通常のインテントごとのフロー。
- すべての回答インテントを処理する単一のフロー(ただし、それらの回答インテントに固有の動作を含める場合は、個々の回答インテントに個別のフローを設定することもできます)。
- ほかのフローから呼び出すことができるサブフローおよび再利用可能なユーティリティーフロー(認証用など)。
イベント
ビジュアル・フロー・デザイナで作成されたスキルでは、そのフローにマップされたイベントが発生すると、フローがトリガーされます。スキルのインテントごとにイベントがあり、標準ケース(予期しないユーザー入力やエラーなど)の組込みイベントがあります。さらに、カスタム・イベントを定義して、別のフローが終了したときに発行されたアクションに基づいてフローをトリガーできます。
スキル・レベルでトリガーされたイベントは、フローにマップされます。フローでトリガーされるイベントは、フロー内の状態にマッピングされます。(ダイアログ・エラー・イベントの場合、現在のフローの状態にイベントをマップしていない場合、イベントはメイン・フローに伝播され、そこからフローにマップされます。)
ビジュアル・フロー・デザイナのイベントは、YAMLダイアログ・フローのデフォルトの遷移アクションとほぼ一致します。
変数、スコープおよびパラメータ
ビジュアル・フロー・デザイナを使用すると、個々のフローのレベルおよびグローバルで変数を定義できます。
- 個々の流れフローで定義された変数には、そのフローの外部から直接アクセスできません。
フロー変数の存続期間は、そのフローに制限されます。この値は、ダイアログがフローの最後まで移動した後にクリアされます。ユーザーがセッションの後半でそのフローに戻った場合、変数は再初期化されます。
- メイン・フロー内。ここで定義される変数には、スキル全体(グローバル)のスコープがあり、これは、スキル内のすべてのフローからアクセスできます。
これらのグローバル変数の値は、ユーザーのセッションをスキルとともに継続します。変数は、スキルを持つユーザー・セッションが終了するとクリアされます。これは、次のいずれかが発生したときに発生します:
- ユーザーがチャット・ウィンドウを閉じます。
- セッションは、非アクティブ期間(チャネル・レベルで定義され、通常は24時間)後にタイムアウトします。
- デジタル・アシスタントのコンテキストでは、ユーザーはスキルを終了するか、別のスキルを直接呼び出す状態に到達します。
ノート
ユーザーがシーケンス入力以外の会話を中断し、一時的に別のスキルにルーティングした場合、デジタル・アシスタントは元のスキルのコンテキストに残り、その変数は自動的にクリアされません。この場合、中断後にユーザーが元のスキルに戻ると、変数には値が保持されます。ユーザーが元のスキルに戻らないように選択した場合、元のスキルは終了し、変数はクリアされます。
変数の値は、入出力パラメータを使用してフロー内外に渡すことができます。フロー間の変数への直接参照ではなくパラメータを使用して、自己完結型のフローを作成します。これにより、再利用が可能となり、予測可能な動作が促進され、バグの可能性が低下します。
フローの入力パラメータの名前は、そのフローの変数の名前とは異なる必要があります。
新規、変更済および削除済コンポーネント
ビジュアル・フロー・デザイナのコンポーネントのセットは、YAMLベースのエディタとほとんど同じですが、いくつかの追加、削除および変更があります。次に、最大の違いの簡単な概要を示します。
次のコンポーネントは、ビジュアル・フロー・デザイナ専用です。
- フローの起動:既存のフローからフローをコールするために使用します。
- 終了フロー:特定のフローを終了するために使用します。このコンポーネントの
action
プロパティを使用して、別のフローをトリガーするイベントを指定することもできます。通常、このようなアクションは、親フローの呼出しフロー・コンポーネントで指定されたアクション遷移で使用されます。最上位レベルのフローの場合、「フローの終了」状態のアクションによってメイン・フローのカスタム・イベントがトリガーされます。 - メッセージの送信:メッセージを表示するための簡易化された共通レスポンス(
System.CommonResponse
)コンポーネント。 - 質問する:ユーザーに応答を要求するための簡易化された共通レスポンス(
System.CommonResponse
)コンポーネント。 - コンポジット・バッグの解決:コンポジット・バッグ・エンティティを操作するように特別に設計された、簡易解決エンティティ(
System.ResolveEntities
)コンポーネント。 - 「表およびフォームの表示」コンポーネント。
次のコンポーネントはビジュアル・フロー・デザイナでは使用できません。
- System.Intent:この機能は、アクティブなフローがない場合に発生する自動インテント解決に置き換えられました。インテント検出および解決を参照してください。
- System.ConditionEquals:かわりに「切替え」コンポーネントを使用します。
- System.ConditionExists:かわりに「切替え」コンポーネントを使用します。
- System.Text:かわりに、「共通レスポンス・コンポーネント・テンプレート」、「エンティティの解決」コンポーネントまたは新しい「質問をする」コンポーネントのいずれかを使用します。
- System.List:かわりに、「共通レスポンス」コンポーネント・テンプレートまたは「エンティティの解決」コンポーネントを使用します。
- System.Output:かわりに、「共通レスポンス」コンポーネント・テンプレート、「エンティティの解決」コンポーネントまたは「メッセージの送信」コンポーネントを使用します。
- System.Qna: Q&Aモジュールを使用している場合は、回答インテントの使用に移行する必要があります。
ビジュアル・フロー・デザイナでのコンポーネントの完全な実行方法は、「コンポーネント・テンプレート」を参照してください。