salute-issues
salute-issues copied to clipboard
[canvas] При command.type do_nothing с экрана исчезают suggestions
Где нашелся баг: в API Описание проблемы: При ответе от back c command.type = do_nothing с экрана исчезают саджесты Дополнительная информация: Искал способ обмена системными сообщениями между back и front в canvas app. Сообщениями, на которые не требуется ничего ни говорить ни отображать пользователю.
В "телеге" подсказали, что back может ответить вот так:
"items": [
{
"command": {
"type": "do_nothing"
}
}
]
Но при таком ответе back (в нём нет suggestions) с экрана сразу исчезают suggestions, которые были выведены предыдущим ответом от back:
"payload":{"items":[{"command":{"type":"smart_app_data","smart_app_data":{"test":true}}}],"suggestions":{"buttons":[{"title":"test","action":{"type":"text","text":"Пауза"}}]
Вот suggest "test" тут же пропадает, если следом идёт do_nothing
Привет! Боюсь, что это ожидаемое поведение. Разработчик должен самостоятельно поддерживать контекст саджестов сквозь команды. Каждая команда проходит несколько слоев из модулей, один из них Assistant SDK, где обрабатываются текущие саджесты на экране. Из твоего примера следует, что в прошлой команде был установлен саджест test, а в новой команде следует удалить все саджесты с экрана.
Тикет был создан после общения с @christina_domanskaya в ТГ и её просьбе. Вы можете связаться с ней, чтобы она пояснила суть ?
Хорошо, раз это не баг, то можно ли создать фичареквест, чтобы при command.type = do_nothing саджесты игнорировались ?
Фичреквест завести можно
Спасибо Светлана. Теперь это фичареквест.
Тогда попрошу явным образом, чтобы игнорировались не только саджесты, а вообще всё (включая text и tts).
Пожалуйста. Сроки уточняю.
Вопрос будет вынесен на обсуждение на след.неделе. После этого будет понятен срок реализации.
@subnetsRU обсудили. Срок реализации - до 30.06.21. Пока тикет закрываем и переносим в отложенные.
Возвращаем в работу
это похоже уже фиксанули
@subnetsRU проверьте, пожалуйста
@subnetsRU проверьте, пожалуйста
Не работает.
Вот первое сообщение:
{
"messageId": 1625475176637,
"sessionId": "5a834da6-235c-3579-a790-f9baac9961b7",
"messageName": "ANSWER_TO_USER",
"uuid": {
"userId": "60dd17dd-dad6-475a-b0a5-ba2ae3f39c97",
"sub": "JLJyLRg+daL+YA6OybStCr9t+QTjEXSPdldhmMqgUkU2w220mQwceRQ9EWJ+c3mVeEYH7lj9oG\\/MMjK0TghszALsemlZqy59xu3aKsuxrWwFTkEE+Ap\\/yY06DYhNuXtIA\\/0EOJ+OrtWzoXOkZYOyDQ6Ej
PDCsv04ykAZw8cJkN4=",
"userChannel": "COMPANION_B2C"
},
"payload": {
"auto_listening": true,
"device": {
"platformType": "ANDROID",
"platformVersion": "9",
"surface": "COMPANION",
"surfaceVersion": "21.6.2.6115",
"features": {
"appTypes": [
"DIALOG",
"WEB_APP",
"CHAT_APP"
]
},
"capabilities": {
"screen": {
"available": true,
"height": 2280,
"scale_factor": 3,
"width": 1080
}
},
"deviceId": "",
"deviceManufacturer": "HUAWEI",
"deviceModel": "ANE-LX1",
"additionalInfo": {
"host_app_id": "ru.sberbank.sdakit.companion.prod",
"sdk_version": "21.6.2.6115"
}
},
"suggestions": {
"buttons": [
{
"title": "Текст кнопки",
"action": {
"type": "text",
"text": "тут пейлоад"
}
}
]
},
"items": [
{
"bubble": {
"text": "привет",
"expand_policy": "force_expand"
}
}
],
"pronounceText": "<speak>это тест<\\/speak>",
"pronounceTextType": "application\\/ssml"
}
}
Результат на экране кнопка.
Вот второе сообщение:
{
"messageId": 1625475176638,
"sessionId": "5a834da6-235c-3579-a790-f9baac9961b7",
"messageName": "ANSWER_TO_USER",
"uuid": {
"userId": "60dd17dd-dad6-475a-b0a5-ba2ae3f39c97",
"sub": "JLJyLRg+daL+YA6OybStCr9t+QTjEXSPdldhmMqgUkU2w220mQwceRQ9EWJ+c3mVeEYH7lj9oG\\/MMjK0TghszALsemlZqy59xu3aKsuxrWwFTkEE+Ap\\/yY06DYhNuXtIA\\/0EOJ+OrtWzoXOkZYOyDQ6Ej
PDCsv04ykAZw8cJkN4=",
"userChannel": "COMPANION_B2C"
},
"payload": {
"auto_listening": true,
"device": {
"platformType": "ANDROID",
"platformVersion": "9",
"surface": "COMPANION",
"surfaceVersion": "21.6.2.6115",
"features": {
"appTypes": [
"DIALOG",
"WEB_APP",
"CHAT_APP"
]
},
"capabilities": {
"screen": {
"available": true,
"height": 2280,
"scale_factor": 3,
"width": 1080
}
},
"deviceId": "",
"deviceManufacturer": "HUAWEI",
"deviceModel": "ANE-LX1",
"additionalInfo": {
"host_app_id": "ru.sberbank.sdakit.companion.prod",
"sdk_version": "21.6.2.6115"
}
},
"items": [
{
"command": {
"type": "do_nothing"
}
}
]
}
}
Кнопка пропала...
https://user-images.githubusercontent.com/18159237/124446856-7b127f80-dd89-11eb-80a2-1f73003f9c85.mp4
Поведение на основе документации https://developer.sberdevices.ru/docs/ru/developer_tools/amp/smartapp_api_commands
do_nothing — команда, которая используется если на запрос отвечать не надо.
При этом с экрана будут удалены все подсказки, добавленные в предыдущем ответе.
Ну так это и хотелось бы изменить. В этом и есть суть данного тикета.
"do nothing" = "ничего не делай" != "удали все кнопки"
на видео саджест исчезает, тк на его месте появляется фраза пользователя, после нее возвразать прошлый саджест очень странно
а) Не вижу в этом ничего странного когда backend ответил do_nothing (ничего не делай). б) Это был быстрый тест. Считайте, что вместо моего произнесённого "тест" идёт server_action с фронта. Так как поведение будет точно таким же - кнопка исчезнет с экрана.
Отправляем с фронта server_action:
{"messageId":1625484277311,"sessionId":"f98da40d-f1bd-36bb-a4a3-5185cc93417c","messageName":"SERVER_ACTION","payload":{"server_action":{"action_id":"canvas_ping"}... и так далее
Отвечаем с бэка do_nothing:
{"messageId":1625484277311,"sessionId":"f98da40d-f1bd-36bb-a4a3-5185cc93417c","messageName":"ANSWER_TO_USER","payload":{"items":[{"command":{"type":"do_nothing"}}] ... ну и так далее
Всё, саджесты исчезли.
- Запустить Моя фоторамка Отобразился ответ с саджестами
- сказать “статус” саджесты скрылись Отобразился запрос Статус В ответ приходит “payload”:{“items”:[{“command”:{“type”:“do_nothing”}}] в ответе нет ни текста ни саджестов Соответственно ничего и не отображается Это ожидаемое поведение
Саджесты после скрытия на шаге 2 пропадают
Ну да, об этом то и речь в этом тикете ж...
- либо поведение нужно менять. Ведь do_nothing переводится как "ничего не делай", а оно делает - убирает кнопки.
- либо убирать упоминания про do_nothing, так как оно не соответствует действительности и просто сбивает с толку.
- либо переименовывать do_nothing во что-то другое, чтобы не сбивало с толку. Ведь "убираю кнопки" является действием, которое явно не подпадает под "ничего не делай".
Ничего не делай как бы подразумевает, что то состояние, в котором находился смартап до отправки этой команды, не изменится. А оно меняется!