基本概念

ビジュアル・フロー・デザイナは、スキルとそのユーザー間の相互作用を設計するためのビジュアル・ツールです。次のトピックでは、最初に知っておく必要があることを説明します。

ビジュアル・デザイナ

ビジュアル・フロー・デザイナでは、ダイアログ・フローはコード・エディタではなく視覚的に設計されています。状態間の接続は、視覚的な図で表されます。変数、パラメータおよびコンポーネント・プロパティは、特殊なエディタおよびダイアログで定義されます。

複数のフロー

ビジュアル・フロー・デザイナで、スキルを設計する会話の様々な部分を処理するフローを作成します。通常、次のものがあります。

  • メイン・フロー。これはスキルのメイン・エントリ・ポイントであり、フローよりも構成が多いものです。メイン・フローには次のものが含まれます。
    • グローバル変数
    • フローにマップするイベント。
  • 通常のインテントごとのフロー。
  • すべての回答インテントを処理する単一のフロー(ただし、それらの回答インテントに固有の動作を含める場合は、個々の回答インテントに個別のフローを設定することもできます)。
  • ほかのフローから呼び出すことができるサブフローおよび再利用可能なユーティリティーフロー(認証用など)。

イベント

ビジュアル・フロー・デザイナで作成されたスキルでは、そのフローにマップされたイベントが発生すると、フローがトリガーされます。スキルのインテントごとにイベントがあり、標準ケース(予期しないユーザー入力やエラーなど)の組込みイベントがあります。さらに、カスタム・イベントを定義して、別のフローが終了したときに発行されたアクションに基づいてフローをトリガーできます。

スキル・レベルでトリガーされたイベントは、フローにマップされます。フローでトリガーされるイベントは、フロー内の状態にマッピングされます。(ダイアログ・エラー・イベントの場合、現在のフローの状態にイベントをマップしていない場合、イベントはメイン・フローに伝播され、そこからフローにマップされます。)

ノート

ビジュアル・フロー・デザイナのイベントは、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モジュールを使用している場合は、回答インテントの使用に移行する必要があります。

ビジュアル・フロー・デザイナでのコンポーネントの完全な実行方法は、「コンポーネント・テンプレート」を参照してください。