IT-инфраструктура для бизнеса и творчества
Разработка
SberDevices

От задумки до успешного приложения: как создать смартап для виртуальных ассистентов Салют без кода. Опыт разработчика

SmartMarket — каталог приложений и платформа разработки смартапов для виртуальных ассистентов Салют. Он устроен так, что создавать приложения могут даже разработчики без опыта в программировании. Меня зовут Сергей Кулаков, и я не считаю себя программистом — скорее сценаристом приложений.

В сообщество разработчиков SmartMarket я пришёл осенью 2020 года и с тех пор создал 12 навыков и выиграл 2,5 миллиона рублей в конкурсе. Сейчас я расскажу, как создать интересный смартап, к которому пользователи захотят возвращаться снова и снова.

Сергей Кулаков
Разработчик навыков для виртуальных ассистентов

Навыки для голосовых ассистентов — не новая для меня область. Ещё до появления виртуальных ассистентов Салют я полтора года разрабатывал навыки для другого голосового ассистента и неоднократно получал за них награды. В конце мая 2020 года я получил письмо от Сбера, в котором мне предлагали поучаствовать в тестировании новой платформы для разработчиков и портировать туда один из навыков — «Музыкальные стулья». Но Сбер тогда не ассоциировался у меня с IT, поэтому я не стал этим заниматься.

В сентябре мне написал знакомый разработчик — он прислал ссылку на чат в Telegram и сказал, что туда уже пришли все наши общие знакомые. Так я попал в сообщество разработчиков SmartMarket.

С чего всё началось и почему я сделал 12 смартапов

В сообществе действительно оказалось много знакомых, а тех, кого там не было, я пригласил сам. На тот момент платформа была немного сырой, поэтому некоторые разработчики решили пока не разрабатывать смартапы. Я тоже с этим столкнулся. Например, оказалось, что портировать навыки с другой платформы нельзя и мне придётся делать их с нуля. Но многие разработчики всё-таки остались. Во-первых, было интересно стоять у истоков и помогать чинить баги, во-вторых, тогда SmartMarket уже объявил о том, что устроит конкурс с призами.

Я поставил себе цель — сделать 12 смартапов до конца 2020 года. Поэкспериментировать, попробовать разные сценарии и посмотреть, что выстрелит. В итоге часть навыков я продублировал, а часть придумал специально для SmartMarket.

Какие смартапы я сделал для участия в конкурсе:

Угадай песню — угадываем композиции по строчкам из них

Весёлый курьер — запоминаем маршруты и тренируем память

Звёздный поединок — забавная битва известных персонажей: от селебрити до героев сказок

Музыкальные стулья — бегаем вокруг стульев и успеваем занять их, когда музыка перестает играть

Море волнуется раз — показываем необычные фигуры

Слово наоборот — отгадываем слова-перевёртыши

Угадай фильм — угадываем фильмы по описанию

Продолжи пословицу — заканчиваем известные поговорки

Калькулятор алкоголя — выясняем, можно ли садиться за руль

Брось кубик — играем в настолки с онлайн-кубиком

Русская рулетка — игра на везение с револьвером на шесть пуль

Шар предсказаний — узнаём предсказания из будущего

В конкурсе я победил со смартапом «Угадай песню» — он взял приз в категории «Ежедневные пользователи». В этом приложении виртуальные ассистенты озвучивают слова популярных песен, а пользователи угадывают их названия.

Смартап «Угадай песню»

Как всё устроено: инструменты, модерация и юридические тонкости

Чтобы рассказать подробнее о своих смартапах и тонкостях их создания, объясню, как устроена платформа и что она предлагает разработчикам. Пространство, в котором участники сообщества создают навыки, называется SmartMarket Studio. Когда я только присоединился к комьюнити, там почти ничего не было (или было, но плохо работало). Сейчас там есть всё: от гайдов и документации до инструментов и возможности подключить монетизацию.

