Open subnetsRU opened 3 years ago
Привет! Боюсь, что это ожидаемое поведение. Разработчик должен самостоятельно поддерживать контекст саджестов сквозь команды. Каждая команда проходит несколько слоев из модулей, один из них Assistant SDK, где обрабатываются текущие саджесты на экране. Из твоего примера следует, что в прошлой команде был установлен саджест test, а в новой команде следует удалить все саджесты с экрана.
Тикет был создан после общения с @christina_domanskaya в ТГ и её просьбе. Вы можете связаться с ней, чтобы она пояснила суть ?
Хорошо, раз это не баг, то можно ли создать фичареквест, чтобы при _command.type = donothing саджесты игнорировались ?
Фичреквест завести можно
Спасибо Светлана. Теперь это фичареквест.
Тогда попрошу явным образом, чтобы игнорировались не только саджесты, а вообще всё (включая 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://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"}}] ... ну и так далее
Всё, саджесты исчезли.
Саджесты после скрытия на шаге 2 пропадают
Ну да, об этом то и речь в этом тикете ж...
Ничего не делай как бы подразумевает, что то состояние, в котором находился смартап до отправки этой команды, не изменится. А оно меняется!
Где нашелся баг: в API Описание проблемы: При ответе от back c command.type = _donothing с экрана исчезают саджесты Дополнительная информация: Искал способ обмена системными сообщениями между back и front в canvas app. Сообщениями, на которые не требуется ничего ни говорить ни отображать пользователю.
В "телеге" подсказали, что back может ответить вот так:
Но при таком ответе back (в нём нет suggestions) с экрана сразу исчезают suggestions, которые были выведены предыдущим ответом от back:
Вот suggest "test" тут же пропадает, если следом идёт _donothing