ビジュアル・フロー・デザイナの開始

ビジュアル・フロー・デザイナを開始するステップのクイック・セットを次に示します。

ビジュアル・デザイナ・フロー・スキルの作成

ビジュアル・フロー・スキルを作成するには:
  1. スキル・ランディング・ページで「+新規スキル」をクリックします。
  2. ダイアログ・モードとして「ビジュアル」を選択します。
    ノート

    このオプションを使用するには、プラットフォーム・バージョンを22.04以上に設定する必要があります。
  3. インテントおよびエンティティを作成します。変数およびインテント・フローを作成する前に、これらを設定する必要があります。
  4. 左側のナビゲーション・バーで「フロー」これは左側のナビゲーション・バーのダイアログ・フロー・アイコンのイメージです。をクリックします。エディタが開き、メイン・フローが開き、スキル全体の構成を設定および管理します。特に、「スキル変数」ページを使用して、フローとそのイベント・ページで共有される変数を追加して、インテントへのトランザクション・フローのマッピング、および未解決のインテントを処理する組込みイベントへのユーティリティ・フローのマッピング、ダイアログ・エラーおよびアンサー・インテントの表示を作成および管理します。

マップ・イベント

メイン・フローの「イベント」ページからマッピングを追加、編集または削除できます。マッピング・ダイアログを使用して、既存のフローに対して様々なタイプのイベントを実行できます。
df-2-0-event-mapping-dialog.pngの説明が続きます
図df-2-0-event-mapping-dialog.pngの説明

このダイアログにアクセスするには、これは「追加」アイコンのイメージです。をクリックします。
df-2-0-event-mappings-page.pngの説明が続きます
図df-2-0-event-mappings-page.pngの説明

インテント・イベント・フローの作成

ここでは、スキルの特定のインテントにマップするフローを作成します。インテント・フローは通常、通常のインテントにマップされますが、アンサー・インテント用に作成することもできます。

インテント・イベント・フローを作成するには:

  1. 対応するインテントと、フロー内で参照されるエンティティを作成します。

    たとえば、ピザ・スキルを作成する場合は、次のアーティファクトを作成できます:

    • orderPizzaインテント。
    • 値リストPizzaToppingエンティティ。
  2. スキルをトレーニングします。
  3. フローの開始:
    • 左側のナビゲーション・バーで「フロー」をクリックし、「+フローの追加」をクリックします。
    • フロー名を入力し、このフローにマップされているインテントの名前を選択します。次に、「作成」をクリックします。
      ノート

      選択できるのは、使用可能なフローからのみです。


  4. フロー内で使用される変数を作成します。
    1. 「構成」タブを開きます。次に「+変数の追加」をクリックします。
    2. 変数タイプを選択します。変数がエンティティを参照する場合は、選択したエンティティの変数に名前を付けてダイアログを完了します。次に「適用」をクリックします

      ノート

      フロー内で、変数と出力パラメータは同じ名前を共有できます。ただし、変数および出力パラメータの名前を入力パラメータと同じにすることはできません。
  5. フローを構築します。
    1. 「フロー」タブを開きます。
    2. フロー開始のメニュー「Add State」メニューアイコン。をクリックし、「開始状態の追加」をクリックして「状態の追加」ダイアログを開きます。
      「開始状態の追加」オプション。

    3. コンポーネント・ピッカーから状態を選択し、「挿入」をクリックします。
    4. 状態のプロパティ・インスペクタを開き、コンポーネントを構成します。
例としてピザ・スキルを使用すると、次のようにフローを開始します。
  1. 「質問をする」を選択し、「挿入」をクリックします。
  2. 質問状態のプロパティ・ウィンドウで「コンポーネント」タブを開きます。
  3. 質問を追加します(「What pizza do you want?」など)。次に、フロー変数を選択します。

    ヒント:

    スキルのすべてのユーザー向けテキストにリソース・バンドルを使用します。


  4. メニューをクリックして、質問の後に別の状態を追加します。これはメニュー・アイコンのイメージです。
  5. 「メッセージの送信」を選択し、「挿入」をクリックします。
  6. 送信メッセージの状態のプロパティ・ウィンドウで、${varName.value.value}構文を使用してフロー変数にアクセスするFreeMarker式を含む確認メッセージを入力します。例:
    Your ${PizzaType.value.value} pizza is on the way.
    フロー・レベルのコンポジット・バッグ・エンティティを参照する場合は、${cbVarName.value.itemName.<attribute>}構文を使用します。

    フローに状態を追加した後、メニューこれはメニュー・アイコンのイメージです。をクリックして「開始状態にする」を選択すると、開始状態を再割当てできます。
    df-2-0-make-start-state.pngの説明が続きます
    図df-2-0-make-start-state.pngの説明

  7. 出力コンポーネントのプロパティ・インスペクタの「トランジション」タブを開きます。遷移として「終了フロー(暗黙的)」が選択されていることに注意してください。このフローには必須の出力パラメータがないため、暗黙的な終了フローへの移行で十分です。ただし、このフローにさらに必要な出力パラメータが1つあった場合、出力状態は、フローの出力パラメータを指定する実際の終了フロー状態(「フロー制御」「終了フロー」をクリックして挿入)に遷移する必要があります。

FreeMarker式の参照変数値

