Ответы смартапа
Раздел содержит описание ответов смартапа.
note
Ассистент ожидает ответа в течение семи секунд.
На запрос ассистента смартап вернет один из следующих типов ответа:
ANSWER_TO_USER
— содержит ответ, который ассистент предоставит пользователю;POLICY_RUN_APP
— сообщает, что смартап хочет запустить другое приложение. Включение функции обсуждается индивидуально на этапе модерации;NOTHING_FOUND
— смартап не смог найти ответ. Может указывать на то, что приложение было запущено по ошибке;ERROR
— сообщает ассистенту, что в смартапе возникла ошибка. Ассистент самостоятельно сообщит пользователю о возникнокении ошибки;
Каждый ответ содержит объект payload
, наполнение которого зависит от типа ответа.
danger
В ответах нельзя передавать null
. Переносы строк в JSON-ответах смартапов запрещены.
Информация об устройстве пользователя передаётся в объекте device
и присутствует в ответах любого типа.
Объект payload
может быть дополнен новыми полями.
Пример запроса с типом ANSWER_TO_USER
:
{
"messageName": "ANSWER_TO_USER",
"sessionId": "86024848-c12b-4056-b58b-93c69b412314",
"messageId": 0,
"uuid": {
"userChannel": "B2C",
"sub": "d2d6da62-6bdd-452b-b5dd-a145090075ba",
"userId": "123"
},
"payload": {...}
}
Общие поля для всех типов ответов
Ответы всех типов содержат следующие поля:
Поле | Описание | ||
---|---|---|---|
Обязательное |
Идентификатор ответа смартапа. Должен быть таким же, как идентификатор запроса. | ||
Обязательное |
Идентификатор соединения (не диалоговой сессии). Обновляется при каждом новом запросе с сохранением контекста диалога. При использовании с | ||
Обязательное |
Тип ответа. Определяет логику обработки. Возможные значения:
| ||
Обязательное |
| ||
Обязательное |
Объект с данными, которые зависят от типа сообщения. |
Содержимое payload по типам сообщений
ANSWER_TO_USER
Пример payload
:
{
"pronounceText": "Привет! Чем я могу помочь?",
"emotion": {
"emotionId": "oups"
},
"items": [
{
"card": {}
},
{
"bubble": {
"text": "Привет!"
}
}
],
"intent": "hi",
"projectName": "hello",
"device": {
"platformType": "android",
"platformVersion": "1.0.2",
"surface": "SBOL",
"surfaceVersion": "1.0.2",
"features": {
"appTypes": ["DIALOG", "WEB_APP"]
},
"capabilities": {
"screen": { "available": true },
"mic": { "available": true },
"speak": { "available": true }
},
"additionalInfo": {}
}
}
Описание полей:
Поле | Описание | |||
---|---|---|---|---|
pronounceText |
Текст, который ассистент озвучит пользователю. В тексте можно использовать SSML-разметку, если в поле Используйте разметку синтеза речи (тег | |||
pronounceTextType |
Указывает, что в тексте, который необходимо озвучить (поле Поддерживаемые разметки;
| |||
emotion |
Эмоция ассистента, которую он показывает с помощью кнопки. | |||
emotionId |
Идентификатор эмоции, определяющий эмоцию персонажа. Возможные значения:
| |||
items |
Список команд и элементов интерфейса смартапа. | |||
card |
| |||
bubble |
| |||
command |
Команда ассистенту. | |||
suggestions |
Предложения, которые смартап может сделать пользователю в зависимости от контекста диалога. Важно! В интерфейсе SberBox предложения носят информационный характер. Оформляйте их в виде подсказок, а не кнопок. | |||
buttons |
Список кнопок с предложениями смартапа. Каждая кнопка представлена в виде отдельного объекта. | |||
title |
Название кнопки, которое отображается в интерфейсе ассистента. | |||
action |
Описывает действие, которое выполнится по нажатию кнопки. Объект игнорируется, если кнопка содержит массив | |||
actions |
Массив, содержащий несколько действий, которые выполнятся по нажатию кнопки. Содержит минимум один элемент. | |||
auto_listening |
Указывает, что ассистент должен слушать пользователя после выполнения действия. По умолчанию | |||
finished |
Сообщает ассистенту о завершении работы смартапа. Ассистент интерпретирует отсутствие поля как Возможные значения:
В приложениях типа Canvas App необходимо самостоятельно закрывать окно приложения после завершения работы смартапа. Для этого требуется передать ассистенту команду | |||
Обязательное |
| |||
intent |
Интент, который смартап получит в следующем ответе ассистента. | |||
|
Подсказки для сервиса синтеза и распознавания речи. Подробнее в разделах про контексты и хинты. |
POLICY_RUN_APP
Позволяет запускать сторонние смартапы. Включение функции согласуется индивидуально на этапе модерации.
Все смартапы, которые необходимо запускать, указывайте в поле Инструкция для тестирования. Это поле заполняется при подготовке смартапа к модерации.
Пример payload
:
{
"projectName": "hello",
"device": {
"platformType": "android" | "ios",
"platformVersion": "1.0.2",
"surface": "SBOL",
"surfaceVersion": "1.0.2",
"features": {
"appTypes": ["DIALOG", "WEB_APP"]
},
"capabilities": {
"screen": { "available": true },
"mic": { "available": true },
"speak": { "available": true }
},
"additionalInfo": {}
},
"server_action": {
"app_info": {
"projectId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"applicationId": "3fa85f64-5717-4562-b3fc-2c963f66afa7",
"appversionId": "3fa85f64-5717-4562-b3fc-2c963f66afa8"
},
"action_id": "start_track",
"parameters": {}
}
}
Описание полей:
Поле | Описание | ||
---|---|---|---|
Обязательное |
Имя смартапа, которое задается при создании проекта и отображается в каталоге приложений. | ||
Обязательное |
| ||
Обязательное |
Информация о запускаемом смартапе и параметрах его запуска. Аналогично действию типа | ||
Обязательное |
|
NOTHING_FOUND
Пример payload
:
{
"device": {
"platformType": "android" | "ios",
"platformVersion": "1.0.2",
"surface": "SBOL",
"surfaceVersion": "1.0.2",
"features": {
"appTypes": ["DIALOG", "WEB_APP"]
},
"capabilities": {
"screen": { "available": true },
"mic": { "available": true },
"speak": { "available": true }
},
"additionalInfo": {}
}
}
Описание полей:
Поле | Описание | ||
---|---|---|---|
Обязательное |
| ||
intent |
Интент, который смартап получит в следующем ответе ассистента. |
ERROR
При возникновении ошибки в приложении, вам достаточно передать ассистенту сообщение с типом ERROR
и описанным ниже содержимым.
Ассистент оповестит пользователя об ошибке с помощью заранее подготовленного сообщения, соответствующего образу выбранного персонажа.
Пример payload
:
{
"code": 1984,
"device": {
"platformType": "android" | "ios",
"platformVersion": "1.0.2",
"surface": "SBOL",
"surfaceVersion": "1.0.2",
"features": {
"appTypes": ["DIALOG", "WEB_APP"]
},
"capabilities": {
"screen": { "available": true },
"mic": { "available": true },
"speak": { "available": true }
},
"additionalInfo": {}
}
}
Описание полей:
Поле | Описание | ||
---|---|---|---|
Обязательное |
Код ошибки. | ||
description |
Описание ошибки. | ||
Обязательное |
| ||
intent |
Интент, который смартап получит в следующем ответе ассистента. |
Заметили ошибку?
Выделите текст и нажмите Ctrl
+ Enter
, чтобы сообщить нам о ней