発話プロファイラーAPI
発話プロファイラーAPIは、発話をテストしてスキルの対話モデルを改善するために使用します。発話をAPIに送信し、スキルの対話モデルで発話がインテントやスロットにどう解決されるかを確認できます。発話が正しいインテントやスロットに解決されない場合、スキルの対話モデルを更新して再テストできます。これらのテストはすべて、スキルのコードを書く前に実施できます。発話プロファイラーがエンドポイントやスキルを呼び出すことはありません。このため、スキルの対話モデルをテストするためだけに、スキルのバックエンドサービスを作成する必要はありません。発話プロファイラーは、応答でconsideredIntents
を返すため、どのインテントが検討され、破棄されたかを確認できます。したがって、この情報を使用して、意図したインテントとスロットに発話を解決するようにモデルをトレーニングするために、追加のサンプルをどのように使用するか決めることができます。スキルのラウンドトリップテストを実行し、返されたconsideredIntents
を確認するには、開発者コンソールのAlexaシミュレーター(インテントのデバッグを参照)を使用するか、スキルシミュレーション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.ElicitSlot 、Dialog.ConfirmSlot 、Dialog.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": "神戸から出発したいのですね?"
}
}