Вместо предисловия
Ниже — описание шагов по созданию простейшего приложения (смартаппа) для СберМаркета, без программирования (в данном случае — в среде разработки Graph).
Приступаем к разработке
Вся документация по разработке тут (изучаем)
(возможен вход без регистрации, через СберID, Ок, залогинились)
Вот что облачная студия нам предлагает:
![](https://habrastorage.org/getpro/habr/upload_files/972/10f/744/97210f7441b482c2c0f126fa425cb0fe.png)
Создаем zero-code смартапп в SmartApp Graph
![](https://habrastorage.org/getpro/habr/upload_files/802/617/00a/80261700aab31c5ee9dfa8f6202b9974.png)
Создаем новый смартапп — “Предсказатель“
Для примера, напишем приложение для принятия решений, наподобие этого:
Приложение будет принимать произвольный вопрос пользователя и отвечать случайным образом: “Да“, “Нет“, “Возможно“ и др.
То есть это развлекательное приложение, подобие физической игрушки — “Шар принятия решений“:
![](https://habrastorage.org/getpro/habr/upload_files/b94/feb/d99/b94febd997c7b4a431c4d993b8dcbc5c.png)
Создаем новый проект
Переходим в SmartMarket Studio и создайте проект Graph.
В разделе Сценарий выбераем блок Текст.
В поле Реплика ассистента напишем короткую инструкцию для пользователей по общению с вашим смартапом и нажмем Сохранить.
![](https://habrastorage.org/getpro/habr/upload_files/7cd/bb6/726/7cdbb672616425ddeb09d1c7ef394725.png)
Пишем текст приветствия
![](https://habrastorage.org/getpro/habr/upload_files/34e/e11/9d2/34ee119d2fa9734699a2a34dd674895e.png)
Выбираем внизу экрана кнопку Сохранить и переходим в раздел “FAQ ассистент”.
Нажимаем “Создать пустую базу”.
Создаем пустую БД знаний
![](https://habrastorage.org/getpro/habr/upload_files/6ba/030/eca/6ba030eca1a6d64828656acd8c354097.png)
Предсказатель будет давать ответ, когда в конце вопроса его спросят: “Ответь”, вот сценарии (шаблонные ответы) для этого:
![](https://habrastorage.org/getpro/habr/upload_files/838/5f7/49d/8385f749dd7f81eb5f089dcc43766f22.png)
Вводим вопрос и нажмите ENTER.
Вводим ответы.
Добавляем еще — синонимы ответов.
Нажмаем зелёную кнопку Пуск в правом нижнем углу.
![](https://habrastorage.org/getpro/habr/upload_files/412/f36/505/412f3650561c3d99b3e70c7445195450.png)
Тестируем на эмуляторе
Протестируем смартап, задавая ему ранее добавленные вопросы.
![](https://habrastorage.org/getpro/habr/upload_files/c9e/fae/3b3/c9efae3b3a159468567b36c22651c9a9.png)
Первая проблемка
Итого, сейчас бот отвечает на ключевую фразу “Ответь”, но надо бы чтобы он игнорировал все то что до нее, то есть шаблон вопроса д.б. вида: “
Ответь ”*" , где * — произвольная фраза; но как это объяснить ассистенту? …
Мое решение: перенесем все ответы в сообщения об ошибке, т.о. ответы будут всегда случайные, на любой вопрос (то, что надо, из FAQ при этом вопрос удаляем, ответы теперь у нас тут): справка по “неизвестным вопросам“: https://developers.sber.ru/docs/ru/salute/graph/scenario/cannot_understand
![](https://habrastorage.org/getpro/habr/upload_files/115/baf/6df/115baf6df88bb949b06b83d706109895.png)
Тестируем бота снова, работает как требовалось:
![](https://habrastorage.org/getpro/habr/upload_files/5d7/e73/778/5d7e7377821142733c7a343d81760b2c.png)
Сборка и публикация
Жмем кнопку “Собрать“
Регистрируем наш смартап в личном кабинете
О том, как сделать релиз, можно спросить на форуме разработчиков:
Мне подсказали: “Вам нужно создать карточку смартапа (тип SmartApp) и там можно будет его отправить на модерацию; Подробнее можно прочитать тут“
В меню Публикации жмем “Фиксировать версию“, получаем статус — “Опубликовано“:
![](https://habrastorage.org/getpro/habr/upload_files/156/8ee/03f/1568ee03f79b749e0da02d25365fa71b.png)
Graph — это среда разработки вашего смартапа, а не сам смартап
Чтобы сделать смартап, нужно создать еще один вид проекта (SmartApp), заполнить в нем все поля, соединить тип SmartApp с Graph, отправить ваш смартап на модерацию и только после того, как он пройдет модерацию, его можно будет опубликовать в каталог
Ок, создаем еще один проект (на этот раз — с типом “Smart App“, подвид “Chat App“):
![](https://habrastorage.org/getpro/habr/upload_files/e32/4cf/e1f/e324cfe1f108429f0abcc8c44cbd8784.png)
Вводим альтернативные имена для активации приложения (кому-то они удобнее будут):
![](https://habrastorage.org/getpro/habr/upload_files/c2a/f9f/f20/c2af9ff208b7deb9625d08522a454483.png)
Делаем привязку к Graph App:
![](https://habrastorage.org/getpro/habr/upload_files/404/a5b/74a/404a5b74aade1fe5413500aa01d6155f.png)
В качестве поверхностей оставим Салют (голосовой помощник) и пусть SbertPortal с экраном (чтобы вводить вопросы текстом, как в тестировании выше):
![](https://habrastorage.org/getpro/habr/upload_files/b30/8ed/24e/b308ed24ee6aa21fd021fe8ce9f6978c.png)
Дозаполняем описание приложения:
![](https://habrastorage.org/getpro/habr/upload_files/064/65c/463/06465c4635012a5dd59acdcf9a36498d.png)
Примеры запуска заполняем:
![](https://habrastorage.org/getpro/habr/upload_files/383/b8e/fda/383b8efda4018fd6fa7bebb8dc5b2ee5.png)
Добавляем картинки аппа (требуют по 2 под каждый размер):
![](https://habrastorage.org/getpro/habr/upload_files/f76/554/634/f76554634550060e680a05082e6f99c2.png)
Заполняем инструкцию по тестированию:
![](https://habrastorage.org/getpro/habr/upload_files/b6a/924/fe7/b6a924fe7c389267c4f382330862e24f.png)
Дозаполняем данные о пространстве:
![](https://habrastorage.org/getpro/habr/upload_files/c37/e25/a62/c37e25a6262d80766810f635cf155617.png)
Все, можем отправлять на модерацию:
![](https://habrastorage.org/getpro/habr/upload_files/89e/d1b/140/89ed1b1401b5c510fe7a4662c176d2e2.png)
Ждем модерации пространства из п. выше (у меня заняло ~1 час, спасибо саппорту), затем отсылаем приложение на модерацию (мы заполнили все требуемые данные, судя по чеклисту):
![](https://habrastorage.org/getpro/habr/upload_files/99f/439/021/99f439021e82f45f903cf98c3f363db9.png)
![](https://habrastorage.org/getpro/habr/upload_files/edf/7ca/416/edf7ca416dd58cc7e8de97c3ce969529.png)
У меня в первый раз возникла ошибка отправки: “Произошла ошибка при отправке на модерацию“
![](https://habrastorage.org/getpro/habr/upload_files/ddc/f98/ed0/ddcf98ed00eb0e6f36623dba7f30b6c3.png)
Написал в саппорт (Телеграм: @SD_SmartApp_Supprot_Bot) , спасибо ребятам за оперативность, ответили сразу:
![](https://habrastorage.org/getpro/habr/upload_files/895/3cc/d75/8953ccd7503c1d04902d68dcb3693d3d.png)
Ага, тут, в консоли, наглядно видно, в чем ошибка:
{"message":"Bad Request","error":
[{"type":"arrayUnique",
"message":"Paraphrases not unique: Conflict values: Магический шар",
"property":"paraphrases",
"value":["Магический шар"]}],"status":400}
Исправляем ошибку: удаляем фразу активации “Магический шар“ (т.к. она уже зарезервирована другим приложением… omg кажется нас опередили и приложение не оригинальное, ну кто же мог знать…)
![](https://habrastorage.org/getpro/habr/upload_files/c82/9df/395/c829df39583722b2db57e93ffb5d022c.png)
Проверяем снова в консоли, при нажатии на “Отправить на модерацию“, видим что сейчас все ОК:
![](https://habrastorage.org/getpro/habr/upload_files/6b9/959/229/6b995922966595123ac593208d5feb81.png)
После прохождения модерации, наше приложение станет доступно в Маркете, на выбранных выше платформах, и мы сможем протестировать/использовать соотв. навык ассистента в реальности.
Для тестирования: достаточно закгрузить на смартфон приложение Салют и залогинитьься там под той же учеткой, под которой велась разработка. После этого, разработанное приложение будет доступно вам (и пока только вам) сразу же, без прохождегния модерации, публикации и т.п.
Например, вот как я протестировал свое разработанное выше прилшложение:
Для использования приложения, можно приобрести одну физических из платформ/поверхностей, например тут:
На Яндекс Маркете: ТВ-адаптер SBER SberBox с виртуальными ассистентами Салют
Умная портативная колонка SberBox Time SBDV-00026 Black
Официальная страница ассистента Салют (описание функций и т.п.)
P.S.: Подписывайтесь на мой телеграм канал, где я делюсь своими открытиями и наработками в программировании. До встречи!