Reads one item at a time for the reader and then asks if the user wants to choose it. If the user selects an item, then an action is taken. If the user rejects the item or asks for the next item, the next item on the list is read. The user can also ask to go back to the previous item. At any time, a user can choose an item from the list using ordinal selection, such as saying "The first one", or with a custom prompt or training you provide in the capsule. For more information on when to use this, read the Four Types of Hands-Free Mode topic in the Hands-Free and Multiple Devices Design Guide.
This example is for an input-view
:
input-view {
match: Person (candidates) {
from-output: FindPerson {
from-input: PersonName (name)
}
}
message {
macro (PERSON_SELECTION_PROMPT)
}
render {
selection-of (candidates) {
navigation-mode {
if ($handsFree) {
read-one {
with-navigation-conversation-drivers
list-summary {
macro (HANDS_FREE_PERSON_LIST_SUMMARY) {
param (name) {
if (exists(name)) {
expression (name)
}
}
}
}
page-content {
item-selection-question {
macro (HANDS_FREE_PERSON_ITEM_SELECTION_QUESTION)
}
overflow-statement {
macro (HANDS_FREE_PERSON_OVERFLOW_STATEMENT)
}
overflow-question {
macro (HANDS_FREE_PERSON_OVERFLOW_QUESTION)
}
underflow-statement {
macro (HANDS_FREE_PERSON_UNDERFLOW_STATEMENT)
}
}
}
}
}
where-each (candidate) {
macro (PERSON_SUMMARY) {
param (person) {
expression (candidate)
}
}
spoken-summary {
template ("#{value(candidate.name)}")
}
}
}
}
}
This example is for a result-view
:
result-view {
match {
Movie (results)
}
message {
if (size(results) == 0) {
template ("#{event(results, 'NoResult')}")
} else {
template ("#{event(results, 'Result')}")
}
}
render {
if (size(results) == 1) {
macro (MOVIE_DETAILS) {
param (movie) {
expression (results)
}
}
}
else-if (size(results) > 1) {
list-of (results) {
navigation-mode {
if ($handsFree) {
read-one {
list-summary {
template ("#{event(results, 'Result')}")
}
page-content {
item-selection-question {
macro (HANDS_FREE_MOVIE_ITEM_SELECTION_QUESTION)
}
overflow-statement {
macro (HANDS_FREE_MOVIE_OVERFLOW_STATEMENT)
}
overflow-question {
macro (HANDS_FREE_MOVIE_OVERFLOW_QUESTION)
}
underflow-statement {
macro (HANDS_FREE_MOVIE_UNDERFLOW_STATEMENT)
}
}
}
}
}
highlights {
select (pick) {
label {
macro (MOVIE_HIGHLIGHT_LABEL)
}
macro (MOVIE_HIGHLIGHT) {
param (movie) {
expression (pick)
}
}
summary {
macro (HANDS_FREE_MOVIE_HIGHLIGHT_SUMMARY) {
param (movie) {
expression (pick)
}
}
}
}
}
where-each (result) {
if ($handsFree) {
macro (MOVIE_HIGHLIGHT) {
param (movie) {
expression (result)
}
}
}
else {
macro (MOVIE_SUMMARY) {
param (movie) {
expression (result)
}
}
}
spoken-summary {
macro (HANDS_FREE_MOVIE_NORMAL_SUMMARY) {
param (movie) {
expression (result)
}
}
}
}
}
}
}
}
item-selection-question[deprecated] optional | This key is deprecated |
list-summary optional | Summarizes the list, typically by letting the user know how many options are available |
overflow-question[deprecated] optional | This key is deprecated |
overflow-statement[deprecated] optional | This key is deprecated |
page-content optional | Contains all page-related content information within a view |
underflow-statement[deprecated] optional | This key is deprecated |
with-navigation-conversation-drivers optional | Adds system-provided "next" and "previous" conversation drivers to a list navigation |