Инструментов несколько, и они придуманы для разработчиков с разным опытом. Самый простой инструмент — Graph, визуальный редактор. В нём смартап можно собрать как конструктор, используя текст, изображения и аудио. Всё интуитивно понятно, а код в большинстве случаев писать необязательно. Второй инструмент — Code. Это среда разработки, где нужно кодить на SmartApp DSL и JavaScript. Ещё один инструмент — открытый протокол API. Его разработчики используют, чтобы писать приложения на своих серверах, а потом добавлять их в SmartMarket.

Начинал я всегда с проработки сценария и делал это в обычном текстовом документе. Там я прописывал первые реплики виртуальных ассистентов, вероятные ответы пользователей, развилки — сценарий приложения от и до. Когда становилось понятно, каким получится навык, я просто переносил это в конструктор. Сперва в конструкторе оказывался текст, затем — картинки и звуки. В среднем создание смартапа у меня занимает семь дней. Если приложение получается сложным и приходится много кодить, срок может растянуться до нескольких месяцев — такие случаи я тоже знаю.

Так выглядит в конструкторе приветствие и процесс «узнавания» старого игрока
А это — сам процесс игры 
Смартап можно запустить несколькими командами

Закончив, я мог попросить кого-то из чата найти смартап по названию и протестировать его, чтобы проверить, корректно ли всё работает. Доступ получал только тот, кого попросили. Когда смартап готов, его нужно отправить на модерацию. Если разработчик внимательно изучил требования и гайды, она занимает один день. Если в навыке всё же нашли ошибки, ещё два-три дня обычно уходит на доработку. Модераторы работают внимательно: если предложение построено неграмотно или где-то не там стоит точка, они на это укажут. С одной стороны, иногда это раздражает, с другой — было бы неправильно выкатывать сырые смартапы. Если подходить к модерации спустя рукава, разработчики расслабятся, качество навыков снизится, а пострадают из-за этого пользователи.

По моему опыту, модераторы всегда реагируют быстро. Например, свой смартап «Русская рулетка» я отправил на модерацию 29 декабря и очень хотел опубликовать его до конца года. Модераторов смутило, что дети могут воспринять шуточные инструкции как руководство к действию и начать играть с опасными предметами. Сначала смартап завис на модерации. В итоге мы с модераторами и юристами нашли подходящую формулировку с предупреждением для детей и за несколько часов до Нового года его опубликовали.

При создании смартапа важно учитывать юридические тонкости, о которых начинающие разработчики могут не подозревать. Например, для моего навыка «Море волнуется раз» мне понадобилась музыка. Смартап построен на основе всем известной игры, когда ведущий произносит слова «Море волнуется раз, море волнуется два, море волнуется три — морская фигура, замри!», и игроки застывают в определённых позах. Я хотел, чтобы во время игры звучала музыка, и нашёл подходящую песню украинской артистки. Чтобы не нарушать авторские права, я связался с ней и получил разрешение. Многие не разбираются в таких тонкостях, поэтому команда SmartMarket отвечает и на вопросы, связанные с законодательством.

После прохождения модерации смартапы появляются в каталоге. Сейчас все мои навыки живут на четырёх поверхностях: в SberPortal, SberBox и приложениях Сбер Салют и СберБанк Онлайн. На всех поверхностях, кроме банковского приложения, смартап появляется моментально. И только если он работает корректно там, его пропускают в СберБанк Онлайн.

Монетизация и онлайн-витрины: немного о возможностях для заработка

В конкурсе разработчиков SmartMarket можно победить только один раз, поэтому участвовать я больше не смогу. Делать смартапы я продолжу — сейчас мне интересна коммерческая разработка. Начал я с монетизации — подключил её к смартапу «Угадай фильм». Напомню, в этом приложении ассистент описывает фильм, а пользователь угадывает название. На старте у пользователя есть семь подсказок и пять возможностей пропустить ход. Когда они заканчиваются, он может докупить себе 10 подсказок и 10 пропусков хода за 65 рублей. Я был одним из первых тестировщиков функции монетизации — мы вместе с командой SmartMarket работали над тем, чтобы разработчики могли подключить опцию легко и быстро.

Смартап «Угадай фильм». Так выглядит предложение купить подсказки и возможности пропустить ход

