Alexa Conversationsのダイアログアクトのリファレンス



Alexa Conversationsのダイアログアクトのリファレンス

以下に示すのは、Alexa Conversationsスキルにユーザー発話セットとAlexa応答を設定するときに使用できるダイアログアクトです。

ダイアログアクトは、Alexa Conversationsがユーザー入力とAlexa応答のそれぞれの目的、およびダイアログの流れの進行を識別するのに役立つタグです。Alexa Conversationsでは、自動的にダイアログを展開して、さまざまなバリエーションやフローのトレーニングデータを生成する目的でもダイアログアクトを使用します。ダイアログアクトには、ユーザー入力ダイアログアクトAlexa応答ダイアログアクトの2つのセットがあります。

ここでは、参考用にサンプルの天気スキルから次のダイアログを使用します。

ユーザー: 天気を教えて。 (ダイアログアクト: Invoke APIs
Alexa: どの都市ですか? (ダイアログアクト: Request Args
ユーザー: 神戸。 (ダイアログアクト: Inform Args
Alexa: 日付はいつですか? (ダイアログアクト: Request Args
ユーザー: 今日。 (ダイアログアクト: Inform Args
Alexa: 今日の神戸の天気ですね? (ダイアログアクト: Confirm API
ユーザー: はい。 (ダイアログアクト: Affirm
Alexa: 今日の神戸の気温は二十一度です。 (ダイアログアクト: API Success

ユーザー入力のダイアログアクト

発話セットを作成するときは、次のいずれかのダイアログアクトに関連付けます。

ダイアログアクト 説明

Affirm

ユーザーは、前のターンのリクエストを肯定しています。

Deny

ユーザーは、前のターンのリクエストを否定しています。

Inform Args

ユーザーは、前のターンでAlexaがリクエストした引数を提供しています。

Invoke APIs

ユーザーは、APIを呼び出すダイアログパス上にいます。

Affirm

ユーザーが前回のAlexa応答ターンのリクエストを肯定していることを表します。

このダイアログアクトには、3つの一般的なユースケースがあります。

  • Confirm Argsダイアログアクトを使用したAlexa応答ターンの後のユーザーターン
  • Confirm APIダイアログアクトを使用したAlexa応答ターンの後のユーザーターン
  • Offer Next APIダイアログアクトを使用したAlexa応答ターンの後のユーザーターン

例: 「はい」「そうです」

制限事項: Alexa Conversationsでは、Confirm Argsダイアログアクトを使用したAlexa応答ターンの後にこのダイアログアクトが必要ですが、ユーザー入力ターン(アノテーション付き発話と発話セット)は使用されません。代わりに、「はい」「そうです」などの事前定義された一連の発話が使用されます。

Deny

ユーザーが前回のAlexa応答ターンのリクエストを否定していることを表します。このダイアログアクトを使用してダイアログを作成する必要はありません。これは、否定的なユースケースをユーザーが明示的に指定しなかった場合、Alexa Conversationsがユーザーに代わってこれらを自動的にサポートするためです。

このダイアログアクトには、3つの一般的なユースケースがあります。

  • Confirm Argsダイアログアクトを使用したAlexa応答ターンの後のユーザーターン
  • Confirm APIダイアログアクトを使用したAlexa応答ターンの後のユーザーターン
  • Offer Next APIダイアログアクトを使用したAlexa応答ターンの後のユーザーターン

例: 「いいえ」「違います」

制限事項: Alexa Conversationsでは、Confirm Argsダイアログアクトを使用したAlexa応答ターンの後にこのダイアログアクトが必要ですが、ユーザー入力ターン(アノテーション付き発話と発話セット)は使用されません。代わりに、「いいえ」「違います」などの事前定義された一連の発話が使用されます。

Inform Args

ユーザーがスロットを使用してAlexaに引数の値を通知していることを表します。このターンではAPIを呼び出していませんが、Alexaは最終的にこのスロットを使用してAPIを呼び出します。このダイアログアクトを使用して、ユーザーが値を肯定して通知していることを表すこともできます(前回のAlexa応答ターンがOffer APIで、引数をリクエストしている場合など)。ユーザー入力ターン(アノテーション付き発話と発話セット)には、少なくとも1つのスロットが必要です。

このダイアログアクトには、2つの一般的なユースケースがあります。

  • ユーザー入力ターン(Invoke APIsダイアログアクト)と、通知された1つ以上の引数を使用するAlexa応答ターン(API SuccessまたはAPI Failureダイアログアクト)の間にあるユーザーターン
  • Alexa応答ターン(Offer Next APIダイアログアクト)と、通知された1つ以上の引数を使用するAlexa応答ターン(API SuccessまたはAPI Failureダイアログアクト)の間にあるユーザーターン

例: 「{city}」「{city}の」「{city}では」

制限事項: このダイアログアクトは、プロパティを持つカスタムスロットタイプのリクエストに使用することはできません。使用できるのは、値を持つカスタムスロットタイプとビルトインスロットタイプをリクエストする場合のみです。

Invoke APIs

ユーザーが、最終的にAPIを呼び出すインテントを伝えていることを表します(ただし、このターンではAPIは呼び出しません)。このダイアログアクトには、2つの一般的なユースケースがあります。

  • ダイアログの最初のターン(ユーザーターン)
  • Alexa応答ターン (API SuccessまたはAPI Failureダイアログアクト)の後のユーザーターン

例: 「天気は?」「天気を教えて。」

Alexa応答のダイアログアクト

Alexa応答を設定するときには、その応答を次のいずれかのダイアログアクトに関連付けます。

ダイアログアクト 説明

API Failure

API呼び出しが失敗したことをユーザーに通知しています。

API Success

API呼び出しが成功したことをユーザーに通知しています。

Confirm API

必須のAPI引数(すべて)と任意のAPI引数(任意の数)をユーザーに確認しています。

Confirm Args

1つ以上の引数をユーザーに確認しています。

Offer Next API

会話を続けるために、別のAPIを呼び出すダイアログパスをユーザーに提供しています(ただし、このターンではAPIは呼び出しません)。

Request Alt

同じAPIを呼び出すダイアログパスを提供し、指定された引数をリクエストしています(ただし、このターンではAPIは呼び出しません)。

Request Args

1つ以上の引数をユーザーにリクエストしています。

API Failure

API呼び出しの失敗をAlexaがユーザーに通知していることを表します。

API Failureでは、これまでに収集したAPI引数は引き継がれません。一方、API Successではこれまでに収集したAPI引数が引き継がれます。

例: 「{city}の気象データは利用できません。」

必須フィールド:

  • 呼び出すAPI: 応答をレンダリングする前に呼び出すAPIです。最大2つのAPIをデイジーチェーン接続して呼び出すことができます。
  • 条件APLデータバインディングの構文に記述されている任意のブール条件です。この条件では、以降のダイアログのターンがシミュレーターによって考慮されます。この条件は、応答のレンダリングに影響せず、APIの戻り値に関連付けられた変数を含む場合があります。特定の応答のAPI Success/Failureの条件はそれぞれ排他的であるとともに、すべてのケースをカバーする必要があります。
  • 応答: ユーザーにレンダリングする応答です。

2番目のダイアログアクト: このダイアログアクトを2番目のダイアログアクト(Offer Next APIまたはRequest Alt)とデイジーチェーン接続できます。

API Success

API呼び出しの成功をAlexaがユーザーに通知していることを表します。

API Successでは、これまでに収集したAPI引数が引き継がれます。一方、API Failureではこれまでに収集したAPI引数は引き継がれません。

例: 「{response.date}の{response.city}の気温は{response.temperature}度です。」

必須フィールド:

  • 呼び出すAPI: 応答をレンダリングする前に呼び出すAPIです。最大2つのAPIをデイジーチェーン接続して呼び出すことができます。
  • 条件APLデータバインディングの構文に記述されている任意のブール条件です。この条件では、以降のダイアログのターンがシミュレーターによって考慮されます。この条件は、応答のレンダリングに影響せず、APIの戻り値に関連付けられた変数を含む場合があります。特定の応答のAPI Success/Failureの条件はそれぞれ排他的であるとともに、すべてのケースをカバーする必要があります。
  • 応答: ユーザーにレンダリングする応答です。

2番目のダイアログアクト: このダイアログアクトを2番目のダイアログアクト(Offer Next APIまたはRequest Alt)とデイジーチェーン接続できます。

Confirm API

API定義に属する必須のAPI引数(すべて)と任意のAPI引数(任意の数)をAlexaがユーザーに確認していることを表します。ユーザーが肯定すると、これらの引数を使用してAPIが呼び出されます(ただし、このターンではAPIは呼び出しません)。この機能を使用するには、API SuccessAPI FailureダイアログアクトとAPIの引数を確認するターンより前に、特定のAPIを呼び出すダイアログがそれぞれ必要です。

後続のユーザー入力ターンでユーザーが肯定すると、ダイアログは続行されます。ユーザーが否定すると、ダイアログは終了し、ビルトイン応答reqmoreがレンダリングされて会話が継続されます。

Confirm APIDenyパスでダイアログを作成する必要はありません。これは、否定的なユースケースをユーザーが明示的に指定しなかった場合、Alexa Conversationsがユーザーに代わってこれらを自動的にサポートするためです。

例: 「{date}の{city}の天気ですね?」

その他の必須フィールド:

  • 確認するAPI: ユーザーに確認する引数を含むAPI定義です。
  • 確認するAPI引数: ユーザーに確認する引数です。引数は確認するAPIに属します。これには、必須引数(すべて)と任意の引数(任意の数)が含まれます。
  • 応答: ユーザーにレンダリングする応答です。

その他の応答: これらの応答も同じダイアログアクトの確認するAPIに関連付けられます。任意の引数と、関連する作成済みの応答の組み合わせが自動的に入力されます。

制限事項:

  • Confirm APIDenyパスは、否定された引数を肯定されたかのように転送します。
  • このダイアログアクトを使用して、プロパティを持つスロットタイプの引数を確認することはできません。

Confirm Args

任意のAPI定義に属する1つ以上のAPI引数をAlexaがユーザーに確認していることを表します。これらの引数は、最終的にAPIを呼び出すために使用されます(ただし、このターンではAPIは呼び出しません)。この機能を使用するには、特定の引数を確認する各ダイアログの前に、Request Argsダイアログアクトと引数を提供するターンが必要です。

後続のユーザー入力ターンでユーザーが肯定すると、ダイアログは続行されます。ユーザーが否定すると、Alexaは同じ引数セットに対して再度Request Argsで引数をリクエストします。Confirm Args Denyパスでダイアログを作成する必要はありません。これは、否定的なユースケースをユーザーが明示的に指定しなかった場合、Alexa Conversationsがユーザーに代わってこれらを自動的にサポートするためです。

この確認は、確認するAPI引数フィールドで指定された引数名と同じ引数を持つダイアログとAPIすべてに自動的に適用されます。

例: 「都市は{city}でいいですか?」

フィールド:

  • 確認するAPI引数: ユーザーに確認する引数です。引数はいずれかのAPI定義(必須または任意)に属します。少なくとも1つの引数が必要です。
  • 応答: ユーザーにレンダリングする応答です。

その他の応答: これらの応答も同じダイアログアクトのリクエストするAPIに関連付けられます。引数と、関連する作成済みの応答の組み合わせが自動的に入力されます。確認する引数のセットごとに、同じ引数セットでのRequest Argsターンが必要です(Confirm ArgsDenyパスをサポートするため)。

制限事項:

  • このダイアログアクトを使用して、プロパティを持つリストタイプまたはスロットタイプの引数を確認することはできません。

Offer Next API

会話を続けるために、別のAPIを呼び出すダイアログパスをAlexaがユーザーに提供していることを表します(ただし、このターンではAPIは呼び出しません)。このダイアログアクトは、前のターンがAPI SuccessAPI FailureダイアログアクトのAlexa応答ターンである場合、またはこのターンがAPI SuccessAPI Failureダイアログアクトとデイジーチェーン接続されている場合にのみ有効です。

後続のユーザー入力ターンでユーザーが肯定すると、Offer Next APIへのパスでダイアログが続行されます。ユーザーが否定すると、ダイアログは終了し、ビルトイン応答reqmoreがレンダリングされて会話が継続されます。

Offer Next APIDenyパスでダイアログを作成する必要はありません。これは、否定的なユースケースをユーザーが明示的に指定しなかった場合、Alexa Conversationsがユーザーに代わってこれらを自動的にサポートするためです。

例: (スタンドアロン。前のターンはAPI Successダイアログアクト): 「{date}の{city}の1時間ごとの予報をご希望ですか?」

例:API Successダイアログアクトとデイジーチェーン接続): 「{response.date}の{response.city}の気温は{response.temperature}度です。1時間ごとの予報をご希望ですか?」

フィールド:

  • 次に提供するAPI: ユーザーに提供するAPI定義へのダイアログパスです。
  • 次にリクエストするAPI引数: ユーザーがリクエストする、次に提供するAPI(必須または任意)に属する引数です。このフィールドはオプションです。指定した場合、後続のユーザー入力ターンは、引数を提供ダイアログアクトを使用する必要があります。
  • 渡す応答引数次に提供するAPIに渡す応答引数です。

制限事項:

  • このダイアログアクトをスタンドアロンのダイアログアクトとして使用する場合、次にリクエストするAPI引数は機能しません。このダイアログアクトがデイジーチェーン接続されている場合は、次にリクエストするAPI引数が機能します。
  • Offer Next API Denyパスは、否定された引数を肯定されたかのように転送します。
  • プロパティを持つスロットタイプの変数または引数を引数を提供するAPIに渡すことはできません。
  • 引数を提供するAPIに変数を渡すことはできません。また、応答引数と引数を提供するAPIの名前が同じ場合のみ、引数を提供するAPIに応答引数を渡すことができます。
  • これが2つ目のダイアログアクトの場合、複雑な値がサポートされます。値には任意の応答引数を指定でき、複合値もサポートされます。

Request Alt

Alexaが同じAPIを呼び出すダイアログパスを提供し、指定された引数をリクエストしていることを表します(ただし、このターンではAPIは呼び出しません)。このダイアログアクトは、このターンがAPI Failureダイアログアクトとデイジーチェーン接続されている場合にのみ有効です。

例:API Failureダイアログアクトとデイジーチェーン接続)「すみません。それは過去の日付です。別の日の天気を知りたいですか?」

フィールド:
リクエストする引数: リクエストする引数です。

Request Args

API定義に属する1つ以上の引数をAlexaがユーザーに確認していることを表します。これらの引数は、最終的にAPIを呼び出すために使用されます(ただし、このターンではAPIは呼び出しません)。このダイアログアクトは、リクエストするAPIフィールドで指定されたAPIに関連付けられており、引数名が同じでも他のAPIには使用されません。

例: 「どの都市ですか?」「どの都市のどの日ですか?」

フィールド:

  • リクエストするAPI: ユーザーからリクエストされる、引数を含むAPI定義です。
  • リクエストするAPI引数: ユーザーからリクエストされる、リクエストするAPI(必須または任意)に属する引数です。少なくとも1つの引数が必要です。
  • 応答: ユーザーにレンダリングする応答です。

その他の応答: これらの応答も同じダイアログアクトのリクエストするAPIに関連付けられます。引数と、関連する作成済みの応答の組み合わせが自動的に入力されます。このターンには、個々の必須引数に対する応答を含める必要があります(ユーザー主導のエラー修正などの機能をサポートするため)。