あなたのAlexaダッシュボード 設定

スキルビルダー(ベータ版)によるインテント、スロット、ダイアログの定義

Alexaに新しい機能を追加するには、Alexa Skills Kitでカスタムスキルを作成します。カスタムスキルを作成するときには、スキルのロジックを実装し、ユーザーがスキルと対話するために使用する音声インターフェースも定義します。音声インターフェースを定義するには、ユーザーの音声入力を、クラウドベースのサービスで処理可能なインテントにマッピングします。

このマッピングを宣言するためには、次の入力を指定します。

  1. インテント:インテントとは、ユーザーの音声によるリクエストを満たすアクションを表します。インテントでは、スロットという引数を任意で使用することもできます。
  2. サンプル発話:発話される可能性があり、インテントにマップされるフレーズのセット。これには、可能な限り多くの代表的なフレーズを含めます。
  3. カスタムスロットタイプ:スロットに指定可能な値の代表的なリスト。カスタムスロットタイプは、Amazonの標準スロットタイプの1つではカバーされない項目のリストに使用されます。
  4. ダイアログモデル(任意):各インテントを実行するために必要なすべての情報を収集するための、スキルとユーザーの間のマルチターンの会話の手順を指定する構造。これにより、ユーザーに情報を求めるために書かなくてはいけないコードが簡素化されます。

このドキュメントでは、スキルビルダー(ベータ版)という、スキルの設計を支援するビジュアルインターフェースを使用してこれらのコンポーネントを作成する方法について説明します。

インテント、スロット、およびダイアログについて

このセクションでは、対話モデルのコンポーネントの概要を示します。

インテントとスロット

インテントとは、ユーザーの音声によるリクエストを満たすアクションを表します。インテントでは、スロットという引数を任意で使用することもできます。たとえば、旅行を計画するスキルで、fromCitytoCity、およびtravelDateという名前のスロットを含むPlanMyTripという名前のインテントを定義することができます。ユーザーが次のように話すとします。

ユーザー: アレクサ、トリッププランを開いて次の金曜日にシアトルからポートランドまでの旅行を計画して

Alexaサービスは、トリッププランサービスにPlanMyTripインテントを送ります。その際、fromCityスロットには値「シアトル」、toCityスロットには「ポートランド」、travelDateスロットには次の金曜日の日付を指定します。サービスはこの情報を保存し、テキストを送り返して音声に変換します。

スキルビルダーを使用して、インテントとスロットを定義することができます。または、開発者ポータルでJSONインテントスキーマを作成し、「Interaction Model」タブにコピーすることもできます。

スロットは、異なるタイプで定義されます。上記の例のtravelDateスロットはAmazonの標準AMAZON.DATEタイプを使用して日付(「今日」や「次の金曜日」)を示す単語を日付形式に変換します。fromCitytoCityはどちらも標準AMAZON.Cityスロットを使用します。旅行でどのようなアクティビティを予定しているかユーザーに尋ねるようこのスキルを拡張した場合、カスタムスロットタイプLIST_OF_ACTIVITIESを追加して、「ハイキング」、「ショッピング」、「スキー」などのアクティビティのリストを参照することができます。

Amazonは、多数のスロットタイプを収めたライブラリを標準でサポートしています。たとえば以下のような要件があります。

標準タイプにはすべてプレフィックス「AMAZON」が付きます。

スキルの設計およびインテントとスロットの識別の詳細については、設計プロセスを参照してください。

サンプル発話

サンプル発話は、ユーザーがインテントを呼び出す際に使う単語やフレーズを指定します。各インテントは、複数の発話にマッピングされています。発話内で、スロットは波括弧で表されます。たとえば、PlanMyTripの発話には、次のようにtoCityスロットが含まれます。

{toCity} に行きたい。

スキルビルダーを使用して、インテントのサンプル発話を作成することができます。または、インテントと発話の間のテキストマッピングを作成し、開発者ポータルの「Interaction Model」タブにコピーすることもできます。

マルチターンの会話とダイアログモデル

ユーザーとのダイアログとは、Alexaによる質問とユーザーによる回答で成り立つAlexaとユーザーの間のマルチターンの会話を指します。会話は、ユーザーのリクエスト全体を表す特定のインテントと結び付けられています。質問と回答の目的は、インテントの必須スロットの値をすべての収集することです。インテントのすべての必須のスロットの指定と確認が完了するまで会話は続きます。