Недавно я стал аккредитованным партнёром SberDevices. В SmartMarket есть специальная программа для разработчиков со статусом ООО или ИП, которая позволяет им принимать коммерческие заказы. Если какой-то компании нужен смартап, команда SmartMarket направляет её к аккредитованным разработчикам, которые уже сделали несколько качественных навыков. Мне интересно посмотреть на задачи, с которыми приходит бизнес, и поработать с ним. Ещё я, как и всё сообщество, надеюсь, что в смартапы разрешат добавлять рекламу — это существенно упростит жизнь тем, кто хочет зарабатывать на приложениях.

Новые функции я обычно тестирую сразу. Например, недавно в редактор Graph добавили возможность создавать карточки товаров прямо в конструкторе. Другими словами, теперь смартап можно превратить в маленький онлайн-магазин. Сейчас я собираюсь вплотную заняться созданием Canvas App — смартапов с более сложной и интересной графикой.

Советы начинающим разработчикам. Как сделать интересный смартап

Тем, кто хочет попробовать сделать свой первый смартап, я рекомендую в первую очередь придумать интересный сценарий. Представьте, кто и как будет использовать навык, в каких обстоятельствах, что там должно быть. Например, смартап «Море волнуется раз» я придумал на даче: к нам часто приходили поиграть дети, и их постоянно нужно было чем-то занимать. Я решил сделать навык, в котором виртуальный ассистент был бы полноценным ведущим. Для этого я прописал сценарий, добавил туда около 30 фигур, которые можно загадывать детям, а ещё добавил взрослый режим. Продумал детали: к примеру, виртуальный ассистент делает паузы и ждёт, когда игроки замрут в загаданных позах. Совсем как настоящий ведущий.

Смартап «Море волнуется раз»

Нельзя забывать о том, что смартапы — это мультимодальные приложения, и взаимодействовать с ними пользователи будут разными способами, в том числе голосом. Поэтому постарайтесь использовать возможности голосового управления по максимуму. И напоследок — список полезных советов:

1. Постарайтесь предугадывать шаги пользователя. Чем точнее вы будете понимать, как может повести себя человек, тем логичнее получится сценарий смартапа. Так пользователь не заблудится и получит удовольствие от игры.

2. Запоминайте историю действий пользователя, чтобы он не терял игровой прогресс и мог переходить на следующие уровни.

3. Не забывайте добавлять саджесты в диалогах — подсказки для пользователей. Например, после приветствия ассистент может предложить пользователю два варианта: «Начать играть» и «Узнать правила».

4. Не делайте слишком сложные игровые смартапы: пусть пользователь почаще выигрывает и добивается желаемого. Так вы мотивируете его возвращаться.

5. Не забывайте о том, что Сбер, Афина и Джой, персонажи семейства Салют, общаются к пользователям по-разному. Если Сбер и Афина говорят пользователю «вы», то Джой обращается на «ты». Поэтому для этого персонажа реплики, обращённые к пользователю, нужно прописывать отдельно.

6. Добавьте экшена: звуков, картинок, шуток и неожиданных реплик. Всё это сделает виртуального ассистента живым, а смартап — интересным.

7. Не забывайте о голосовом управлении. Я заметил, что многие разработчики делают приложения «для экрана», рассчитывая на то, что пользователи будут использовать тачскрин, а не голос. Но во все мои смартапы можно играть с закрытыми глазами, даже если пользователь запускает их на SberPortal. При этом остальные способы взаимодействия я не игнорирую: можно управлять сценарием с помощью тачскрина, а в будущем в смартапах появится и управление жестами.

8. Если вы — новичок в создании приложений для виртуальных ассистентов, начните с простого. Изучите, как устроены инструменты SmartMarket Studio, почитайте документацию и потренируйтесь. Не стоит сразу же пытаться создать Canvas App со сложной логикой и сценариями. Вы обязательно доберётесь до этого уровня, но чтобы не растерять энтузиазм, лучше начать с Chat App.

И ещё кое-что: я советую и начинающим, и опытным разработчикам вступить в сообщество. Это очень душевное и полезное комьюнити, пожалуй, лучшее из тех, что я встречал. В чате всегда можно попросить совет или просто пообщаться. Я нашёл там много новых знакомых — иногда разработчики даже устраивают неформальные офлайн-встречи, чтобы что-то обсудить.

