発話プロファイラーAPI



発話プロファイラーAPI

発話プロファイラーAPIは、発話をテストしてスキルの対話モデルを改善するために使用します。発話をAPIに送信し、スキルの対話モデルで発話がインテントやスロットにどう解決されるかを確認できます。発話が正しいインテントやスロットに解決されない場合、スキルの対話モデルを更新して再テストできます。これらのテストはすべて、スキルのコードを書く前に実施できます。発話プロファイラーがエンドポイントやスキルを呼び出すことはありません。このため、スキルの対話モデルをテストするためだけに、スキルのバックエンドサービスを作成する必要はありません。

発話プロファイラーは、Alexa Skills Kitの開発者コンソールでも使用できます。詳細については、発話をテストして対話モデルを改善するを参照してください。

リクエスト

このAPIのエンドポイントは、https://api.amazonalexa.comです。すべてのAPIリクエストにはAuthorizationヘッダーが必要であり、その値にはLogin with Amazonから取得したアクセストークンが入ります。

HTTPメソッドとURIパス

POST /v1/skills/{skillId}/stages/{stage}/interactionModel/locales/{locale}/profileNlu

リクエスト本文の構造

{
  "utterance": "string",
  "multiTurnToken": "string"
}

リクエストのフィールド

フィールド 説明
skillId 必須です。URIパスの一部です。対話モデルをテストするスキルのIDです。 文字列
stage 必須です。URIパスの一部です。テストするスキルモデルのステージです。たとえば、開発中ステージのスキルの場合、developmentを使います。公開中のスキルの場合、liveを使います。 文字列
locale 必須です。URIパスの一部です。テストするスキルモデルのロケールです。たとえば、en-USです。 文字列
utterance 必須です。リクエスト本文の一部です。スキルモデルのテストに使用する発話です。 文字列
multiTurnToken 任意です。リクエスト本文の一部です。このフィールドは、マルチターンの会話で、かつ応答でマルチターンのトークンを受け取った後にのみ送信します。前の応答で受け取ったトークンの値を設定します。 文字列

応答

応答本文の構造

{
  "sessionEnded": true,
  "selectedIntent": {
    "name": "string",
    "confirmationStatus": "NONE",
    "slots": {
      "slotName": {
        "name": "string",
        "value": "string",
        "confirmationStatus": "NONE",
        "resolutions": {
          "resolutionsPerAuthority": [
            {
              "authority": "string",
              "status": {
                "code": "ER_SUCCESS_MATCH"
              },
              "values": [
                {
                  "name": "string",
                  "id": "string"
                }
              ]
            }
          ]
        }
      }
    }
  },
  "consideredIntents": [
    {
      "name": "string",
      "confirmationStatus": "NONE",
      "slots": {
        "slotName": {
          "name": "string",
          "value": "string",
          "confirmationStatus": "NONE",
          "resolutions": {
            "resolutionsPerAuthority": [
              {
                "authority": "string",
                "status": {
                  "code": "ER_SUCCESS_MATCH"
                },
                "values": [
                  {
                    "name": "string",
                    "id": "string"
                  }
                ]
              }
            ]
          }
        }
      }
    }
  ],
  "multiTurn": {
    "dialogAct": {
      "type": "Dialog.ElicitSlot",
      "targetSlot": "string"
    },
    "token": "string",
    "prompt": "string"
  }
}

応答のフィールド

フィールド 説明
sessionEnded 発話によってAlexaがスキルを終了するかどうかを表します。発話によってAlexaがスキルを終了する場合はtrue、それ以外の場合はfalseを設定します。 ブール値
selectedIntent リクエストでAlexaが発話に選択したインテントです。 Intentオブジェクト
consideredIntents リクエストでAlexaが発話に対する候補として検討したけれども、選択しなかったすべてのインテントです。 Intentオブジェクトのリスト
multiTurn 選択されたインテントにダイアログが定義され、そのダイアログが完了していないときに含まれます。ダイアログを続けるには、次のリクエストのmultiTurnTokenフィールドにトークンの値を指定します。 MultiTurnオブジェクト

MultiTurnオブジェクト

フィールド 説明
dialogAct マルチターンダイアログで、このダイアログの種類とユーザーの応答が入るターゲットスロットに関しての情報が含まれます。 DialogActオブジェクト
token マルチターンダイアログのコンテキストを指定するopaqueトークンです。ダイアログを続けるには、次のリクエストのmultiTurnTokenフィールドにこの値を指定します。 文字列
prompt マルチターンダイアログでAlexaがユーザーに話しかけるプロンプトです。 文字列

DialogActオブジェクト

フィールド 説明
type このマルチターンダイアログで、ユーザーからの次の応答に対するダイアログアクションです。Dialog.ElicitSlotDialog.ConfirmSlotDialog.ConfirmIntentのいずれかの値が入ります。詳細については、dialogディレクティブを参照してください。 文字列
targetSlot マルチターンダイアログで、ユーザーの応答が入るターゲットスロットです。 文字列

リクエストの例

POST /v1/skills/amzn1.ask.skill.abcd1234-.../stages/development/interactionModel/locales/en-US/profileNlu HTTP/1.1
Host: api.amazonalexa.com
Content-Type: application/json
Authorization: Atza|aYcrxwvsxKNYLrzv6nxfQPnhJdPT22en...

{
  "utterance": "神戸から出発したい",
  "multiTurnToken": null
}

応答の例

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 1570
Connection: Keep-Alive
Server: Server
Date: Wed, 09 Jan 2019 19:26:34 GMT
X-Amzn-RequestId: abcd1234-...

{
  "sessionEnded": "false",
  "selectedIntent": {
    "name": "GetTravelTimeIntent",
    "confirmationStatus": "CONFIRMED",
    "slots": {
      "DepartingCity": {
        "name": "DepartingCity",
        "value": "神戸",
        "confirmationStatus": "CONFIRMED",
        "resolutions": {
          "resolutionsPerAuthority": [
            {
              "authority": "1234.City",
              "status": {
                "code": "ER_SUCCESS_MATCH"
              },
              "values": [
                {
                  "name": "神戸",
                  "id": "1234"
                }
              ]
            }
          ]
        }
      },
      "ArrivingCity": {
        "name": "ArrivingCity",
        "value": null,
        "confirmationStatus": "NONE",
        "resolutions": null
      }
    }
  },
  "consideredIntents": [
    {
      "name": "GetTravelTimeIntent",
      "confirmationStatus": "NONE",
      "slots": {
        "DepartingCity": {
          "name": "DepartingCity",
          "value": null,
          "confirmationStatus": "NONE",
          "resolutions": null
        },
        "ArrivingCity": {
          "name": "ArrivingCity",
          "value": null,
          "confirmationStatus": "NONE",
          "resolutions": null
        }
      }
    }
  ],
  "multiTurn": {
    "dialogAct": {
      "type": "SlotValueConfirmation",
      "targetSlot": "DepartureCity"
    },
    "token": "abcd1234...",
    "prompt": "神戸から出発したいのですね?"
  }
}