Начиная с сентября 2020 года подразделение Сбера SberDevices развивает собственную платформу для разработки приложений, основанных на семействе виртуальных ассистентов (Сбер, Афина и Джой) или смартапов. Кроме того SberDevices предоставляет набор инструментов для разработки таких приложений - SmartApp Studio, SmartApp Code и другие, а также маркетплейс для загрузки и продажи приложений - SmartMarket. Смартапы бывают двух видов: Chat App и Canvas App. В данной статье мы будем рассматривать второй тип. Canvas App - это обычное веб приложение, которое можно установить на одно из устройств SberDevices (Sber Portal, Sber Box, Sber Watch) и возможности которого расширены благодаря использованию виртуальных ассистентов. SmartApp можно сравнить с навыком в Алисе, но SmartApp предоставляет более широкий набор возможностей по взаимодействию: голосом, касанием, текстовым вводом и даже виртуальным геймпадом. Есть хорошая статья, в которой подробно описана процедура локального тестирования смартапа. В этой статье я расскажу о локальном тестировании смартапа без необходимости приобретения устройства от Сбера. Для локального тестирования смартапа в SberDevices была разработана библиотека assistant-client. assistant-client позволяет обмениваться сообщениями между смартап бекендом (webhook) и фронтендом. Для начала установим библиотеку assistant-client на компьютере Также установим React Теперь нужно создать отдельный проект в SmartMarket Code и SmartMarket Studio. Здесь я не буду описывать процесс создания проекта - он довольно простой. Для начала нам нужно связать проект в SmartMarket Studio и SmartMarket Code. Для этого нам потребуется вебхук смартапа в SmartMarket Code. Его можно получить в разделе Публикации в левом панели проекта в Code Затем нужно открыть настройки проекта в Studio и вставить вебхук в поле Внешняя ссылка под заголовком Webhook смартапа. Также нужно выбрать тип проекта SmartApp API. После каждой публикации версии смартапа при внесении изменений нужно обновить вебхук бекенда в Studio.  Кроме того в Studio нужно указать активационную фразу для смартапа. В поле Активационные имена в настройках проекта введем слово для активации (может быть имя проекта), которое будет использоваться для старта смартапа с помощью голосовой команды "Запусти <Активационное имя>". В качестве активационного имени рекомендуется указывать слово на русском языке. Можно использовать целую фразу. Для тестирования с помощью Assistant Client нам понадобится токен. Его можно найти в Studio. Переходим в настройки профиля, выбираем в левой панели Эмулятор и копируем токен. Токен действителен в течении суток. После этого его необходимо обновить нажатием кнопки Обновить ключ. Сейчас создадим простое приложение на React Откроем файл App.tsx и добавим строки импорта необходимых модулей Нам нужно проинициализировать Assistant Client Осталось только добавить такой код React: Теперь запустим фронтенд: У нас откроется такой экран Наше приложение активируется при старте. Мы можем нажать на зеленый лавашар и произнести голосом команду или нажать одну из кнопок. Разработку сценария на бекенде смартапа можно посмотреть в серии обучающих видео. PS: Для лучшего понимания работы смартапов советую посмотреть видео команды СберДевайсы (видео, серия обучающих видео). В заключение хотел бы сказать, что при возникновении проблемы при разработке смартапов можно обратиться в чат команды СберДевайсы в Телеграме. В этом сообществе можно быстро получить ответ на любые вопросы или предложить идеи по улучшению платформы. Всем удачи в разработке виртуальных ассистентов для SmartMarket! инженер-программист направления computer vision