Надеюсь, мой рассказ помог вам разобраться в том, как устроен SmartMarket и чем там занимаются разработчики. Если у вас остались какие-то вопросы или вы хотите присоединиться к сообществу — переходите по ссылке, здесь будут рады помочь. И удачи вам!

{ "author_name": "SberDevices", "author_type": "editor", "tags": [], "comments": 0, "likes": 9, "favorites": 14, "is_advertisement": false, "subsite_label": "dev", "id": 247448, "is_wide": true, "is_ugc": false, "date": "Tue, 18 May 2021 12:15:23 +0300", "is_special": false }
(function () { let cdnUrl = `https://specialsf378ef5-a.akamaihd.net/SelectelBranding/images/` let previousArticleNumber = null let currentArticleNumber = 0 let platform = 'Desktop' let articles = [ { name: 'camera', url: `${cdnUrl}CameraCat`, text: 'умную камеру для\u00A0наблюдения за\u00A0котиками', link: 'https://vc.ru/selectel/306690', num: 3 }, { name: 'chill', url: `${cdnUrl}ChillCat`, text: 'трекер, который подскажет, когда пора отдохнуть', link: 'https://vc.ru/promo/288561-eye-tracker', num: 1 }, { name: 'cloud', url: `${cdnUrl}CloudCat`, text: 'котика: даёшь ему «пять», а\u00A0он делает бэкап в облако', link: 'https://vc.ru/dev/294799-maneki-neko', num: 2 } ] let buttonCycle = document.querySelector('.button--cycle') let buttonChoose = document.querySelector('.button--choose') let buttonMobile = document.querySelector('.button--mobile') let textField = document.querySelector('.selectel-footer-subtitle') let imageAgent = document.querySelector('.image--agent') let banner = document.querySelector('.selectel-footer') buttonCycle.addEventListener('click', cycleClick) buttonChoose.addEventListener('click', () => sendEvent(`Promo ${articles[currentArticleNumber].num} Left`, 'Click')) buttonMobile.addEventListener('click', () => sendEvent(`Promo ${articles[currentArticleNumber].num} Left`, 'Click')) let media = window.matchMedia("(max-width: 570px)") media.addEventListener('change', matchMedia) function matchMedia() { if (media.matches) { platform = 'Mobile' } else { platform = 'Desktop' } update() } matchMedia() function cycleClick(event) { sendEvent(`Promo ${articles[currentArticleNumber].num} Right`, 'Click') if (event) { event.preventDefault() event.stopPropagation() } window.open('https://vc.ru/tag/selectelDIY', '_blank') //cycle(event) } function cycle(event) { // incrementArticleNumber() textField.innerHTML = generatedText() imageAgent.src = articles[currentArticleNumber].url + platform + '.svg?3' imageAgent.setAttribute("class", "") imageAgent.classList.add('image--agent', articles[currentArticleNumber].name) banner.href = articles[currentArticleNumber].link } function update() { banner.href = articles[currentArticleNumber].link imageAgent.src = articles[currentArticleNumber].url + platform + '.svg' textField.innerHTML = generatedText() } function incrementArticleNumber() { previousArticleNumber = currentArticleNumber if (currentArticleNumber >= articles.length - 1) { currentArticleNumber = 0 } else { currentArticleNumber++ } } const sendEvent = (label, action = 'Click') => { const value = `SelectelDIY — loc: Footer — ${label} — ${action}`; if (window.dataLayer !== undefined) { window.dataLayer.push({ event: 'data_event', data_description: value, }); } }; function generatedText() { let defaultText if (platform === 'Desktop') { defaultText = `Мы тут собрали %text%. Хотите научим?` } else { defaultText = `Мы тут собрали %text%.` } return defaultText.replace('%text%', articles[currentArticleNumber].text) } function getRandom(min, max) { min = Math.ceil(min) max = Math.floor(max) return Math.floor(Math.random() * (max - min + 1)) + min } (function create() { currentArticleNumber = getRandom(0, articles.length - 1) cycle() let page = document.querySelector('.page--entry') if (page) { function insertAfter() { let parents = page.querySelectorAll('[data-id="7"]') let referenceNode = parents[0] referenceNode.parentNode.insertBefore(banner, referenceNode.nextSibling); loaded() } setTimeout(() => insertAfter(), 0) } }()) function loaded() { banner.classList.add('loaded') } loadImages([ `${cdnUrl}CameraCatDesktop.svg`, `${cdnUrl}ChillCatDesktop.svg`, `${cdnUrl}CloudCatDesktop.svg`, `${cdnUrl}CameraCatMobile.svg`, `${cdnUrl}ChillCatMobile.svg`, `${cdnUrl}CloudCatMobile.svg?3`, ]) function loadImages(urls) { return Promise.all(urls.map(function (url) { return new Promise(function (resolve) { var img = document.createElement('img'); img.onload = resolve; img.onerror = resolve; img.src = url; }); })); } }())
0
0 комментариев
Популярные
По порядку

Комментарий удален

Читать все 0 комментариев
Как Озон спустя неделю обещаний о доставке товара молча отменил мой заказ

Добрый день, мой первый пост о той ситуации, с которой наверное столкнулись многие.

ПСБ запустил личный кабинет для предпринимателей. Там можно следить онлайн за каждым своим терминалом

Сервис предоставляется бесплатно.

Любителям автоматизации пост

Привет! Это мой первый пост на этой платформе. Я не совсем ещё знаком с местными правилами, но решил попробовать написать пост об одном из своих Telegram ботов и поделиться им.

В Петербурге объявили локдаун с 30 октября по 7 ноября: работать будут продуктовые магазины и аптеки Статьи редакции

Кафе и рестораны смогут работать навынос и на доставку, будут открыты парикмахерские, театры и музеи.

Правительство утвердило правила идентификации пользователей мессенджеров с марта 2022 года Статьи редакции

Сервисы должны будут запрашивать данные у операторов, а те — предоставлять их в течение 20 минут после регистрации пользователя.

Cloud CDN: что это такое, как устроено и кому нужно. Разбираем на примере бургеров

Cloud CDN — это сеть быстрой доставки статического контента в формате услуги облачного провайдера. Объяснить, как работает технология, проще всего на примере — сравнить Cloud CDN с популярным продуктом, который выглядит плюс-минус одинаково вне зависимости от того, заказали вы его в Москве, Питере или Нью-Йорке. Знакомьтесь: классический бургер.…

Как не попасть в карьерную ловушку тимлида: личный опыт

Кажется, что тимлиду просто некуда расти: дальше надо либо идти в менеджмент, либо наоборот, становиться узконаправленным разработчиком. По просьбе «Лаборатории Касперского» Евгений Мацюк, который прошел в компании неординарный путь, рассказал о своих карьерных развилках во время и после тимлидства, а также поделился опытом горизонтального роста.

Я устал жить на автомате и сделал бота в Telegram, который напоминает сколько мне осталось жить

Теперь бот присылает каждую неделю новую таблицу жизни, где видно сколько мне осталось до 90 лет. Красный квадрат – 1 прожитая неделя.

Пример календаря жизни. @life_table_bot
Как OTUS стал платформой для самореализации. История преподавателя

Наш преподаватель, специалист по Data Science, решил поделиться своей историей преподавания. Он рассказал, как пришел в эту сферу, с какими трудностями столкнулся на пути к преподаванию и что ему помогает. А еще поделился советами, как поддерживать внимание студентов и сделать занятия полезными и увлекательными.

Исследование: сотрудники хотели бы иметь комнату отдыха, бесплатный сок, а работодатели уже готовы покупать ЗОЖ-снеки

Онлайн-сервис доставки продуктов и товаров СберМаркет и исследовательское агентство Research Me спросили сотрудников, как они хотели бы питаться в офисе и что в нем видеть. В опросе приняли участие более 1500 работающих людей по всей России. Сервис также спросил работодателей – В2В-клиентов СберМаркета: что они покупают в офис, что точно никогда…

null