項目選択のためのAPLサポート


項目選択のためのAPLサポート

APLスキルの画面では、ユーザーは特定の項目をさまざまな方法で選択しようとします。

たとえば、ユーザーは「2番目を選んで」と言うことがあります。この動作をサポートするには、スキルの対話モデルで、ビルトインのAMAZON.SelectIntentをAPLドキュメントのSequenceコンポーネントと組み合わせて使用します。

ユーザーは、「これを選んで」や「それを選んで」と言うこともあります。Anaphorスロットに入力があると、AMAZON.SelectIntentは照応に基づく選択を提供します。

序数に基づく選択

スキルでAPL Sequenceコンポーネントが使用されていて、その対話モデルにAMAZON.SelectIntentが含まれている場合、ユーザーが「3番目を選んで」と言うと、スキルにAMAZON.SelectIntentリクエストが送信されます。この場合、AMAZON.SelectIntentは、選択された序数(3)をListPositionスロットに設定するのに加えて、Sequenceコンポーネントの3番目に位置するリスト項目が画面上に表示されていれば、その項目のAPLコンポーネントIDも提供します。つまり、選択の動作は、さまざまなサイズのデバイスによって異なる可能性があります。

以下は、序数に基づく選択に関連するAMAZON.SelectIntentのプロパティです。

プロパティ 説明
ListPosition オブジェクト
(スロット)
ユーザーが序数で項目を選択しようとしたときに、AMAZON.SelectIntentの内部に設定されるスロットです。
ListPosition.value 文字列 ユーザーが言及している位置です。たとえば、「2番目を選んで」という発話の場合、ListPosition.valueには「2」という値が含まれます。
ListPosition.resolutions.resolutionsPerAuthority コレクション ListPositionスロットの値に対して利用できる解決のセットです。APLでは、情報源がamz1.er-authority.visual-contextに設定されている項目だけが対象となります。詳細については、resolutionsPerAuthorityオブジェクトを参照してください。

照応に基づく選択

ビルトインのAMAZON.SelectIntentは、照応に基づく選択にも対応しています。ユーザーが「これを選んで」または「それを選んで」と言うと、スキルはAnaphorスロットが設定されたAMAZON.SelectIntentを受け取ります。AMAZON.SelectIntentが呼び出されたときにAPLドキュメントが画面上に表示されていれば、Anaphorスロットの下位のresolutions.resolutionsPerAuthorityコレクションに、現在のドキュメントにあるトップレベルのAPLコンポーネントのIDが含められます。トップレベルのコンポーネントとは、視覚階層のルートにあるコンポーネントです。これは、ユーザーが項目の詳細表示を見ていて、表示内容に基づいてその項目を選択することにした場合に役立ちます。

AMAZON.SelectIntentに関連するプロパティを以下に示します。

プロパティ 説明
Anaphor オブジェクト
(スロット)
ユーザーが照応によって項目を選択しようとしたときに、AMAZON.SelectIntentの内部に設定されるスロットです。
Anaphor.value 文字列 「これ」や「それ」など、ユーザーが使用した照応の値です。
ListPosition.resolutions.resolutionsPerAuthority コレクション Anaphorスロットの値に対して利用できる解決のセットです。この用途では、authorityamz1.er-authority.visual-contextに設定されている解決が対象となります。

ListPosition.resolutions.resolutionsPerAuthority

序数と照応のどちらに基づく選択でも、ListPosition.resolutions.resolutionsPerAuthorityコレクションの項目のうち、authorityの値がamz1.er-authority.visual-contextに設定されている項目には、次の関連プロパティが含まれます。

プロパティ 説明
authority 文字列 amz1.er-authority.visual-contextに設定されます。
status オブジェクト 解決のステータスを含むオブジェクトです。
status.code 文字列 ステータスコードです。ListPositionの解決に成功した場合は、ER_SUCCESS_MATCHに設定されます。解決に失敗した場合は、ER_SUCCESS_NO_MATCHに設定されます。
values 配列 ListPositionスロットに対する解決された値の配列です。
values.value オブジェクト ListPositionスロットに対する解決された値を表すオブジェクトです。
values.value.id 文字列 ListPosition.valueで識別される序数の位置にあるAPLコンポーネントのIDです。

