APL Support for Item Selection
When a customer views a screen of your APL skill, they may want to select particular items in different ways.
For example, a customer might say "Select the second one". You can support this behavior by using the built-in AMAZON.SelectIntent in your interaction model in combination with the Sequence component in your APL document.
A customer might also say "Select this" or "Select that". AMAZON.SelectIntent provides anaphora-based selection if you fill out the Anaphor slot.
- Ordinal-based selection
- Anaphora-Based selection
- ListPosition.resolutions.resolutionsPerAuthority
- ListPosition slot resolution for ordinal selection
- ListPosition slot resolution for anaphor-based selection
Ordinal-based selection
When an APL Sequence component is used by a skill that also has AMAZON.SelectIntent in its interaction model, a customer can say "Select the third one" to send an AMAZON.SelectIntent request to the skill. When this happens, in addition to the selected ordinal (3) in the ListPosition slot, AMAZON.SelectIntent will also provide the APL component identifier (id) of the list item that is at the third position in the Sequence component, provided the third item is visible on-screen. Thus, the selection behavior may differ across devices of different sizes.
These are the relevant AMAZON.SelectIntent properties for ordinal selection.
| Property | Type | Description |
|---|---|---|
| ListPosition | Object (slot) |
The slot that will be populated inside AMAZON.SelectIntent when a customer tries to select an item by ordinal. |
| ListPosition.value | String | The position to which the customer refers. For example, for the utterance “select the second one”, ListPosition.value will contain the value "2". |
| ListPosition.resolutions.resolutionsPerAuthority | Collection | The set of resolutions available for the ListPosition slot value. For APL, the only items of interest are those whose authority is set to amz1.er-authority.visual-context. For more information, see resolutionsPerAuthority object. |
Anaphora-Based selection
The built-in AMAZON.SelectIntent also provides anaphora-based selection. When a customer says "Select this" or "Select that", the skill receives an AMAZON.SelectIntent with the Anaphor slot filled out. If an APL document is on-screen when AMAZON.SelectIntent is invoked, the resolutions.resolutionsPerAuthority collection under the Anaphor slot will have the APL component identifier (id) of the top-level APL component in the current document. The top-level component is the component that is at the root of the visual hierarchy. This is useful when a customer is looking at a detail view of an item and wants to select that item based on what they see.
Here are the relevant AMAZON.SelectIntent properties:
| Property | Type | Description |
|---|---|---|
| Anaphor | Object (slot) |
This is the slot that will be populated inside AMAZON.SelectIntent when a customer tries to select an item by anaphor. |
| Anaphor.value | String | The anaphor value, such as “this” or “that”, that the customer used. |
| ListPosition.resolutions.resolutionsPerAuthority | Collection | The set of resolutions available for the Anaphor slot value. For these purposes, the resolutions of interest are those whose authority is set to amz1.er-authority.visual-context. |
ListPosition.resolutions.resolutionsPerAuthority
For both ordinal and anaphor-based selection, the items in the ListPosition.resolutions.resolutionsPerAuthority collection whose authority values are set to amz1.er -authority.visual-context have the following relevant properties.
| Property | Type | Description |
|---|---|---|
| authority | String | Set to amz1.er-authority.visual-context |
| status | Object | Object containing the status of the resolution |
| status.code | String | Status code set to ER_SUCCESS_MATCH when the ListPosition is successfully resolved. Set to ER_SUCCESS_NO_MATCH when resolution fails. |
| values | Array | An array of resolved values for the ListPosition slot. |
| values.value | Object | An object representing a resolved value for the ListPosition slot. |
| values.value.id | String | The id of the APL component that is in the ordinal position identified by ListPosition.value. |
ListPosition slot resolution for ordinal selection
Here is an example of an AMAZON.SelectIntent with a resolved ListPosition slot for position number 3. The status code ER_SUCCESS_MATCH indicates that the identifier was successfully resolved.
{
"version": "1.0",
"session": {
//Session information
},
"context": {
"Alexa.Presentation.APL": {
"token": "anydocument",
"version": "AriaRenderer-1.0.209.0",
"componentsVisibleOnScreen": [{
//APL Context
}]
},
"System": {
//System information
},
"Viewport": {
//Viewport information
}
},
"request": {
"type": "IntentRequest",
"requestId": "[RequestId]",
"timestamp": "2018-10-22T03:53:47Z",
"locale": "en-US",
"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 slot resolution for anaphor-based selection
Here is an example of an AMAZON.SelectIntent with an APL identifier resolved inside the Anaphor slot for a value of this.
{
"version": "1.0",
"session": {
//Session information
},
"context": {
"Alexa.Presentation.APL": {
"token": "anydocument",
"version": "AriaRenderer-1.0.209.0",
"componentsVisibleOnScreen": [{
//APL Context
}]
},
"System": {
//System information
},
"Viewport": {
//Viewport information
}
},
"request": {
"type": "IntentRequest",
"requestId": "[RequestId]",
"timestamp": "2018-10-22T06:14:55Z",
"locale": "en-US",
"intent": {
"name": "AMAZON.SelectIntent",
"confirmationStatus": "NONE",
"slots": {
"ListPosition": {
"name": "ListPosition",
"confirmationStatus": "NONE"
},
"Anaphor": {
"name": "Anaphor",
"value": "this",
"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"
}
}
}
}
}
Last updated: Nov 28, 2023