スキルビルダーを使用して、ダイアログモデルを定義することができます。ダイアログモデルでは以下を確認できます。

  • 必須スロット: インテントを実行するために、有効な値を受け取る必要があるスロット。
  • Alexaが必須スロットの値を求めて話すプロンプトと、ユーザーが回答で話すことのできる発話。
  • 続行する前に必須スロットをユーザーが確認する必要があるかどうか。
  • 続行する前にインテント全体をユーザーが確認する必要があるかどうか。
  • Alexaがスロットとインテントの確認を求めて話すプロンプト。

スキルでダイアログモデルを使用するには、Dialog.Delegateディレクティブを返してください。Alexaはその次の手順を判別し、定義されているプロンプトを使用してユーザーに情報を求めます。こうすることで、ユーザーにスロット値と確認を求める独自のコードを作成する代わりに、会話をAlexaに委任することができます。

会話を手動で管理することもできます。また、両方のオプションの組み合わせて使用することもできます。詳細についてはユーザーとの会話の管理についてを参照してください。

ダイアログモデルを作成するには、スキルビルダーを使用する必要があります。

スキルビルダー(ベータ版)には、スキル用にインテント、スロット、スロットタイプ、およびダイアログモデルを作成するためのビジュアルツールが備えられています。

The skill builder (beta) user interface
スキルビルダー(ベータ版)ユーザーインターフェース
説明

A.

Dashboard」は、スキルビルダー(ベータ版)を開始するときに表示されます。これまでに作成したすべてのインテントとスロットのタイプの概要が示されます。

B.

左側のナビゲーションは、すべてのページで表示されます。ここから「Dashboard」、「Intents」、および「Slot Types」に移動することができます。「ADD +」リンクを使用して、ナビゲーションから新しいインテントまたはスロットタイプを作成します。

C.

インテントを選択して、サンプル発話、スロット、およびダイアログ情報を編集します。「Intents」リストには、スキルの対話モデルに含まれるすべてのインテントが含まれています。

インテントを展開し、そのすべてのスロットを表示します(インテントスロット)。スロットを選択し、そのタイプとダイアログの情報を編集します。

D.

スロットタイプを選択し、値のリストを編集します。これにより、スキルに追加したすべてのスロットタイプが表示されます。たとえば以下のような要件があります。

  • 定義したすべてのカスタムスロットタイプ。
  • モデルに追加した、または追加の値で拡張した標準スロットタイプ。

E.

Save Model」をクリックして作業を保存し、「Build Model」をクリックして対話モデルをビルドします。「Save Model」は、データが有効でビルド可能かどうかに関係なくデータを保存します。「Build Model」は、対話モデルを検証、保存、およびビルドします。

F.

開発者ポータルの残りのページに戻り、スキルを構成テスト、および認証を申請します。

対話モデルとダイアログモデルの作成の手順の概要

スキルビルダー(ベータ版)は、各インテント、スロット、発話、および(任意で)Alexaがユーザーと会話してスロット値を収集および確認するときに使用するプロンプトを定義します。

スキルで作成するインテントが決まったら、スキルビルダーで以下の手順に従ってください。詳細については、各セクションのリンクを参照してください。

  1. 開発者ポータルでスキルを作成し、スキルビルダーを開きます
  2. インテントを作成し、最初の発話をいくつか作成します。インテントは、特定のユーザーリクエストを表します(たとえば、旅行に関する情報を収集してリストに保存するPlanMyTripインテントなど)。
  3. 最初の発話を確認し、可変情報を表す単語やフレーズを識別します。これらの単語の新しいインテントスロットを作成し、発話にあるその単語をスロット表記に置き換えます。
  4. それら特定したスロットに対して適切なスロットタイプを選択または作成します
  5. 各インテントスロットで、リクエストを実行するためにスロット値が必須かどうかを決定します。Alexaがスロットの情報を引き出すために会話で使用するプロンプトと発話を作成します。
  6. 必須のスロットごとに、スキルがリクエストを完了する前にユーザーが明示的にスロット値を確認する必要があるかどうか決定します。確認を求めるためにAlexaが使用するプロンプトを作成します。
  7. インテント全体で、スキルがリクエストを完了する前にユーザーがアクションを明示的に確認する必要があるかどうか決定します。確認を求めるためにAlexaが使用するプロンプトを作成します。
  8. インテントの定義が完了したら、対話モデルとダイアログモデルを保存してビルドします
  9. スキルの作成を続行します。

    • スキルのコードを作成するとき、必須のスロットの指定と確認をユーザーに求める処理をAlexaに任せるには、Dialog.Delegateを返します。
    • ユーザー情報を収集および確認する他の方法については、ユーザーとの会話の管理についても参照してください。

