Вместо предисловия
Ниже — описание шагов по созданию простейшего приложения (смартаппа) для СберМаркета, без программирования (в данном случае — в среде разработки 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.: Подписывайтесь на мой телеграм канал, где я делюсь своими открытиями и наработками в программировании. До встречи!