序数に基づく選択でのListPositionスロットの解決

次の例は、位置番号3のListPositionスロットが解決されたAMAZON.SelectIntentを示しています。ER_SUCCESS_MATCHというステータスコードは、IDが正常に解決されたことを表します。

{
    "version": "1.0",
    "session": {
            // セッション情報	
    },
    "context": {
        "Alexa.Presentation.APL": {
            "token": "anydocument",
            "version": "AriaRenderer-1.0.209.0",
            "componentsVisibleOnScreen": [{
                // APLコンテキスト
            }]
        },
        "System": {
            // システム情報
        },
        "Viewport": {
            // Viewport情報
        }
    },
    "request": {
        "type": "IntentRequest",
        "requestId": "[RequestId]",
        "timestamp": "2018-10-22T03:53:47Z",
        "locale": "ja-JP",
        "intent": {
            "name": "AMAZON.SelectIntent",
            "confirmationStatus": "NONE",
            "slots": {
                "ListPosition": {
                    "name": "ListPosition",
                    "value": "3",
                    "resolutions": {
                        "resolutionsPerAuthority": [{
                            "authority": "amz1.er-authority.visual-context",
                            "status": {
                                "code": "ER_SUCCESS_MATCH"
                            },
                            "values": [{
                                "value": {
                                    "id": "blue"
                                }
                            }]
                        }]
                    },
                    "confirmationStatus": "NONE",
                    "source": "USER"
                },
                "Anaphor": {
                    "name": "Anaphor",
                    "confirmationStatus": "NONE"
                },
                "VisualModeTrigger": {
                    "name": "VisualModeTrigger",
                    "confirmationStatus": "NONE"
                },
                "PositionRelation": {
                    "name": "PositionRelation",
                    "confirmationStatus": "NONE"
                }
            }
        }
    }
}

照応に基づく選択でのListPositionスロットの解決

次の例は、「これ」という値のAnaphorスロットに対してAPLのIDが解決されたAMAZON.SelectIntentを示しています。

{
    "version": "1.0",
    "session": {
        // セッション情報
    },
    "context": {
        "Alexa.Presentation.APL": {
            "token": "anydocument",
            "version": "AriaRenderer-1.0.209.0",
            "componentsVisibleOnScreen": [{
                // APLコンテキスト
            }]
        },
        "System": {
            // システム情報
        },
        "Viewport": {
            // Viewport情報
        }
    },
    "request": {
        "type": "IntentRequest",
        "requestId": "[RequestId]",
        "timestamp": "2018-10-22T06:14:55Z",
        "locale": "ja-JP",
        "intent": {
            "name": "AMAZON.SelectIntent",
            "confirmationStatus": "NONE",
            "slots": {
                "ListPosition": {
                    "name": "ListPosition",
                    "confirmationStatus": "NONE"
                },
                "Anaphor": {
                    "name": "Anaphor",
                    "value": "これ",
                    "resolutions": {
                        "resolutionsPerAuthority": [{
                            "authority": "amz1.er-authority.visual-context",
                            "status": {
                                "code": "ER_SUCCESS_MATCH"
                            },
                            "values": [{
                                "value": {
                                    "id": "bluecheesedetail"
                                }
                            }]
                        }]
                    },
                    "confirmationStatus": "NONE",
                    "source": "USER"
                },
                "VisualModeTrigger": {
                    "name": "VisualModeTrigger",
                    "confirmationStatus": "NONE"
                },
                "PositionRelation": {
                    "name": "PositionRelation",
                    "confirmationStatus": "NONE"
                }
            }
        }
    }
}


このページは役に立ちましたか?

最終更新日: 2025 年 11 月 19 日