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

Alexa Skills Kitのカスタム対話モデルのリファレンス

Alexaスキルのコンフィギュレーションには、音声インターフェースを定義するための以下の構成要素を含める必要があります。

  1. インテントスキーマ: JSON形式で、スキルが処理するインテントの一覧を定義します。
  2. 音声入力データ:
    • サンプル発話: インテントを、使用される可能性があるフレーズと結び付ける、構造化テキストファイル。このファイルにはフレーズのさまざまな言い方も含まれます。
    • カスタム値(カスタムスロットで使用): スキルで使用される特定の項目の値のリスト。カスタムスロットタイプを使用する場合に、インテント内で参照されます。

これらの入力データは、Alexaスキルのコンフィギュレーションの「対話モデル」セクションに入力されます。詳細については、「開発者ポータルでカスタムスキルを登録および管理する」を参照してください。

このドキュメントでは、インテントを定義するためのJSON構造体およびカスタムスロットタイプやサンプル発話の定義に使用するプレーンテキストの構造体へのリファレンスを提供します。これらの構造体を手動で使用して対話モデルを構築する方法の詳細については、「JSONおよびテキストで対話モデルを定義する」を参照してください。スキルの設計およびインテントとスロットの識別の詳細については、設計プロセスを参照してください。

加えて、設計しているAlexaスキルに視覚的な対話やタッチ対話を組み込んでいる場合は、それらの対話が正常に機能するようにインテントスキーマにインテントを追加する必要があります。対話モデルの形式は、それ以外の点では、視覚的な対話やタッチ対話の場合も同じです。

インテントスキーマの構文(JSON)

インテントスキーマは、以下の構文で記述されるJSON構造です。

{
  "intents": [
    {
      "intent": "string",
      "slots": [
        {
          "name": "string",
          "type": "string"
        },
        {
          "name": "string",
          "type": "string"
        }
      ]
    }
  ]
}

インテントスキーマのパラメーター

パラメーター 意味

"intents":[]

スキルに送信できるインテントのリストを指定する配列。

"intent":"string"

インテントの名前を指定する文字列。

インテントの名前には、英字のみ(大文字小文字の区別なし)を指定できます。数字、スペース特殊文字は使用できません。インテントの名前は、スキーマ内のどのスロット名とも重複しないようにしてください。

ビルトインインテントAMAZONネームスペースを使用するため、ピリオドが含まれます。例: AMAZON.HelpIntent。この表記は、AMAZONネームスペースを指定する場合にのみ使用できます。他のインテント名ではピリオドを使用できません。

たとえば、GetZodiacHoroscopeIntentは有効ですが、Get Zodiac Horoscope IntentZodiac.GetHoroscopeIntentGet2015HoroscopeIntentはいずれも無効です。

"slots":[]

インテント内のスロットのリストを指定する配列。

各スロットは、次の2つの項目で構成されます: name および type

スロット名とインテント名は、スキーマのすべてのインテントにおいて重複して使用できません。たとえば、1つのインテントに指定した名前は、スキーマ内のどのスロットにも使用することができません。また、インテント名とスロット名では大文字と小文字が区別されないため、インテント名「ABC」とスロット名「abc」は共存できません。

同じスロット名は、同じ型で同じエンティティを表している場合にのみ、複数のインテントで使用できます。たとえば、「Sign」というスロットは、星占いスキルの複数のインテントで使用できますが、使用する場合は必ず、星座を表し、同じカスタムスロットタイプを持つ必要があります。

このプロパティは、インテントにスロットが含まれる場合にのみ必須です。

スロットをビルトインインテントに対して宣言することはできません。

"name":"string"

個々のスロットの名前を指定する文字列。- スロットの名前には、英字のみ(大文字小文字の区別なし)を指定できます。数字、スペース、特殊文字を使用することはできません。- たとえば、ZodiacSignは有効ですが、Zodiac Sign12-Month\_ZodiacSignはいずれも無効です。

"type":"string"

スロットのタイプを指定する文字列。スロットタイプは、Alexaサービスが、スキルサービスに値を送信する前にスロットデータを処理する方法を示します。カスタムスロットタイプを作成するか、多数用意されている標準スロットタイプから1つを選択して使用することができます。

カスタムスロットタイプの構文

カスタムスロットタイプは、スロットの値のリストを定義します。カスタムスロットタイプは、Amazonの標準タイプセットでサポートされていない項目のリストに使用します。ほとんどユースケースで使用が推奨されます。カスタムタイプを使用する場合は、タイプと値を定義し、インテントの定義の一部としてタイプ名を指定します。

たとえば、星占いスキルのカスタムスロットタイプの名前はLIST_OF_SIGNSで、以下の値を持ちます。

牡羊座
牡牛座
Gemini
蟹座
獅子座
魚座
乙女座
天秤座
蠍座
射手座
山羊座
水瓶座

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

例を参照してください

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

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

カスタムスロットタイプ名

カスタムスロットタイプ名には英字のみを指定できます。使用できる特殊文字は、アンダースコア(_)のみです。ドット(.)も使用できますが、カスタム値を指定可能な標準タイプの1つを拡張する場合に限られます。つまり、リストに都市を追加する場合にAMAZON.Cityというカスタムスロットタイプは定義できますが、AMAZON.DATEMYDEV.MY_CUSTOM_SLOTというカスタムスロットタイプは定義できません。

カスタムスロットタイプの値

スキルには、合計で50,000個までのカスタムスロットタイプの値を指定できます。この数は、対話モデルで使用するすべてのカスタムスロットの値の合計です。