スキルの操作のためのスキルビルダー(ベータ版)の起動

新しいスキルでのスキルビルダー(ベータ版)の使用

  1. 開発者ポータルのAlexaセクションにログインします。開発者ポータルのコンソールページで、「Alexa」をクリックします。
  2. 「Alexa Skills Kit」ボックスで、「Get Started」をクリックして「Alexa Skills Kit」ページを開きます。作成済みのスキルがすべて表示されます。

  3. 新しいスキルを作成し、「Skill Information」ページの以下の必須フィールドに入力します。
    • Skill Type(「Custom Interaction Model」を選択します)
    • Language
    • Name
    • Invocation Name
  4. Save」をクリックし、新しいスキルを保存します。
  5. Interaction Model」をクリックします。
  6. Try the Skill Builder(Beta)」ボタンをクリックします。

特定のスキルのスキルビルダーを開いた後、開発者ポータルの「Interaction Model」をクリックして戻ります。

既存のスキルでのスキルビルダー(ベータ版)の使用

スキルビルダーで既存のスキルを編集することもできます。開発者ポータルでスキルを開き、「Interaction Model」タブに移動し、「Try the Skill Builder(Beta)」ボタンをクリックします。

Interaction Model」ページで事前に定義したインテント、スロットタイプ、およびサンプル発話がスキルビルダーに表示されます。この情報は、通常どおり確認および変更することができます。

特定のスキルのスキルビルダーを開いた後、開発者ポータルの「Interaction Model」をクリックして戻ります。

標準「Interaction Model」ページへのリバート

スキルビルダー(ベータ版)を使用しない場合、標準「Interaction Model」ページに戻り、インテントスキーマをJSONで、サンプル発話をテキストで定義することができます。

スキルビルダーで作成したインテント、サンプル発話、およびスロットタイプは保存され、「Interaction Model」ページで使用できます。インテントスキーマJSON、カスタムスロットタイプ、およびサンプル発話形式については、対話モデルのリファレンスを参照してください。これらのコンポーネントに変更を加えた場合は、戻る前に「Build Model」をクリックしてその変更を保存してビルドします

標準「Interaction Model」ページに戻るには、左側のナビゲーションの「Dashboard」をクリックし、ページ下部の「Leave Beta Preview」ボタンをクリックします。

インテント、発話、およびスロットの作成

新しいカスタムインテントを作成するときには、インテントの名前とユーザーがこのインテントを呼び出すための発話のリストを指定します。まずフレーズ全体を書いて、後からフレーズ内のスロットとする部分を指定することができます。

たとえば、旅行を計画するインテント(PlanMyTrip)の場合、次のように発話を作成できるかもしれません。

金曜日に旅行にいきます。
ポートランドに旅行に行きたい。
来週の木曜日にシアトルからポートランドに旅行に行きたい。
シアトルからポートランドにドライブ中です。
ハイキングするためにポートランドにドライブ中です。

優れたサンプル発話を作成するための推奨事項については、サンプル発話とカスタムスロットの値を作成する際のベストプラクティスを参照してください。

新しいカスタムインテントを作成するには、次のようにします。

  1. 左側のナビゲーションで、「Intents」の隣にある「ADD +」をクリックします。
  2. Create a new custom intent」オプションを選択します。
  3. 新しいインテントの名前を入力し、「Create Intent」をクリックします。これにより、新しいインテントが追加され、その詳細ページが開きます。そのページには、インテントのサンプル発話とスロットが表示されます。
  4. 編集ボックスにサンプル発話を入力し、「+」をクリックするか、Enterを押します。いくつかの代表的な発話でこれを繰り返します。

    ユーザーがインテントを音声で指定するときに差し替えられる単語やフレーズが入った発話を含めるようにします。上記の例では、「金曜日」、「サンフランシスコ」、「シアトル」、「来週の木曜日」などの単語とフレーズがこれに含まれます。

  5. 以下で説明されている発話のスロットを識別します。
