sberdevices/salute-issues

stopSession не завершает CanvasApp

and7ey opened this issue · 6 comments

Где нашелся баг: Code
Описание проблемы: вызов $jsapi.stopSession(); не приводит к завершению канвасапа в Салюте
Проблема воспроизводится у других пользователей? Варианты: да, нет, не знаю.
Дополнительная информация: EndSession: из Graph'a тоже не завершает канвасап

https://developer.sberdevices.ru/docs/ru/developer_tools/amp/smartapp_api_responses

Описание finished:
В приложениях типа Canvas App необходимо самостоятельно закрывать окно приложения после завершения работы смартапа. Для этого требуется передать ассистенту команду close_app с помощью метода assistant.close() или window.AssistantHost.close(), если вы не используете Assistant Client.

Это и к Code применимо? Тогда надо поправить документацию по Code, там сейчас про это ничего не сказано.

Это документация по АПИ, она универсальна )

Правильно я понимаю, что чтобы завершить канвас, мне надо с бэка отправить событие на фронт, а фронт должен уже вызвать assistant.close()?

В общем, предлагаю сделать это удобнее для разработчиков. Вы на уровне платформы добавляете функцию типа $jsapi.stopCanvas();, она что-нить отправляет в smart_app_data сама. И вы же на уровне assistant client обрабатываете полученное значение и вызываете assistant.close(). Итого для разработчика канваса - 1 строка кода. Остальное все делается платформой.

$jsapi.stopSession() и не должен завершать приложение, в документации указано что надо вызвать для завершения приложения и откуда. https://developers.sber.ru/docs/ru/developer_tools/amp/smartapp_api_responses#answer-to-user https://github.com/sberdevices/assistant-client#close-void