ビジュアル・フロー・デザイナの開始
ビジュアル・フロー・デザイナを開始するステップのクイック・セットを次に示します。
ビジュアル・デザイナ・フロー・スキルの作成
- スキル・ランディング・ページで「+新規スキル」をクリックします。
- ダイアログ・モードとして「ビジュアル」を選択します。
ノート
このオプションを使用するには、プラットフォーム・バージョンを22.04以上に設定する必要があります。 - インテントおよびエンティティを作成します。変数およびインテント・フローを作成する前に、これらを設定する必要があります。
- 左側のナビゲーション・バーで「フロー」
をクリックします。エディタが開き、メイン・フローが開き、スキル全体の構成を設定および管理します。特に、「スキル変数」ページを使用して、フローとそのイベント・ページで共有される変数を追加して、インテントへのトランザクション・フローのマッピング、および未解決のインテントを処理する組込みイベントへのユーティリティ・フローのマッピング、ダイアログ・エラーおよびアンサー・インテントの表示を作成および管理します。
マップ・イベント
メイン・フローの「イベント」ページからマッピングを追加、編集または削除できます。マッピング・ダイアログを使用して、既存のフローに対して様々なタイプのイベントを実行できます。
図df-2-0-event-mapping-dialog.pngの説明
このダイアログにアクセスするには、をクリックします。
図df-2-0-event-mappings-page.pngの説明
インテント・イベント・フローの作成
ここでは、スキルの特定のインテントにマップするフローを作成します。インテント・フローは通常、通常のインテントにマップされますが、アンサー・インテント用に作成することもできます。
インテント・イベント・フローを作成するには:
- 対応するインテントと、フロー内で参照されるエンティティを作成します。
たとえば、ピザ・スキルを作成する場合は、次のアーティファクトを作成できます:
- orderPizzaインテント。
- 値リストPizzaToppingエンティティ。
- スキルをトレーニングします。
- フローの開始:
- 左側のナビゲーション・バーで「フロー」をクリックし、「+フローの追加」をクリックします。
- フロー名を入力し、このフローにマップされているインテントの名前を選択します。次に、「作成」をクリックします。
ノート
選択できるのは、使用可能なフローからのみです。
- フロー内で使用される変数を作成します。
- 「構成」タブを開きます。次に「+変数の追加」をクリックします。
- 変数タイプを選択します。変数がエンティティを参照する場合は、選択したエンティティの変数に名前を付けてダイアログを完了します。次に「適用」をクリックしますノート
フロー内で、変数と出力パラメータは同じ名前を共有できます。ただし、変数および出力パラメータの名前を入力パラメータと同じにすることはできません。
- フローを構築します。
- 「フロー」タブを開きます。
- フロー開始のメニュー
をクリックし、「開始状態の追加」をクリックして「状態の追加」ダイアログを開きます。
- コンポーネント・ピッカーから状態を選択し、「挿入」をクリックします。
- 状態のプロパティ・インスペクタを開き、コンポーネントを構成します。
- 「質問をする」を選択し、「挿入」をクリックします。
- 質問状態のプロパティ・ウィンドウで「コンポーネント」タブを開きます。
- 質問を追加します(「What pizza do you want?」など)。次に、フロー変数を選択します。
ヒント:
スキルのすべてのユーザー向けテキストにリソース・バンドルを使用します。 - メニューをクリックして、質問の後に別の状態を追加します。
- 「メッセージの送信」を選択し、「挿入」をクリックします。
- 送信メッセージの状態のプロパティ・ウィンドウで、
${varName.value.value}
構文を使用してフロー変数にアクセスするFreeMarker式を含む確認メッセージを入力します。例:
フロー・レベルのコンポジット・バッグ・エンティティを参照する場合は、Your ${PizzaType.value.value} pizza is on the way.
${cbVarName.value.itemName.<attribute>}
構文を使用します。フローに状態を追加した後、メニュー
をクリックして「開始状態にする」を選択すると、開始状態を再割当てできます。
図df-2-0-make-start-state.pngの説明 - 出力コンポーネントのプロパティ・インスペクタの「トランジション」タブを開きます。遷移として「終了フロー(暗黙的)」が選択されていることに注意してください。このフローには必須の出力パラメータがないため、暗黙的な終了フローへの移行で十分です。ただし、このフローにさらに必要な出力パラメータが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}
組込みイベントのフローの作成
未解決のインテントの処理、ダイアログ・エラー、アンサー・インテントの提示など、組込みイベント用のユーティリティ・フローが必要になる場合があります。これらのフローをメイン・フローの組込みイベントにマップします。一般に、組込みイベントにマップされたフローは、スキルの開始時やインテント・フローが終了フロー状態で終了する場合など、アクティブなインテント・レベルのフローがない場合に起動されます。
たとえば、すべての回答インテントを処理する汎用フローを作成するには:
- 回答インテントを作成またはインポートし、スキルをトレーニングします。
- 「フロー」をクリックし、「+フローの追加」をクリックします。
- アンサー・インテント・フローのフロー名を入力して、「作成」をクリックします。
- フロー開始のメニュー
をクリックし、「開始状態の追加」をクリックして「状態の追加」ダイアログを開きます。
- 「ユーザー・メッセージング」→「テキストおよびマルチメディア・メッセージの表示」→「インテント・アンサーの表示」を選択するか、「検索」フィールドにインテント・アンサーを入力して、インテント・アンサーの表示状態を追加します。「挿入」をクリックします。
ヒント:
検索フィールドを使用して、状態テンプレートを検索します。 - インテント・アンサーの表示状態をクリックしてプロパティ・インスペクタの「コンポーネント」タブを開き、「レスポンス・アイテムの編集」をクリックします。
- 回答インテント・メッセージ(
"${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}."
ノート
- 「適用」をクリックします
- 「メイン・フロー」をクリックします。
- 「組込みイベント」の横にある
をクリックします。
- 「組込みイベント・ハンドラの作成」ダイアログに入力します。
- 「未処理イベント・タイプ」ドロップダウンから「アンサー・インテント」(インテント・イベントの下にあります)を選択します。
- 「マップされたフロー」ドロップダウンから回答インテント・フローを選択します。
- 「未処理イベント・タイプ」ドロップダウンから「アンサー・インテント」(インテント・イベントの下にあります)を選択します。
- 「作成」をクリックします。
ダイアログ・エラー・イベント・フローは、スキル・レベルとフロー・レベルの両方に存在できます。ダイアログ・エラー・組込みイベントにマップされるスキル・レベルのダイアログ・エラー・フローは、フロー・レベルのダイアログ・エラー・イベントにマップされたエラー処理フローがない場合にフォールバックとして機能します。スキルにダイアログ・エラー・フローがまったくない場合、スキルはデフォルトのエラー・メッセージを出力します(Oops!問題が発生しています)。
組込みイベント・フローのサンプル・メッセージ
組込みイベント | 式の構文および例 |
---|---|
回答インテント | スキルのすべての回答インテントを処理する汎用フローには、次の構文を使用します:
例: こんにちは、 |
ダイアログ・エラー | ダイアログのエラーメッセージには、次の構文を使用します。 例:オーダーの処理中にエラーが発生しました: |