Alexa Skills Kitには、多数のビルトインインテントが収められたライブラリが含まれています。独自のライブラリを作成する代わりにこれを使用することができます。これらのインテントでは発話を作成する必要がないので、開発が簡単になります。

スキルビルダー内で、ビルトインインテントの完全なライブラリを検索することができます。「Intents」の隣にある「ADD +」をクリックし、「Use an existing intent from Alexa’s built-in library」オプションを選択します。追加する各ビルトインインテントのチェックボックスを選択し、「Add Intent」をクリックします。

インテントのスロットの識別

いくつかの発話を作成したら、可変情報を表す単語またはフレーズをメモしてください。それがインテントのスロットになります。たとえば、前述の発話の場合は、redで強調されている部分が可変情報です。

金曜日に旅行にいきます。
ポートランドに旅行に行きたい。
来週の木曜日シアトルからポートランドに旅行に行きたい。
シアトルからポートランドドライブ中です。
ハイキングするためにポートランドドライブ中です。

そのような単語またはフレーズごとにスロットを作成し、元の単語を波括弧({ })付きのスロット名で置き換えます。

  1. 左側のナビゲーションからインテントを選択し、詳細ページを開きます。
  2. サンプル発話のスロット値を表す単語またはフレーズをハイライトします。
  3. 表示されるドロップダウンの編集ボックスにスロットの名前を入力し、「+」をクリックします。

    これにより、インテントの新しいスロットが作成され、発話内にある元の値が波括弧({ })付きのスロット名で置き換えられます。

    上記の例では、「シアトル」がユーザーの希望する出発地なので、このスロットをfromCityとします。発話は次のようになります。

    来週の木曜日に{fromCity} からポートランドに旅行したい。
  4. 残りの可変単語すべてで繰り返します。

    PlanMyTripインテントでは、スロットは最終的に次のようになります。

    • fromCity
    • toCity
    • travelDate
    • travelMode
    • activity

スロットを追加するたびに右側の「Intent Slots」ペインに表示されます。発話で単語またはフレーズを強調すると、新しいスロットを追加したり、既存のスロットを選択したりできるようになります。

たとえば、前述の発話のセットは次のようになります。

{travelDate}に旅行に行きます。
{toCity}に旅行に行きたい。
{travelDate}{fromCity}から{toCity}まで旅行行きたい。
{fromCity}から{toCity}{travelMode}中です。
{activity}するために{toCity}{travelMode}です。

スロットへのスロットタイプの割り当て

すべてのスロットには、ユーザー入力を処理する方法およびスキルに渡す方法を決めるスロットタイプがあります。スロットタイプの割り当ては、インテントの詳細ページまたはスロットのスロット詳細ページから行えます。スロットタイプを割り当てるとき、以下を行えます。

  • 標準スロットタイプを使用できます。標準タイプには、日付などのデータを変換するタイプや、一般的に使用される値(大都市など)のリストを認識できるようにするタイプが含まれます。これらのタイプの中には、追加の値で拡張できるものもあります。
  • カスタムスロットタイプを作成します。この場合、スロットタイプの名前とカスタム値のリストを提供します。

スロットタイプを割り当てるには、次のようにします。

  1. 左側のナビゲーションからインテントをクリックし、インテントの詳細ページを開きます。
  2. 右側の「Intent Slots」で、スロットの1つのスロット名の下にある「Choose a slot type」メニューをクリックします。次のようにスロットの詳細ページを開くこともできます:左側のナビゲーションで、インテントとスロットのリストを見つけます。スロット名をクリックします。
  3. 既存のカスタムスロットタイプまたは標準タイプの1つを使用するには、リストからタイプを選択します。
  4. 新しいカスタムスロットタイプを作成するには、リスト下部の編集ボックスにタイプの名前を入力し、「+」をクリックするか、Enterを押します。カスタムスロットタイプとスロット値の追加の詳細については、カスタムスロットタイプの作成と編集を参照してください。

カスタムスロットタイプの作成と編集

カスタムスロットタイプは、スロットの代表的な値のリストを定義します。カスタムスロットタイプは、Amazonの標準タイプのセットではカバーされない項目のリストに使用されます。カスタムタイプを使用する場合は、タイプと値を定義し、インテントの定義の一部としてタイプ名を指定します。

