sberdevices / salute-issues

Salute Issues — пространство для предложений и обсуждения багов в продуктах семейства Виртуальных Ассистентов "Салют"
https://sber.ru/salute
23 stars 3 forks source link

[canvas] При command.type do_nothing с экрана исчезают suggestions #139

Open subnetsRU opened 3 years ago

subnetsRU commented 3 years ago

Где нашелся баг: в API Описание проблемы: При ответе от back c command.type = _donothing с экрана исчезают саджесты Дополнительная информация: Искал способ обмена системными сообщениями между 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" тут же пропадает, если следом идёт _donothing

awinogradov commented 3 years ago

Привет! Боюсь, что это ожидаемое поведение. Разработчик должен самостоятельно поддерживать контекст саджестов сквозь команды. Каждая команда проходит несколько слоев из модулей, один из них Assistant SDK, где обрабатываются текущие саджесты на экране. Из твоего примера следует, что в прошлой команде был установлен саджест test, а в новой команде следует удалить все саджесты с экрана.

subnetsRU commented 3 years ago

Тикет был создан после общения с @christina_domanskaya в ТГ и её просьбе. Вы можете связаться с ней, чтобы она пояснила суть ?

Хорошо, раз это не баг, то можно ли создать фичареквест, чтобы при _command.type = donothing саджесты игнорировались ?

awinogradov commented 3 years ago

Фичреквест завести можно

subnetsRU commented 3 years ago

Спасибо Светлана. Теперь это фичареквест.

Тогда попрошу явным образом, чтобы игнорировались не только саджесты, а вообще всё (включая text и tts).

Genenko-Svetlana commented 3 years ago

Пожалуйста. Сроки уточняю.

Genenko-Svetlana commented 3 years ago

Вопрос будет вынесен на обсуждение на след.неделе. После этого будет понятен срок реализации.

Genenko-Svetlana commented 3 years ago

@subnetsRU обсудили. Срок реализации - до 30.06.21. Пока тикет закрываем и переносим в отложенные.

Genenko-Svetlana commented 3 years ago

Возвращаем в работу

talagaev commented 3 years ago

это похоже уже фиксанули

Genenko-Svetlana commented 3 years ago

@subnetsRU проверьте, пожалуйста

Genenko-Svetlana commented 3 years ago

@subnetsRU проверьте, пожалуйста

subnetsRU commented 3 years ago

Не работает.

Вот первое сообщение:

{
    "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

waxerdima commented 3 years ago

Поведение на основе документации https://developer.sberdevices.ru/docs/ru/developer_tools/amp/smartapp_api_commands

do_nothing — команда, которая используется если на запрос отвечать не надо.
При этом с экрана будут удалены все подсказки, добавленные в предыдущем ответе.
subnetsRU commented 3 years ago

Ну так это и хотелось бы изменить. В этом и есть суть данного тикета.

"do nothing" = "ничего не делай" != "удали все кнопки"

talagaev commented 3 years ago

на видео саджест исчезает, тк на его месте появляется фраза пользователя, после нее возвразать прошлый саджест очень странно

subnetsRU commented 3 years ago

а) Не вижу в этом ничего странного когда 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"}}] ... ну и так далее

Всё, саджесты исчезли.

Genenko-Svetlana commented 3 years ago
  1. Запустить Моя фоторамка Отобразился ответ с саджестами
  2. сказать “статус” саджесты скрылись Отобразился запрос Статус В ответ приходит “payload”:{“items”:[{“command”:{“type”:“do_nothing”}}] в ответе нет ни текста ни саджестов Соответственно ничего и не отображается Это ожидаемое поведение

Саджесты после скрытия на шаге 2 пропадают

subnetsRU commented 3 years ago

Ну да, об этом то и речь в этом тикете ж...

Ничего не делай как бы подразумевает, что то состояние, в котором находился смартап до отправки этой команды, не изменится. А оно меняется!