Bixby Developer Center

Guides
References

highlights

optional

Highlight specific results on the first page of a rendered list in result-view and input-view of a selection list. Specifying an empty highlights block tells Bixby to automatically determine your highlights.

Bixby only displays up to three highlights, depending on which ones return a result first. This is true regardless of the number of highlights you specify.

Note

Ensure that you use a card component when displaying the highlighted choices.

Note

If you use a layout-macro or layout-match in this key, ensure that the components you specify in that separate layout are all allowed under the highlights key.

Note

If you want the user to see further details when selecting one of the highlighted items, you need to define the view-for key in the appropriate card component within the layout.

Examples

Example - result-view


result-view {
match {
Movie (results)
}
render {
if (size(results) == 1) {
layout-macro (MOVIE_DETAILS) {
param (movie) {
expression (results)
}
}
}
else-if (size(results) > 1) {
list-of (results) {
navigation-mode {
if ($handsFree) {
read-one {
with-navigation-conversation-drivers
list-summary {
template ("#{event(results, 'Result')}")
}
page-content {
item-selection-question {
template-macro (HANDS_FREE_MOVIE_ITEM_SELECTION_QUESTION)
}
overflow-statement {
template-macro (HANDS_FREE_MOVIE_OVERFLOW_STATEMENT)
}
overflow-question {
template-macro (HANDS_FREE_MOVIE_OVERFLOW_QUESTION)
}
underflow-statement {
template-macro (HANDS_FREE_MOVIE_UNDERFLOW_STATEMENT)
}
}
}
}
}
highlights {
select (pick) {
label {
template-macro (MOVIE_HIGHLIGHT_LABEL)
}
layout-macro (MOVIE_HIGHLIGHT) {
param (movie) {
expression (pick)
}
}
summary {
template-macro (HANDS_FREE_MOVIE_HIGHLIGHT_SUMMARY) {
param (movie) {
expression (pick)
}
}
}
}
}
where-each (result) {
if ($handsFree) {
layout-macro (MOVIE_HIGHLIGHT) {
param (movie) {
expression (result)
}
}
}
else {
layout-macro (MOVIE_SUMMARY) {
param (movie) {
expression (result)
}
}
}
spoken-summary {
template-macro (HANDS_FREE_MOVIE_NORMAL_SUMMARY) {
param (movie) {
expression (result)
}
}
}
}
}
}
}
}

Example - input-view

input-view {
match: MovieGenre (candidates)
message {
template-macro (MOVIE_GENRE_SELECTION_PROMPT)
}
render {
selection-of (candidates) {
where-each (candidate) {
layout-macro (MOVIE_GENRE_SUMMARY) {
param (genre) {
expression (candidate)
}
}
}
highlights {
select (pick) {
summary {
template-macro (MOVIE_GENRE_HIGHLIGHT_SPOKEN_SUMMARY) {
param (movieGenre) {
expression (pick)
}
}
}
label {
template-macro (MOVIE_GENRE_HIGHLIGHT_LABEL_TODAY)
}
layout-macro (MOVIE_GENRE_SUMMARY) {
param (genre) {
expression (pick)
}
}
// Distribute the 8 genres that can appeal to general audiences across different days
filter-by (exists(now().date.day) && now().date.day % 8 == 0 ? pick == 'Mystery' : now().date.day % 8 == 1 ? pick == 'Adventure' : now().date.day % 8 == 2 ? pick == 'Action' : now().date.day % 8 == 3 ? pick == 'Fantasy' : now().date.day % 8 == 4 ? pick == 'ScienceFiction' : now().date.day % 8 == 5 ? pick == 'Comedy' : now().date.day % 8 == 6 ? pick == 'Documentary' : pick == 'Music')
}
}
}
}
conversation-drivers {
conversation-driver {
template-macro (PLAY_GENRE_QUIZ_CONVO_DRIVER)
}
}
}

View on GitHub

Note

The look and feel of this Views component might differ between devices, specifically with respect to spacing. Mobile, tablet, and fridge devices are similar in design, for example, but have varying resolution and spacing specifications.

Child Keys

select
optional
Determines which item to highlight within the list and what information to display to user about this item