引き続き、PlanMyTripインテントの例で考えてみましょう。activityスロットタイプで使用する旅行アクティビティのカスタムスロットタイプを定義するとします。タイプの名前をLIST_OF_ACTIVITIESとします。このタイプには次の値が含まれます。

サイクリング
キャンプ
ハイキング
レース
ランニング
ショッピング
スキー
サーフィン
スイミング

これらは、「私はハイキングに行くためにポートランドに行きます。」や「私はハイキングをするためにポートランドに行きます。」などの発話をサポートします。

カスタム値のセットは、ユーザーが言うことができる言葉であれば、スキルのスロット処理でサポートされるあらゆる値を使用できます。ただし、スキルの言語の一般的な辞書にない単語は、認識されない可能性があります。

スロット値は、文字形式でスキルに送信されます。たとえば、「Fire HD7」の場合、「fire h.d.7」および「fire h.d. seven」がスキルに送信されます。認識率を向上させるため、頭字語や個々に発音されるアルファベットは、すべて大文字にする(「HD」)か、ピリオドで区切る(「h.d.」)必要があります。頭字語に小文字を使うと、発音が正しく検出されないために認識率が低下する可能性があります。例を参照してください

カスタムスロットタイプは、列挙型と同じではありません。リストにない値でも、音声言語認識システムに認識されれば、返されます。カスタムスロットタイプへの入力はリストの値に偏重されますが、リストの項目だけに限られるわけではありません。コードでスロット値の検証とエラーチェックを行う必要があります。「Alexaから送信されたリクエストを処理する」の「想定される入力エラーを処理する」のセクションを参照してください。

推奨されるカスタムスロットタイプの値については、カスタムスロットタイプの値を参照してください。

同じスキルの複数のスロットで同じカスタムスロットタイプを使用できます。

スキルビルダー(ベータ版)のスロットタイプ

左側のナビゲーションの「Slot Types」セクションには、スキルに追加したすべてのスロットタイプが表示されます。たとえば以下のような情報があります。

  • 定義したすべてのカスタムスロットタイプ。
  • モデルに追加した、または追加の値で拡張した標準スロットタイプ。

スロットタイプを選択し、その名前を変更するか、値のリストを更新します。タイプを選択すると、右側の「Intent Slots」ペインに、現在そのタイプを使用しているすべてのスロットが表示されます。

スロットタイプ名:カスタムスロットタイプ名には英字と下線(“_”)のみを指定できます。ドット文字(.)は、標準タイプでのみ使用できます(たとえば AMAZON.City)。

カスタムスロットタイプの追加または編集

新しいカスタムスロットタイプを追加するには、次のようにします。

  1. 左側のナビゲーションで、「Slot Types」の隣にある「ADD+」ボタンをクリックします。
  2. Create a new custom slot type」オプションを選択します。
  3. スロットタイプの名前を入力し、「Create Slot Type」をクリックします。
  4. それぞれの値を入力し、「+」をクリックするか、Enterを押します。推奨されるスロットタイプの値については、カスタムスロットタイプの値を参照してください。
  5. 値を保存した後、スロット値にスロット値のIDと同義語を追加することができます。
    • 値の「ID」列をクリックし、そのIDを編集します。
    • 値の「Synonyms」列をクリックして同義語を入力し、「+」をクリックするか、Enterを押して保存します。

    スロットタイプ値のIDと同義語の使用の詳細については、スロットタイプ値の同義語とIDの定義(エンティティ解決)を参照してください。

スロットタイプ値を編集するには、次のようにします。

  1. 左側のナビゲーションの「Slot Types」の下で、編集するスロットタイプを選択します。
  2. それぞれの値を入力し、正符号をクリックするか、Enterを押します。スロットタイプ値の推奨事項については、サンプル発話とカスタムスロットタイプの値を作成する際のベストプラクティスを参照してください。
  3. 値の「ID」列をクリックし、そのIDを編集します。
  4. 値の「Synonyms」列をクリックして同義語を入力し、正符号をクリックするか、Enterを押して保存します。

カスタムスロットタイプの名前を変更するには、次のようにします。

  1. 左側のナビゲーションの「Slot Types」の下で、編集するスロットタイプを選択します。
  2. スロットタイプ名の隣にある鉛筆アイコンをクリックします。名前を編集し、+をクリックするか、Enterを押します。

スロットタイプ値の同義語と一意の識別子

