ビルトインスロットタイプのエンティティ解決
Alexaは、エンティティ解決を使ってユーザー発話のスロット値を1つの既知のエンティティに解決します。一部のビルトインスロットタイプはエンティティ解決とAlexa Entitiesを完全にサポートします。また、多くのビルトインスロットタイプは、独自の値で拡張することでエンティティ解決を使用できます。
エンティティ解決の詳細については、エンティティ解決を参照してください。
エンティティ解決をサポートするスロットタイプとAlexa Entities
一部のビルトインスロットタイプはエンティティ解決をサポートします。これらのタイプでは、ユーザー発話をAlexaナレッジグラフのAlexa Entitiesに解決できます。エンティティは、国際化URI(IRI)形式の一意IDを持ちます。Alexa EntitiesのIRIとLinked Data APIを使って、ナレッジグラフからエンティティに関するデータを取得できます。たとえば、ある人のbirthdate
を取得できます。
スロットタイプがエンティティ解決をサポートする場合、エンティティ解決結果の情報源はAlexaEntities
となります。
次の例は、AMAZON.Person
ビルトインスロットタイプを使うPerson
というスロットの結果を示しています。発話「ベゾス」が5つのエンティティ候補に解決されます。
{
"version": "1.0",
"session": {},
"context": {},
"request": {
"type": "IntentRequest",
"requestId": "amzn1.echo-api.request.1",
"locale": "en-US",
"timestamp": "2021-01-15T22:49:26Z",
"intent": {
"name": "WhoIsIntent",
"confirmationStatus": "NONE",
"slots": {
"Person": {
"name": "Person",
"value": "bezos",
"resolutions": {
"resolutionsPerAuthority": [
{
"authority": "AlexaEntities",
"status": {
"code": "ER_SUCCESS_MATCH"
},
"values": [
{
"value": {
"name": "Jeff Bezos",
"id": "https://ld.amazonalexa.com/entities/v1/6ZmdJgzS4ipuScmQo0ppz4"
}
},
{
"value": {
"name": "Mackenzie Bezos",
"id": "https://ld.amazonalexa.com/entities/v1/4r51itmsh0aQsz2yyVVEER"
}
},
{
"value": {
"name": "Yannis Bezos",
"id": "https://ld.amazonalexa.com/entities/v1/z0fYLagm4L0X3deptSiodB"
}
},
{
"value": {
"name": "Mike Bezos",
"id": "https://ld.amazonalexa.com/entities/v1/F9GKAu5mLT4iPP5d5xRetG"
}
},
{
"value": {
"name": "Mark Bezos",
"id": "https://ld.amazonalexa.com/entities/v1/fQxk1G8jtN4F7fe1NntcCH"
}
}
]
}
]
},
"confirmationStatus": "NONE",
"source": "USER",
"slotValue": {
"type": "Simple",
"value": "bezos",
"resolutions": {
"resolutionsPerAuthority": [
{
"authority": "AlexaEntities",
"status": {
"code": "ER_SUCCESS_MATCH"
},
"values": [
{
"value": {
"name": "Jeff Bezos",
"id": "https://ld.amazonalexa.com/entities/v1/6ZmdJgzS4ipuScmQo0ppz4"
}
},
{
"value": {
"name": "Mackenzie Bezos",
"id": "https://ld.amazonalexa.com/entities/v1/4r51itmsh0aQsz2yyVVEER"
}
},
{
"value": {
"name": "Yannis Bezos",
"id": "https://ld.amazonalexa.com/entities/v1/z0fYLagm4L0X3deptSiodB"
}
},
{
"value": {
"name": "Mike Bezos",
"id": "https://ld.amazonalexa.com/entities/v1/F9GKAu5mLT4iPP5d5xRetG"
}
},
{
"value": {
"name": "Mark Bezos",
"id": "https://ld.amazonalexa.com/entities/v1/fQxk1G8jtN4F7fe1NntcCH"
}
}
]
}
]
}
}
}
}
}
}
}
value
プロパティとresolutions
プロパティはスロットオブジェクトに直接提供されています。リクエストでスロット値にアクセスするには、slotValue
プロパティを使用することをお勧めします。このプロパティは、1つの値を収集するスロットと複数の値を収集するスロットで使用できます。エンティティ解決をサポートするビルトインスロットタイプの一覧については、Alexa Entitiesのリファレンスを参照してください。
スロットタイプの拡張
多くのビルトインスロットタイプは、独自の値で拡張できます。スロットタイプを拡張するとエンティティ解決が実行され、スロットのすべての値にresolutions
プロパティが入ります。値には、同義語とカスタムIDを追加できます。
拡張したビルトインスロットタイプの場合、情報源はビルトインスロットタイプの名前になり、amzn1.er-authority.echo-sdk.<スキルID>.<ビルトインスロットタイプ名>
の形式で表されます。
以下は、ビルトインスロットタイプAMAZON.Color
を使用するスロットのエンティティ解決結果の例です。AMAZON.Color
スロットタイプはエンティティ解決をサポートしませんが、タイプはカスタム値「青」と同義語の「コバルト」で拡張されています。Alexaはユーザー発話「コバルト」をこのカスタムエンティティに解決しました。
{
"intent": {
"name": "FavoriteColorIntent",
"confirmationStatus": "NONE",
"slots": {
"favoriteColor": {
"name": "favoriteColor",
"value": "コバルト",
"resolutions": {
"resolutionsPerAuthority": [
{
"authority": "amzn1.er-authority.echo-sdk.amzn1.ask.skill.1.AMAZON.Color",
"status": {
"code": "ER_SUCCESS_MATCH"
},
"values": [
{
"value": {
"name": "青",
"id": "colorIdBlue"
}
}
]
}
]
},
"confirmationStatus": "NONE",
"source": "USER",
"slotValue": {
"type": "Simple",
"value": "コバルト",
"resolutions": {
"resolutionsPerAuthority": [
{
"authority": "amzn1.er-authority.echo-sdk.amzn1.ask.skill.1.AMAZON.Color",
"status": {
"code": "ER_SUCCESS_MATCH"
},
"values": [
{
"value": {
"name": "青",
"id": "colorIdBlue"
}
}
]
}
]
}
}
}
}
}
}
カスタム値に、ビルトインスロットタイプのデータセットに既に組み込まれていた値を追加し、独自のIDと同義語を割り当てることができます。上の例では、「青」という値は既にAMAZON.Color
スロットタイプの値に含まれていました。カスタム値として開発者が追加するバージョンは、元の値をオーバーライドするので、resolutions
プロパティにはこの発話に対応するカスタムIDが含まれています。
また、すでに標準タイプのデータセットに含まれている値を、独自の値に対する同義語として追加することもできます。これもまた、元の値をオーバーライドします。たとえば、AMAZON.Color
に「とても濃い青」というカスタム値と同義語の「青」を追加したとします。ユーザーの発話「青」により以下がスキルに送信されます。
- ユーザーの言った値(「青」)
- 追加したカスタム値「とても濃い青」
{
"intent": {
"name": "FavoriteColorIntent",
"confirmationStatus": "NONE",
"slots": {
"favoriteColor": {
"name": "favoriteColor",
"value": "青",
"resolutions": {
"resolutionsPerAuthority": [
{
"authority": "amzn1.er-authority.echo-sdk.amzn1.ask.skill.1.AMAZON.Color",
"status": {
"code": "ER_SUCCESS_MATCH"
},
"values": [
{
"value": {
"name": "とても濃い青",
"id": "colorIdBlue"
}
}
]
}
]
},
"confirmationStatus": "NONE",
"source": "USER",
"slotValue": {
"type": "Simple",
"value": "青",
"resolutions": {
"resolutionsPerAuthority": [
{
"authority": "amzn1.er-authority.echo-sdk.amzn1.ask.skill.1.AMAZON.Color",
"status": {
"code": "ER_SUCCESS_MATCH"
},
"values": [
{
"value": {
"name": "とても濃い青",
"id": "colorIdBlue"
}
}
]
}
]
}
}
}
}
}
}
ビルトインスロットタイプを拡張する方法の詳細については、ビルトインスロットタイプを拡張して値を追加するを参照してください。拡張可能なタイプの一覧については、拡張できるスロットタイプを参照してください。
エンティティ解決をサポートしないスロットタイプ
エンティティ解決をサポートしないビルトインスロットタイプを拡張せずに使用した場合、ユーザーの言ったスロットタイプ値のname
、value
、confirmationStatus
のプロパティのみがスキルに送信されます。たとえば、AMAZON.Color
スロットを独自の値で拡張しなかったとします。Alexaは一切のエンティティ解決を行わず、ユーザーの言った値を返します。
{
"intent": {
"name": "FavoriteColorIntent",
"confirmationStatus": "NONE",
"slots": {
"favoriteColor": {
"name": "favoriteColor",
"value": "青",
"confirmationStatus": "NONE",
"source": "USER",
"slotValue": {
"type": "Simple",
"value": "青"
}
}
}
}
}
関連トピック
最終更新日: 2021 年 08 月 31 日