Alexa Conversationsでのダイアログアクトの使用



Alexa Conversationsでのダイアログアクトの使用

ダイアログアクトは、サンプル会話の中でユーザーとAlexaがどのように対話し、APIを呼び出して特定の目的を果たすというタスクを達成するかを説明するものです。以下のセクションでは、Alexa Conversationsでサポートされているダイアログアクトのフローについて説明します。

このガイドラインに沿ってダイアログをオーサリングする方法については、Alexa Conversationsでのダイアログオーサリングのベストプラクティスを参照してください。すべてのダイアログアクトの詳細については、Alexa Conversationsのダイアログアクトリファレンスを参照してください。

各ステージでのダイアログアクトの使い方

ダイアログアクトの使い方を分かりやすく説明すると、5つの主なステージをループして、最終的にAPIを呼び出すということです。ダイアログの次のいずれかの位置からループが開始するとします。

  • ダイアログの最初のターン(ユーザー入力ターン)
  • API SuccessまたはAPI Failureのダイアログアクトを使用したAlexa応答ターンの後
  • ビルトインのreqmore応答テンプレートを使用したAlexa応答ターンの後

そこから次のようにステージが進みます。

  1. ユーザーまたはAlexaがAPI呼び出しインテントをトリガーする
  2. Alexaが質問する
  3. ユーザーがAlexaに応答する
  4. 必要に応じてステージ2とステージ3を繰り返す
  5. AlexaがAPIを呼び出す

ステージ1: ユーザーまたはAlexaがAPI呼び出しインテントをトリガーする

Alexa ConversationsでのダイアログオーサリングはAPI中心のアプローチなので、通常はAPI呼び出しインテントをトリガーすることから始めます。次の表に示すとおり、これは2つのうちいずれか1つの方法で実行できます。

状況 対処方法

ユーザー入力やその発話セットに関連付けられているサンプル発話がユーザーの意図を示していて、最終的にAPIを呼び出すものである場合

ユーザー入力ダイアログアクトのInvoke API(s)を使用し、ステージ2に進みます。

Alexaの応答がユーザーへの提案を示していて、最終的に何らかの引数が指定された別のAPIを呼び出すものである場合

Alexa応答ダイアログアクトのOffer Next APIを使用し、ステージ3に進みます。

ステージ2: Alexaが質問する

次の表は、ユーザーエクスペリエンスの一貫性を保つための、このステージでのダイアログアクトの優先順位を示しています。

状況 対処方法

直前のユーザー入力ターンで、前回のAlexa応答ダイアログアクトのConfirm API ArgumentsまたはOffer Next APIが否定された場合

ビルトインのreqmore応答テンプレートを使って応答を設定し、ステージ3に進みます。

ユーザーが前回のAlexa応答ダイアログアクトのConfirm Argumentsを否定したが、確認の必要なすべての引数をまだAlexaがリクエストしていない場合(確認する引数すべてを得るために複数のリクエストが必要な場合があります)

ステージ3に進みます。

必須の引数でAPIを呼び出すために十分な情報を既にAlexaが取得しているが、必須(および任意の数のオプション)の引数がすべて確認されていることを確かめたい場合

Alexa応答ダイアログアクトのConfirm APIを使用し、ステージ3に進みます。

例:「四月二十一日に神戸を出発して京都に向かう旅程を保存します。よろしいですか?」 この応答でPlanMyTrip API全体を確認します。

必須の引数でAPIを呼び出すために十分な情報をまだAlexaが取得しておらず、ユーザーがAlexa応答ダイアログアクトのRequest Argsを受け取って一連の引数を渡すたびに、その引数を確認したい場合

Alexa応答ダイアログアクトのConfirm Argsを使用し、ステージ3に進みます。

例:「出発地は神戸ですね?」 この応答でfromCity引数を確認します。

Alexaがこれらの条件をまったく満たしていない場合(つまり、必要な引数でAPIを呼び出すために十分な情報をAlexaが取得しておらず、いずれの引数に入力する値もユーザーから提供されていない場合)

Alexa応答ダイアログアクトのRequest Argsを使用して、API引数に入力するスロット値をユーザーにリクエストし、ステージ3に進みます。ユーザーはスロット値を答えるか、スロット値を含む完全な発話で答えます。

例:「出発地はどこですか?」(この応答でfromCity引数の値をリクエストします)

いずれの条件にも該当しない場合。Alexaは必要なすべての引数でAPIを呼び出す準備ができており、何も確認する必要がない場合

ステージ5に進みます。

ステージ3: ユーザーがAlexaに応答する

このステージでは、ユーザーがAlexaに応答します。

状況 対処方法

前回のAlexa応答にダイアログアクトのOffer Next API(引数のリクエストなし)、Confirm APIConfirm Argsのいずれかが含まれており、ユーザーがその引数やAPIを肯定する場合

ユーザー入力ダイアログアクトのAffirmを使用し、ステージ4に進みます。

前回のAlexa応答にダイアログアクトのOffer Next API(引数のリクエストなし)、Confirm APIConfirm Argsのいずれかが含まれており、ユーザーがその引数やAPIを否定する場合。

ユーザー入力ダイアログアクトのDenyを使用し、ステージ4に進みます。

前回のAlexa応答にダイアログアクトのOffer Next API(引数のリクエストあり)が含まれており、ユーザーが次のAPIの引数を渡してステージ4に進む場合

ユーザー入力ダイアログアクトのInformを使用し、ステージ4に進みます。

前回のAlexa応答にダイアログアクトのOffer Next API(引数のリクエストあり)が含まれており、ユーザーがその引数やAPIを否定する場合

ユーザー入力ダイアログアクトのDenyを使用し、ステージ4に進みます。

前回のAlexa応答にダイアログアクトのRequest APIがあり、ユーザーが引数を渡す場合

ユーザー入力ダイアログアクトのInformを使用し、ステージ4に進みます。

ユーザーがビルトインのreqmore応答テンプレートに応答している場合

ステージ1に進むか、ダイアログを終了します。

ステージ4: 必要に応じてステージ2とステージ3を繰り返す

APIを呼び出せる状態になるまで、ステージ2とステージ3を繰り返します。

ステージ5: AlexaがAPIを呼び出す

このステージでは、AlexaがAPIを呼び出し、前回のAPIに対してAPI SuccessまたはAPI Failureの応答をレンダリングします。

状況 対処方法

AlexaがAPIの結果をユーザーに知らせている場合

例:「過去の日付の旅行は計画できません。未来の日付を教えてください。」 ユーザーがtravelDateスロットに今日より前の日付を渡すと、このプロンプトが出されます。

Alexa応答ダイアログアクトのAPI SuccessまたはAPI Failureを使用します。

スロット値を定義済みのルールと照らし合わせて確認し、ルールに従っていない場合はユーザーにプロンプトを出します。ユーザーは訂正した値を使用して応答できます。

例:「過去の日付の旅行は計画できません。未来の日付を教えてください。」 ユーザーがtravelDateスロットに今日より前の日付を渡すと、このプロンプトが出されます。

Alexa応答ダイアログアクトのAPI Failureを使用し、続けてRequest Altを使用してから、ステージ3に進みます。

ダイアログのタスクがすべて完了するまで、ステージ1からステージ5を繰り返します。