カスタムスロットタイプの各値には、一意の識別子と設定済みの同義語があります。これにより、複数の発話を1つに結び付けることができ、ユーザーが話す値に関係なく、共通IDと値をIntentRequestで取得することができます。たとえば、特定のメディアタイプを収集するMEDIA_TYPEスロットでは、ユーザーは「楽曲」、「トラック」、または「シングル」と話すことができます。これら3つの発話すべてを、一意の識別子SONGを使って1つのスロット値「楽曲」に結び付けることができます。

同義語とIDの仕組みの詳細については、スロットタイプ値の同義語とIDの定義(エンティティ解決)を参照してください。

追加の値による標準スロットタイプの拡張


標準リストスロットタイプのサブセットに独自のカスタム値を追加することができます。値を指定し、Amazonが定義した標準値に追加します。たとえば、AMAZON.Cityは、日本人が一般的に使用する都市を認識できるようにします。含まれていない可能性があるより小さな町など、追加の都市を収集する必要がある場合、タイプを拡張することにより、リストに追加することができます。その後、スロットは、元の値のセットと、追加したカスタム値を認識します。

標準スロットタイプに追加する値の同義語とIDを定義することもできます。詳細については、標準スロットタイプのエンティティ解決を参照してください。

標準スロットタイプの拡張は、特定のスキルにのみ適用されます。たとえば、1つのスキルで追加の都市を指定してAMAZON.Cityを拡張しても、それらの変更はAMAZON.Cityを使用する他のスキルには適用されません

スロットタイプを拡張するには、次のようにします。

  1. 左側のナビゲーションで、「Slot Types」の隣にある「ADD+」ボタンをクリックします。
  2. Use existing slot type from Alexa’s built-in library」オプションを選択します。
  3. 拡張したいスロットタイプを探します。
    • スロットタイプは、名前で絞り込むことができます。
    • List Type」スロットタイプのサブセットは拡張可能です。拡張可能タイプのリストを参照してください。
  4. 拡張するタイプのチェックボックスを選択し、「Add Slot Types」をクリックします。これで、モデルにタイプが追加されます。
  5. 左側のナビゲーションで、追加したスロットタイプを選択します。カスタムスロットタイプで行うのと同じように値を入力します。それぞれの値を入力し、正符号をクリックするか、Enterを押します。

    値を入力するための編集ボックスがスロットタイプに表示されない場合、タイプを拡張できないことを意味します。拡張可能タイプのリストを参照してください。

必須の情報を収集および確認ダイアログの定義

スロット値を収集および確認するためのコードを単純化するために、ダイアログモデルを作成します。このモデルでは、必須のスロットと、スロット値を収集および確認するためのプロンプトを指定します。これらのプロンプトをユーザーとのダイアログで使用するには、受け取るIntentRequestに対して、Dialog.Delegateディレクティブで回答します。Alexaは、ダイアログ内の次の手順を判別し、適切なプロンプトを使用してユーザーに情報を求めます。

ダイアログモデルには、3つのコンポーネントがあります。

  • 必須のスロットとプロンプト:必須のスロットは、ユーザーのリクエストを実行するためにスキルに必須の情報を表します。たとえば、PlanMyTripインテントが旅の詳細をリストに保存するためには、少なくとも出発地fromCity)、目的地toCity)、および日付travelDate)が必要です。Alexaがスロット値を求める順序を制御することができます。
  • スロットの確認プロンプト:任意で、必須のスロットを要確認として指定することもできます。これは、次に進む前にユーザーが「はい/いいえ」の回答でスロット値を確認する必要があることを意味しています。頻繁に確認を求められるとユーザーは煩わしく感じるかもしれないため、このプロンプトは慎重に使用してください
  • インテントの確認プロンプト:インテント全体で確認を必須と指定することができます。これは、製品の注文や予約を行うスキルの場合に一般的です。このプロンプトは通常、事前に入力されたすべての情報をユーザーに再び繰り返し、ユーザーが確認できるようにします。このプロンプトもユーザーを煩わせないよう、慎重に使用する必要があります。

ダイアログのシナリオの詳細については、ユーザーとの会話の管理についてを参照してください。

必須のスロットとプロンプトの識別

スロットが必須な場合、ユーザーのリクエストを完了する前に、スキルに有効な値を用意しておく必要があります。

