Bixby Developer Center

References

read-one

optional

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.

Examples

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)}")
}
}
}
}
}

View master on GitHub

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)
}
}
}
}
}
}
}
}

View master on GitHub

Child Keys

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