Как создать крутой экшен для Google Ассистента. Лайфхаки от Just AI
Экосистема вокруг Google Ассистента развивается невероятно быстро. В апреле 2017 года пользователям были доступны всего 165 экшенов, а сегодня только на английском их — более 4500. Насколько разнообразным и интересным станет русскоязычный уголок вселенной Google Ассистента, зависит от разработчиков. Есть ли формула «идеального экшена»? Зачем отделять код и контент от сценария? О чем нужно помнить, работая над разговорным интерфейсом? Мы попросили команду Just AI, разработчиков технологий разговорного AI, поделиться лайфхаками по созданию приложений для Google Ассистента. На платформе Aimylogic от Just AI созданы несколько сотен экшенов, среди которых есть весьма популярные — в игру «Да, милорд» сыграли уже более 140 тысяч человек. Как правильно построить работу над экшеном мечты, рассказывает Дмитрий Чечёткин, руководитель стратегических проектов Just AI.
Взболтать, но не смешивать: роль сценария, контента и кода
Любое голосовое приложение состоит из трех компонентов — диалоговый сценарий, контент, с которым взаимодействует экшен, и программируемая логика, т.е. код.
Сценарий — это, пожалуй, основное. Он описывает, какие фразы может говорить пользователь, как экшен должен на них реагировать, в какие состояния при этом он переходит и как именно отвечает. Я программирую 12 лет, но когда дело доходит до создания разговорного интерфейса, я прибегаю к различным визуальным инструментам.
Для начала не помешает нарисовать простенькую схему сценария на бумаге. Так вы определитесь, что и за чем следует в диалоге. Затем уже можно переносить сценарий в какой-то продукт для его визуализации. Google предлагает для создания полностью кастомизированного диалога Dialogflow, а для самых простых и коротких сценариев, не требующих обширного понимания языка, Actions SDK. Еще один вариант — визуальный конструктор с NLU Aimylogic (как создать экшен для Google Ассистента в Aimylogic), в котором можно построить сценарий и без глубинных навыков программирования, к тому же сразу протестировать экшен. Я использую Aimylogic, чтобы увидеть, как будут работать все переходы в моем диалоге, проверить и провалидировать саму гипотезу и идею того, что я хочу реализовать.
Зачастую требуется и программируемая логика. Например, ваш сайт может выглядеть классно, но, чтобы он что-то «умел», ему придется обязательно обращаться к коду на сервере — и уже код сможет что-то посчитать, сохранить и вернуть результат. То же самое со сценарием для экшена. Код должен работать бесперебойно, и лучше, если совершенно бесплатно. Сегодня нет нужды платить тысячи долларов, чтобы код в 50, 100, 1000 строк был доступен для вашего экшена в режиме 24/7. Я использую для этого сразу несколько сервисов: Google Cloud Functions, Heroku, Webtask.io, Amazon Lambda. Google Cloud Platform вообще предоставляем бесплатно достаточно широкий набор сервисов в своем Free Tier.
Сценарий может обращаться к коду с помощью самых простых вызовов по http, к которому мы все привыкли. Но при этом код и сценарий диалога не смешиваются. И это хорошо, потому что так можно поддерживать оба этих компонента в актуальном состоянии, расширять их как угодно, не усложняя работу над экшеном.
Третий компонент — контент. Это данные, которые могут все время меняться, не влияя при этом на структуру самого сценария. Например, вопросы викторины или эпизоды в нашей игре «Да, милорд». Если бы контент жил вместе со сценарием или вместе с кодом, то такой сценарий становился бы все более громоздким. И в этом случае, какой бы инструмент вы не использовали для создания экшена, работать с ним вам будет все равно неудобно. Поэтому я рекомендую хранить контент отдельно: в базе данных, в файле в облачном хранилище или в таблице, к которой сценарий может также обращаться посредством API, чтобы получать данные на лету. Отделив контент от сценария и от кода, можно привлекать для работы над экшеном и других людей — они смогут пополнять контент независимо от вас. А развитие контента очень важно, потому что пользователь ждет от экшена, к которому он возвращается раз за разом, свежего и разнообразного содержания.
Как использовать обыкновенные таблицы в облаке, чтобы не хранить весь контент в самом сценарии? Например, в игре «Первое или второе» мы использовали облачную Excel-таблицу, где любой из участников проекта мог добавлять новые вопросы и ответы для экшена. К этой таблице сценарий на Aimylogic обращается с помощью одного-единственного http-запроса через специальный API. Как видите, сам сценарий небольшой — потому что в нем не хранятся все данные из таблицы, которые обновляются каждый день. Таким образом мы отделяем диалоговый сценарий от контента, что позволяет нам работать с контентом самостоятельно и коллективно пополнять сценарий свежими данными. Кстати, в эту игру уже сыграли 50 тысяч человек.
Чек-лист: о чем нужно помнить, создавая разговорный интерфейс
У любого интерфейса есть компоненты, с которыми взаимодействует пользователь: списки, кнопки, картинки и прочее. Разговорный интерфейс существует по тем же законам, но принципиальное отличие в том, что человек общается с программой голосом. От этого мы и должны отталкиваться, создавая свой экшен.
Правильный экшен не должен уметь всё на свете. Когда человек говорит с программой, он не может держать в голове много информации (вспомните, как вы выслушиваете многоэтажные персональные предложения от банка или мобильного оператора по телефону). Откажитесь от лишнего и сосредоточьтесь на одной единственной, но наиболее важной функции вашего сервиса, которую будет удобнее всего выполнять именно с помощью голоса, не прикасаясь к экрану.
Например, у вас есть сервис по продаже авиабилетов. Не стоит надеяться, что клиент будет проворачивать весь привычный сценарий голосом — искать билет по пяти-шести критериям, выбирать между перевозчиками, сравнивать и оплачивать. А вот приложение, которое подсказывает минимальную цену по выбранному направлению, вполне может пригодиться: это очень быстрая операция, и ее удобно выполнить голосом, не открывая сайт, не проходя каждый раз заново сценарий «form-filling» (когда вы заполняете поля и выбираете фильтры).
Экшен — это про голос, а не про сервис в целом. Пользователь не должен пожалеть, что запустил экшен в Ассистенте, а не зашел, например, в приложение или на сайт. Но как понять, что без голоса не обойтись? Для начала примерьте идею экшена на себя. Если вы с легкостью можете выполнить то же действие и без голоса, толку не будет. Одно из моих первых приложений для Ассистента — «Йога для глаз». Это такой виртуальный личный тренер, который помогает делать зарядку для зрения. Сомнений в том, что тут нужен голос, не возникает: глаза заняты упражнениями, вы расслаблены и сконцентрированы на устных рекомендациях. Подглядывать в памятку, отвлекаясь от тренировки, было бы неудобно и неэффективно.
Или вот пример неудачного сценария для голосового приложения. Часто я слышу о том, как очередной интернет-магазин хочет что-то продавать через виртуального ассистента. Но заполнять корзину голосом — неудобно и непрактично. И вряд ли клиенту будет понятно, зачем ему это. А вот возможность повторить последний заказ голосом или закинуть в список покупок что-то на ходу — другое дело.
Помнить про UX. Экшен должен быть заодно с пользователем: сопровождать и направлять его по ходу диалога, чтобы он без труда понимал, что требуется сказать. Если человек заходит в тупик, начинает думать «И что дальше-то?» — это провал. Не нужно уповать на то, что ваш пользователь будет все время обращаться к справке. «Тупики» нужно отслеживать (например, в аналитике в Actions Console), а пользователю помогать с помощью наводящих вопросов или подсказок. В случае с голосовым экшеном предсказуемость — не порок. Например, в нашей игре «Да, милорд» каждая фраза заканчивается так, что участник может ответить либо «да», либо «нет». От него не требуется придумывать что-то самостоятельно. И дело не в том, что это такая элементарная игра. Просто правила срежиссированы так, что пользователю все предельно ясно.
«Хорошо говорит!». Экшен хорошо «слышит» благодаря Ассистенту, а хорошо «говорит» — благодаря разработчику сценария. Недавнее обновление дало Google Ассистенту новые варианты голосов и более реалистичное произношение. Все круто, но и разработчику стоит поразмышлять над фразой, ее структурой, звучанием, чтобы пользователю все было понятно с первого раза. Расставляйте ударения, используйте паузы, чтобы фразы экшена звучали по-человечески.
Никогда не грузите пользователя. Для экшенов, озвучивающих новостные ленты или читающих сказки детям, — это не проблема. Но бесконечно слушать речь голосового помощника, когда вы хотите заказать пиццу, сложно. Постарайтесь сделать реплики лаконичными, но не односложными и разнообразными (например, продумать несколько вариантов приветствий, прощания и даже фразы на случай, если ассистент чего-то недопонял). Диалог должен звучать натурально и дружелюбно, для этого можно добавить во фразы элементы разговорной речи, эмоции, междометия.
Пользователь не прощает глупости. Люди часто обвиняют голосовых ассистентов в глупости. И в основном это происходит, когда помощник или приложение для него не может распознать разные вариации одной и той же фразы. Пусть ваш экшен простой, как установка будильника, важно, чтобы он все же понимал синонимы, разные формы одинаковых по смыслу слов и не давал сбоя, если пользователь ответил непредсказуемо.
Как выйти из ситуаций, когда экшен отказывается понимать? Во-первых, можно разнообразить ответы в Default Fallback Intent — использовать не только стандартно предусмотренные, но и кастомные. А во-вторых, можно натренировать Fallback Intent всякими спам-фразами, не относящимися к игре. Это научит приложение не только адекватно реагировать на не относящиеся к делу запросы, но и повысит точность классификации остальных типов запросов.
И еще один совет. Никогда, никогда не делайте из вашего экшена кнопочное меню, чтобы сделать жизнь пользователя проще — оно раздражает, отвлекает от диалога и заставляет сомневаться в необходимости использовать голос.
Научите экшен вежливости. Даже самый классный экшен должен заканчиваться. В идеале — прощанием, после которого захочется вернуться к нему снова. Кстати, помните, что если экшен не задает вопроса, а просто отвечает на вопрос пользователя, он должен обязательно «закрывать микрофон» (иначе приложение не пройдет модерацию и не будет опубликовано). В случае с Aimylogic вам просто нужно добавить в сценарий блок «Завершение сценария».
А если уж рассчитываете на ретеншен, важно предусмотреть в сценарии и другие правила хорошего тона: экшен должен работать в контексте — запоминать имя и пол пользователя и не переспрашивать то, что уже уточнялось.
Как правильно работать с оценками и отзывами
Пользователи Google Ассистента могут ставить оценки экшенам и тем самым влиять на их рейтинг. Поэтому важно научиться использовать систему оценок в свою пользу. Казалось бы, нужно всего лишь дать пользователю ссылку на страницу с вашим экшеном и попросить его оставить отзыв. Но и тут есть свои правила. Например, не предлагайте оценить экшен в первом сообщении: пользователь должен понимать, чему он ставит оценку. Дождитесь, пока приложение действительно выполнит какую-то полезную или интересную юзеру миссию, и только потом предлагайте оставить отзыв.
И лучше не пытаться озвучивать эту просьбу голосом, с помощью синтеза речи — вы только потратите время пользователя. Более того, он может не перейти по ссылке, а сказать «Ставлю пять», а это совсем не то, что вам в данном случае нужно.
В игре «Да, милорд» мы выводим ссылку для отзыва только после того, как пользователь сыграл очередной раунд. И при этом не озвучиваем просьбу, а просто выводим ссылку на экран и предлагаем сыграть еще раз. Еще раз обращу внимание — предлагайте эту ссылку, когда пользователь гарантированно получил какую-то пользу или удовольствие. Если сделать это не вовремя, когда экшен что-то не понял или затормозил, можно получить негативный фидбек.
В общем, попробуйте сами наши созданные в Aimylogic экшены «Йога для глаз», игры «Первое или второе» и «Да, милорд» (а скоро в ней появятся транзакции, и милорду будет легче сохранить свою власть и богатство!). А еще недавно мы выпустили первый голосовой квест для Google Ассистента «Мир Лавкрафта» — это интерактивная драма в мистической стилистике «Зова Ктулху», где сцены озвучены профессиональными актерами, сюжетом можно управлять с помощью голоса и им же совершать внутриигровые платежи. Этот экшен разработан уже на платформе Just AI Conversational Platform, профессиональном enterprise-решении.
Три секрета Google Ассистента
- Использование музыки. Из голосовых помощников на русском языке только Google Ассистент позволяет задействовать музыкальное сопровождение прямо в сценарии экшена. Музыкальное оформление отлично звучит в игровых экшенах, да и от йоги под музыку совсем другие ощущения.
- Возможности оплаты внутри экшена. Для покупок внутри экшена (in-app purchasing) в Google Ассистенте используется платформа Google Play. Условия работы с площадкой для создателей игровых экшенов такие же, как для разработчиков мобильных приложений — от каждой транзакции разработчику отчисляется 70%.
- Модерация. Для успешного прохождения модерации у экшена должна быть Политика обработки персональных данных. Ее нужно разместить на sites.google.com, указать название своего экшена и имейл — такой же, как у девелопера в консоли разработчика, и написать, что приложение не использует данные пользователя. Модерация экшена без транзакций длится 2–3 дня, а вот модерация приложения со встроенными оплатами может занять 4–6 недель. Подробнее о процедуре ревью
Больше лайфхаков, больше кейсов и поучительных эпик-фейлов ждет разработчиков на конференции по разговорному AI Conversations, которая пройдет 27–28 июня в Санкт-Петербурге. Андрей Липатцев, Strategic Partner Development Manager Google, расскажет про международный опыт и российскую специфику Google Ассистента. А в Developers» Day Таня Ландо, ведущий лингвист Google, поговорит с участниками про диалоговые корпуса, сигналы и методологии и как их выбирать под свои задачи;, а сами разработчики поделятся личным опытом создания голосовых приложений для ассистентов — от виртуального секретаря для Google Home до голосовых игр и B2B-экшенов, которые умеют работать с закрытой инфраструктурой компании.
И, кстати, 28 июня в рамках конференции Google и Just AI проведут открытый хакатон для профессиональных и начинающих разработчиков — можно будет поработать над экшенами для Ассистента, поэкспериментировать с разговорным UX, синтезом речи и инструментами NLU и побороться за денежные призы! Регистрируйтесь — количество мест ограничено!