Вместо предисловия
Ниже — описание шагов по созданию простейшего приложения (смартаппа) для СберМаркета, без программирования (в данном случае — в среде разработки Graph).
Приступаем к разработке
Вся документация по разработке тут (изучаем)
(возможен вход без регистрации, через СберID, Ок, залогинились)
Вот что облачная студия нам предлагает:
Создаем zero-code смартапп в SmartApp Graph
Создаем новый смартапп — “Предсказатель“
Для примера, напишем приложение для принятия решений, наподобие этого:
Приложение будет принимать произвольный вопрос пользователя и отвечать случайным образом: “Да“, “Нет“, “Возможно“ и др.
То есть это развлекательное приложение, подобие физической игрушки — “Шар принятия решений“:
Создаем новый проект
Переходим в SmartMarket Studio и создайте проект Graph.
В разделе Сценарий выбераем блок Текст.
В поле Реплика ассистента напишем короткую инструкцию для пользователей по общению с вашим смартапом и нажмем Сохранить.
Пишем текст приветствия
Выбираем внизу экрана кнопку Сохранить и переходим в раздел “FAQ ассистент”.
Нажимаем “Создать пустую базу”.
Создаем пустую БД знаний
Предсказатель будет давать ответ, когда в конце вопроса его спросят: “Ответь”, вот сценарии (шаблонные ответы) для этого:
Вводим вопрос и нажмите ENTER.
Вводим ответы.
Добавляем еще — синонимы ответов.
Нажмаем зелёную кнопку Пуск в правом нижнем углу.
Тестируем на эмуляторе
Протестируем смартап, задавая ему ранее добавленные вопросы.
Первая проблемка
Итого, сейчас бот отвечает на ключевую фразу “Ответь”, но надо бы чтобы он игнорировал все то что до нее, то есть шаблон вопроса д.б. вида: “
Ответь ”*" , где * — произвольная фраза; но как это объяснить ассистенту? …
Мое решение: перенесем все ответы в сообщения об ошибке, т.о. ответы будут всегда случайные, на любой вопрос (то, что надо, из FAQ при этом вопрос удаляем, ответы теперь у нас тут): справка по “неизвестным вопросам“: https://developers.sber.ru/docs/ru/salute/graph/scenario/cannot_understand
Тестируем бота снова, работает как требовалось:
Сборка и публикация
Жмем кнопку “Собрать“
Регистрируем наш смартап в личном кабинете
О том, как сделать релиз, можно спросить на форуме разработчиков:
Мне подсказали: “Вам нужно создать карточку смартапа (тип SmartApp) и там можно будет его отправить на модерацию; Подробнее можно прочитать тут“
В меню Публикации жмем “Фиксировать версию“, получаем статус — “Опубликовано“:
Graph — это среда разработки вашего смартапа, а не сам смартап
Чтобы сделать смартап, нужно создать еще один вид проекта (SmartApp), заполнить в нем все поля, соединить тип SmartApp с Graph, отправить ваш смартап на модерацию и только после того, как он пройдет модерацию, его можно будет опубликовать в каталог
Ок, создаем еще один проект (на этот раз — с типом “Smart App“, подвид “Chat App“):
Вводим альтернативные имена для активации приложения (кому-то они удобнее будут):
Делаем привязку к Graph App:
В качестве поверхностей оставим Салют (голосовой помощник) и пусть SbertPortal с экраном (чтобы вводить вопросы текстом, как в тестировании выше):
Дозаполняем описание приложения:
Примеры запуска заполняем:
Добавляем картинки аппа (требуют по 2 под каждый размер):
Заполняем инструкцию по тестированию:
Дозаполняем данные о пространстве:
Все, можем отправлять на модерацию:
Ждем модерации пространства из п. выше (у меня заняло ~1 час, спасибо саппорту), затем отсылаем приложение на модерацию (мы заполнили все требуемые данные, судя по чеклисту):
У меня в первый раз возникла ошибка отправки: “Произошла ошибка при отправке на модерацию“
Написал в саппорт (Телеграм: @SD_SmartApp_Supprot_Bot) , спасибо ребятам за оперативность, ответили сразу:
Ага, тут, в консоли, наглядно видно, в чем ошибка:
{"message":"Bad Request","error":
[{"type":"arrayUnique",
"message":"Paraphrases not unique: Conflict values: Магический шар",
"property":"paraphrases",
"value":["Магический шар"]}],"status":400}
Исправляем ошибку: удаляем фразу активации “Магический шар“ (т.к. она уже зарезервирована другим приложением… omg кажется нас опередили и приложение не оригинальное, ну кто же мог знать…)
Проверяем снова в консоли, при нажатии на “Отправить на модерацию“, видим что сейчас все ОК:
После прохождения модерации, наше приложение станет доступно в Маркете, на выбранных выше платформах, и мы сможем протестировать/использовать соотв. навык ассистента в реальности.
Для тестирования: достаточно закгрузить на смартфон приложение Салют и залогинитьься там под той же учеткой, под которой велась разработка. После этого, разработанное приложение будет доступно вам (и пока только вам) сразу же, без прохождегния модерации, публикации и т.п.
Например, вот как я протестировал свое разработанное выше прилшложение:
Для использования приложения, можно приобрести одну физических из платформ/поверхностей, например тут:
На Яндекс Маркете: ТВ-адаптер SBER SberBox с виртуальными ассистентами Салют
Умная портативная колонка SberBox Time SBDV-00026 Black
Официальная страница ассистента Салют (описание функций и т.п.)
P.S.: Подписывайтесь на мой телеграм канал, где я делюсь своими открытиями и наработками в программировании. До встречи!