Смартапы типа Canvas App поддерживают голосовое взаимодействие с элементами интерфейса. Пользователь может выбрать карточку, назвав ее содержимое.
Для этого с фронтенда смартапа надо отправить ассистенту объект item_selector
с описанием элементов интерфейса:
{
"messageId": 1628668071,
"sessionId": "adsf-e3bc-sdfdsf-adeb-asdf",
"messageName": "MESSAGE_TO_SKILL",
"payload": {
"meta": {
"item_selector": {
"ignored_words": [
"добавь",
"удали"
],
"items": [
{
"id": "c09a2d2a-e676-11e8-80c5-0cc47a817925",
"number": 1,
"title": "Вода с газом",
"aliases": ["Вода"],
"visible": true,
"action": {
"action_id": "open_product",
"product_id": "100024263387"
}
},
{
"id": "21ff402f-fa98-11e8-80c5-0cc47a817925",
"number": 2,
"title": "Яблочный сок",
"aliases": ["Сок"],
"visible": true,
"server_action": {
"action_id": "buy_product",
"product_id": "100024263387"
}
}
]
}
}
}
},
"uuid": {
"userId": "e6a1be42-bde8-40e0-8d64-814adbaa9558",
"sub": "asldhfjkasdhfjkasdhfkj",
"userChannel": "B2C"
}
}
Каждый из объектов массива items
может содержать произвольные поля, необходимые для работы смартапа.
Описание полей item_selector
:
Наименование | Описание |
---|---|
|
Массив слов, которые будут проигнорированы при распознавании реплик пользователя. Пример: |
|
Массив объектов, описывающих элементы интерфейса смартапа |
Обязательное |
Уникальный идентификатор контента |
|
Номер элемента интерфейса, присвоенный смартапом |
|
Наименование объекта, отображающегося в элементе интерйеса. Например «Вода без газа», «Мультфильмы» |
|
Пользователь может видеть на экране только чать элементов интерфейса, которые будут скрываться при пролистывании. Поле сообщает, что в момент запроса пользователя, элемент отображается на экране |
|
Массив слов, которые облегчат распознавание содержимого элемента интерфейса |
|
Действие, которое надо обработать во фронтенде смартапа |
|
Действие, которое надо обработать в сценарии (в бэкенде смартапа) |
Ответ ассистента
Когда пользователь произнесет запрос, соответствующий содержимому элемента интерфейса смартапа, ассистент отправит сообщение MESSAGE_TO_SKILL
, которое будет содержать объект selected_item
:
{
"messageName": "MESSAGE_TO_SKILL",
"payload": {
"selected_item": {
"index": 0, // порядковый номер элемента во входящем массиве items_selector, начиная с 0
"title": "Вода с газом"
}
}
}
Если пользователь ничего не выбрал, объект selected_item
будет пустым.
Смартап должен обработать сообщение в сценарии или во фронтенде смартапа, в результате чего пользователь должен увидеть нужную информацию.