値リスト・エンティティを参照するには、${varName.value.value}を使用します。エンティティはJSONオブジェクトとして解決されるため、最初の.valueはJSONオブジェクトを返し、2番目の.valueはそのJSONオブジェクト内のプロパティの値を返します。スキルのプライマリ言語でエンティティの値を返すには、${varName.value.primaryLanguageValue}を使用します。

コンポジット・バッグ・エンティティの場合、値リスト・アイテムには${cbVarName.value.itemName.value}を、非値リスト・アイテムには{cbVarName.value.itemName}を使用します。
  • アイテムが値リストの場合は、値プロパティ${cbVarName.value.itemName.value}または${cbVarName.value.itemName.primaryLanguageValue}を使用します。
  • 値リスト・アイテム以外の場合、値プロパティ(.valueまたは.primaryLanguageValueなし)を持つアイテムにはアクセスしません。たとえば、コンポジット・バッグでアイテム名がdateのDATEエンティティを参照する場合、${cbVarName.value.date}を使用します。NUMBERエンティティ・アイテム(number)の場合は、${cbVarName.value.number}を使用します。
参照構文は、コンテキストによって異なります。スキル内の様々なフローでスキル・レベルの変数を参照できるようにするには、式内の変数名の先頭にskill.を付けますたとえば、次の式は、フロー間で共有されるコンポジット・バッグ・エンティティ(Order)内のアイテム(Type)を参照します。
${skill.Order.value.Type.value}
skillは、フロー・スコープ変数の式では必要ありません。
${Order.value.Type.value}

ヒント:

自動補完により、Apache FreeMarker式の書込みでエラーが発生しやすくなります。

組込みイベントのフローの作成

未解決のインテントの処理、ダイアログ・エラー、アンサー・インテントの提示など、組込みイベント用のユーティリティ・フローが必要になる場合があります。これらのフローをメイン・フローの組込みイベントにマップします。一般に、組込みイベントにマップされたフローは、スキルの開始時やインテント・フローが終了フロー状態で終了する場合など、アクティブなインテント・レベルのフローがない場合に起動されます。

たとえば、すべての回答インテントを処理する汎用フローを作成するには:

  1. 回答インテントを作成またはインポートし、スキルをトレーニングします。
  2. 「フロー」をクリックし、「+フローの追加」をクリックします。
  3. アンサー・インテント・フローのフロー名を入力して、「作成」をクリックします。
  4. フロー開始のメニュー「Add State」メニューアイコン。をクリックし、「開始状態の追加」をクリックして「状態の追加」ダイアログを開きます。
    「開始状態の追加」オプション。

  5. 「ユーザー・メッセージング」「テキストおよびマルチメディア・メッセージの表示」「インテント・アンサーの表示」を選択するか、「検索」フィールドにインテント・アンサーを入力して、インテント・アンサーの表示状態を追加します。「挿入」をクリックします。

    ヒント:

    検索フィールドを使用して、状態テンプレートを検索します。


  6. インテント・アンサーの表示状態をクリックしてプロパティ・インスペクタの「コンポーネント」タブを開き、「レスポンス・アイテムの編集」をクリックします。
  7. 回答インテント・メッセージ("${skill.system.event.value.intent.answer}")にアクセスするテンプレートのFreeMarker式を組み込んで、テキスト・メッセージを更新します。例:
    "Hello, ${profile.firstName?capitalize} ${profile.lastName?capitalize}. You were asking about ${skill.system.event.value.intent.intentName?lower_case}. Here's your answer: ${skill.system.event.value.intent.answer}."


    ノート

  8. 「適用」をクリックします
  9. 「メイン・フロー」をクリックします。
  10. 「組込みイベント」の横にあるこれは「追加」アイコンのイメージです。をクリックします。
  11. 「組込みイベント・ハンドラの作成」ダイアログに入力します。
    • 「未処理イベント・タイプ」ドロップダウンから「アンサー・インテント」(インテント・イベントの下にあります)を選択します。

    • 「マップされたフロー」ドロップダウンから回答インテント・フローを選択します。
  12. 「作成」をクリックします。
ノート

ダイアログ・エラー・イベント・フローは、スキル・レベルとフロー・レベルの両方に存在できます。ダイアログ・エラー・組込みイベントにマップされるスキル・レベルのダイアログ・エラー・フローは、フロー・レベルのダイアログ・エラー・イベントにマップされたエラー処理フローがない場合にフォールバックとして機能します。スキルにダイアログ・エラー・フローがまったくない場合、スキルはデフォルトのエラー・メッセージを出力します(Oops!問題が発生しています)。

組込みイベント・フローのサンプル・メッセージ

FreeMarker式を使用して、エラーおよび回答インテントにアクセスします。詳細は、Handy Expressionsを参照してください。
組込みイベント 式の構文および例
回答インテント スキルのすべての回答インテントを処理する汎用フローには、次の構文を使用します:
${skill.system.event.value.intent.answer}

例:

こんにちは、${profile.firstName?capitalize} ${profile.lastName?capitalize}さん、 ${skill.system.event.value.intent.intentName?lower_case}について質問しました。解答は次のとおりです: ${skill.system.event.value.intent.answer}

ダイアログ・エラー ダイアログのエラーメッセージには、次の構文を使用します。
${skill.system.event.value.dialogError.errorMessage}
例:

オーダーの処理中にエラーが発生しました: ${skill.system.event.value.dialogError.errorMessage}