サービスへのリクエストで指定されるスロットの値は、標準記述形式で提供されます。値は、各自の行に記述される必要があります。

サンプル発話の構文

サンプル発話は、ユーザーが発話できるフレーズとスキル内で定義するインテントをマッピングします。プレーンテキストファイルに、以下のフォーマットで行ごとに記述します。

IntentName  this is a sample utterance with no slots
IntentName  this is a sample utterance containing a {SlotName}
IntentName  this is a sample utterance containing a {SlotName} and {AnotherSlotName}

サンプル発話の仕様

構成要素 意味とルール
IntentName 各行は、JSONインテントスキーマで定義したインテントに一致するインテント名で始めます。インテント名には、英字のみ(大文字小文字の区別なし)を指定できます。

IntentNameの後に、1つ以上のタブまたはスペースを入れてsample utteranceと区切ります。
sample utterance インテントをトリガーするユーザーの発話フレーズを指定します。フレーズにスロット値を含める必要がある場合は、スロットの定義を波括弧内に含めます。次のslot definitionの説明を参照してください。発話には複数のスロットを含めることができます。

詳細については、サンプル発話のルールを参照してください。
{slot definition} スロットは、次の構文を使用して波括弧で表します: {SlotName}SlotName は、インテントスキーマ内で定義されるスロットの名前です。

たとえば、以下の行では、Signというスロットを含むインテントGetHoroscopeのサンプル発話を定義しています。このスロットは、12星座をすべて定義したLIST_OF_SIGNSというカスタムスロットタイプを使って定義されています。

GetHoroscope {Sign} の運勢は何ですか?

ユーザーがこのフレーズを言うと、サービスは、Signというスロットにユーザーが言った値のテキストが含まれた、GetHoroscopeインテントを受け取ります。

同様に、以下の行では、カスタムスロットSignと、AMAZON.DATEとして定義されたDateというスロットの2つが含まれるサンプル発話を定義しています。

GetHoroscope {Date} の{Sign}の星占いを教えて。

ユーザーがこのフレーズを言うと、サービスは、GetHoroscope インテントを受け取ります。このインテントには、 SignDateという2つのスロットが含まれています。Dateスロットには、ユーザーがこのスロットに対して言った値を日付に変換した値が含まれます。

SlotNameの文字列には、英字(大文字小文字の区別なし)のみ指定できます。JSONのインテントスキーマ内で定義されるスロットの名前と一致する必要があります。

サンプル発話のルール

すべてのカスタムスロットの値はさまざまな形式(数字、略語など)で入力できる一方、スロット値を囲むサンプル発話は以下のような特定のルールに従う必要があります。

  • 数値は、数字ではなく文字で表す必要があります(「5」ではなく「五」とする)。
  • 頭字語など、個々に発音されるアルファベットで成り立つ語句は、各文字をスペースで区切る必要があります(「nba」ではなく「n b a」とする)。

対話モデルの例

「十二星座占い」スキルの対話モデルが完成すると、以下のようになります。

インテントの定義:

{
  "intents": [
    {
      "intent": "GetHoroscope",
      "slots": [
        {
          "name": "Sign",
          "type": "LIST_OF_SIGNS"
        },
        {
          "name": "Date",
          "type": "AMAZON.DATE"
        }
      ]
    }
  ]
}

カスタムスロットタイプLIST_OF_SIGNSの定義:

牡羊座
牡牛座
双子座
蟹座
獅子座
魚座
乙女座
天秤座
蠍座
射手座
山羊座
水瓶座

対応するサンプル発話:

GetHoroscope {Sign} の星占いは何
GetHoroscope {Date} の {Sign} の星占いは何 
GetHoroscope 私の星占いを教えて
GetHoroscope {Sign}
...
(many more sample utterances)

この例での対話は次のように動作します。

  • 最初のサンプル発話では、Signというスロットを含むGetHoroscopeインテントがスキルに渡されます。スロット値には、ユーザーの発話に含まれていた{Sign}スロットに対する文字列の値が使用されます。
  • 2つ目と3つ目のフレーズを発話すると、どちらも同じGetHoroscopeインテントがスキルに渡されます。このインテントには、 SignDateという2つのスロットが含まれています。
  • 4つ目のフレーズでも、同じGetHoroscopeインテントが渡されますが、スロット値は含まれません。
  • 5つ目のフレーズでも、同じGetHoroscopeインテントが渡されます。このインテントには、Signスロット値が含まれます(この発話はスロット値のみで構成されています)。

スキルに最適なサンプル発話の組み合わせを含めることにより、Alexaの機能が向上し、スキルに正しいインテントとスロットを送信できるようになります。ガイドラインについては、サンプル発話とカスタムスロットタイプの値を作成する際のベストプラクティスを参照してください。

ビルトインインテントライブラリのドキュメント

すべてのビルトインインテントは、ビルトインインテントライブラリで参照できます。

利用可能なすべてのスロットタイプは、スロットタイプリファレンスで参照できます。

ビルトインインテントライブラリの使用方法については、以下を参照してください。

音声インターフェースの構築については、以下を参照してください。

ビルトインインテントライブラリでは、クリエイティブ・コモンズの表示-継承ライセンス(バージョン3.0)(以下「ライセンス」)のライセンス許諾のもとに、Schema.orgが採用されています。ライセンスに準拠することなくこのファイルを使用することはできません。ライセンスのコピーは、http://creativecommons.org/licenses/by-sa/3.0/で入手できます。不明な点については、alexa-ontology-support@amazon.comにお問い合わせください。