Alexa Prompts」と「User Utterances」を定義してこれらの値を収集します。ユーザーとのダイアログでこれらのプロンプトと発話を使用するには、Dialog.Delegateディレクティブを返します。

セクション 説明

Alexa Prompts

Alexaがユーザーにスロット値を尋ねる質問。

  • プロンプトは、この1つのスロットの収集に特化したものとする必要があります。
  • 複数のプロンプトを提供する場合、Alexaはランダムで1つを選択します。これにより、Alexaはより会話的で、人間的になります。
  • 会話スタイルを使用してプロンプトを作成します。
  • プロンプトの一般的なアドバイスについては、Alexaが話す内容を参照してください。

これらのプロンプトではまだSSMLがサポートされていません。ただし、ピリオドや疑問符などの通常の句読点は使用できます。

fromCityスロットでは、プロンプトは次のようになる可能性があります。

出発地はどちらですか?

User Utterances

プロンプトで提供される質問に回答するためにユーザーが話すことができる発話。

  • Alexaがユーザーにスロットの内容を尋ねるとき、サービスはここに指定された回答の発話を聞き取ろうとして音声モデルにバイアスをかけます。これは、Dialog.DelegateDialog.ElicitSlotのいずれかを返すときに発生します。
  • 発話の表す内容は、質問に対する答え方としてユーザーが最も選びそうなものにしてください。
  • スロット名を識別するには、標準波括弧({ })のスロット表記を使用します。
  • 周りのテキストを含まない、スロット値だけの発話を組み込むことができます。この場合も、波括弧表記を使用します。スロット値のみで構成される発話は、スロットのための発話としてのみ使用できます。この発話をインテント全体の発話では使用しないでください。

fromCityスロットでは、発話は次のようになる可能性があります。

{fromCity}
{fromCity}から
{fromCity}から出発
{fromCity}からスタート

上記の例は、fromCityスロットで次のような会話をサポートします。

ユーザー: アレクサ、トリッププランに金曜日に旅行と伝えて。 (この発話には、1つの必須のスロット(travelDate)の値が含まれていますが、fromCitytoCityがありません。)
トリッププラン: 出発地はどこですか? fromCityに対して定義されているAlexaプロンプトの1つ。)
ユーザー:シアトルから出発します。

必須のスロットのプロンプトと発話を編集するには、次のようにします。

  1. スロットの詳細ページを開きます。左側のナビゲーションで、インテントとそのスロットのリストを見つけ、スロット名をクリックします。インテントの詳細ページから開始する場合、右側の「Intent Slots」スロットの鉛筆アイコンをクリックします。

  2. Is the slot required to fulfill the intent」で「Yes」を選択します。
  3. Prompts」セクションと「Utterances」セクションに入力します。

スロットの確認の有効化

スロットで確認が必要な場合、スキルはユーザーが「はい」または「いいえ」でスロット値を確認するよう求める必要があります。

Alexa Prompts」のセットを定義して、この確認をユーザーから取得します。ユーザーとのダイアログでこれらのプロンプトを使用するには、Dialog.Delegateディレクティブを返します。

セクション 説明

Alexa Prompts

Alexaがユーザーにスロット値を確認するための質問。

  • プロンプトは、この1つのスロットの確認に特化したものとする必要があります。インテント全体の最終確認を行う必要がある場合は、インテントの確認を参照してください。
  • プロンプトはユーザーが「はい」か「いいえ」で回答できる尋ね方にする必要があります。
  • 複数のプロンプトを提供する場合、Alexaはランダムで1つを選択します。これにより、Alexaはより会話的で、人間的になります。
  • プロンプトのスロット名を波括弧({ })に入れます。プロンプトを話すとき、Alexaはこのトークンを、ユーザーが先に指定した値で置き換えます。

これらのプロンプトではまだSSMLがサポートされていません。ただし、ピリオドや疑問符などの通常の句読点は使用できます。

fromCityスロットでは、確認プロンプトは次のようになる可能性があります。

        {fromCity}から出発でよろしいですか?
{fromCity}からの出発と聞こえましたが合ってますか?
{fromCity}から出発と仰いましたでしょうか?

上記の例は、fromCityスロットで次のような会話をサポートします。

ユーザー: アレクサ、トリッププランに金曜日にシアトルからポートランドに旅行したいと伝えて (この発話には、すべての必須のスロット(fromCitytoCityおよびtravelDate)の値が含まれます。)
トリッププラン: シアトルからの出発でよろしいでしょうか? fromCityスロット値の確認プロンプト。)
ユーザー: はい。
Dialog continues…

必須のスロットの確認を有効にするには、次のようにします。

  1. スロットの詳細ページを開きます。左側のナビゲーションで、インテントとそのスロットのリストを見つけ、スロット名をクリックします。インテントの詳細ページから開始する場合、右側の「Intent Slots」スロットの鉛筆アイコンをクリックします。

  2. Does this slot require confirmation?」に対して「Yes」を選択します。
  3. Prompts」セクションにプロンプトを入力します。

インテントの確認の有効化

インテント全体で確認が必要な場合、スキルはインテントが取ろうとしているアクションを「はい」か「いいえ」で確認するようユーザーに求める必要があります。

Alexa Prompts」のセットを定義して、ユーザーからこの確認を得ます。ユーザーとのダイアログでこれらのプロンプトを使用するには、Dialog.Delegateディレクティブを返します。

セクション 説明

Alexa Prompts

Alexaがユーザーにインテント全体を確認するための質問。

  • プロンプトは、インテント全体の確認に特化したものとする必要があります。
  • プロンプトはユーザーが「はい」か「いいえ」で回答できる尋ね方にする必要があります。
  • 複数のプロンプトを提供する場合、Alexaはランダムで1つを選択します。これにより、Alexaはより会話的で、人間的になります。
  • すべての必須のスロットを波括弧({ })に入れて、プロンプトに含めます。プロンプトを話すとき、Alexaはこれらのトークンを、先に指定されたスロット値で置き換えます。

これらのプロンプトではまだSSMLがサポートされていません。ただし、ピリオドや疑問符などの通常の句読点は使用できます。

PlanMyTripインテントでは、確認プロンプトは次のようになる可能性があります。

{travelDate}の{fromCity}から{toCity}への旅行を保存します。よろしいですか?
{travelDate}に{fromCity}から{toCity}への旅行でよろしいでしょうか?
{travelDate}の{fromCity}から{toCity}への旅行を保存しますがよろしいでしょうか?

上記の例は、PlanMyTripインテントで次のような会話をサポートします。

fromCity, toCity, travelDateは以前に確認済み。
トリッププラン: 4月21日のシアトルからポーランドへの旅行を保存します。よろしいでしょうか? (インテントの確認プロンプト)
ユーザー: はい。

インテントの確認を有効にするには、次のようにします。

  1. インテントの詳細ページを開きます。左側のメインペインで、インテントの名前をクリックします。
  2. Intent confirmation」の下で、「Does this intent require confirmation?」に対して「Yes」を選択します。
  3. インテントの「Prompts」に入力します。

インテントスロット順序の設定

Alexaが各必須のスロット値を尋ねる順序を制御することができます。この順序は、インテントの「Intent Slots」ペインに表示されます。

  1. インテントの詳細ページを開きます。左側のメインペインで、インテントの名前をクリックします。
  2. 右側の「Intent Slots」のスロットの順序が確認できます。スロットをドラッグして順序を変更します。

Dialog.Delegateディレクティブを返すときに、Alexaはスロット順序を使用してダイアログの次の手順を決めます。

対話モデルとダイアログモデルの保存とビルド

対話モデルとダイアログモデルを作成および編集するときには、「Save Model」ボタンを使用して作業を保存します。これにより、モデルのビルドを試行せずにデータが保存されます。

対話モデルをテストする準備が整ったら、「Build Model」をクリックして、対話モデルを検証、保存、およびビルドします。モデルのビルドには、数分かかる可能性があります。引き続き変更を加えることはできますが、ビルドには反映されません。ビルドが完了すると、スキルビルダーによって成功メッセージが表示されます。

モデルをテストするには、事前にモデルを正常にビルドしておく必要があります。

残りのスキルを構成する準備が整ったら、右上のボタンを使用して、開発者ポータルの他のセクションに移動します。

対話モデルとダイアログモデルのJSONコードの表示と編集

スキルビルダーを使用するとき、インテントスキーマ、サンプル発話、およびダイアログモデルをJSON形式で表示できます。このコードに直接変更を加え、それを対話モデルに適用することができます。

</>Code Editor」をクリックし、モデルのJSONバージョンを表示します。変更を加えるときには、「Apply Changes」をクリックして、変更をモデルに適用します。