Найти тему
Perfecto Web

Смешай краски и выиграй «Премию Алисы»🥇

Оглавление

Привет, дорогой друг! Знаешь ли ты, какой цвет получится, если смешать фиолетовый и бирюзовый? Многие не знают, включая нас, до разработки навыка «Миксер Красок».

С чего все началось?

Первое — это осознание, что ближайшее будущее за голосовым управлением. Все больше и больше техники оснащается голосовым управлением. Тут мы познакомились с Алисой и ее возможностями поглубже. Оценили ее потенциал и удобный подход для написания навыков для нее.

Второе — поиск проблемы. Далеко искать не пришлось, мы заметили периодичность определенного события у большинства детей, среди знакомых. Детям интересны эксперименты! А смешивание красок тот еще эксперимент. Ведь это маленькое чудо, когда смешиваешь 2 цвета и получаешь совершенно другой! Скорее всего, именно так и мыслят дети от 3х лет, которые при рисовании часто смешивают краски с целью инициализации этой маленькой магии.

Ознакомительная часть

Весь путь ознакомления, тестирования и «Hello World» занял всего один вечер. Спасибо тут Яндексу, за удобный и интуитивно понятный интерфейс взаимодействия. Так как владеем навыками Python и Node.js, то для нас путь был еще легче.

-2

В качестве среды разработки остановились на Node.js. На нем не мало высоконагружаемых проектов было реализовано нами. Так сказать, знаем много входов и выходов, которые удовлетворяют наши ожидания.

Разработка 👨‍💻

Итак, с Node.js определились. Однако, у нас должна быть определенная база данных. База всех возможных цветов, база вопросов и ответов, включая все сопутствующие признаки и атрибуты. Сначала, мы собрали все эти данные в JSON файл, с целью развернуть в какую-то СУБД в будущем. Однако, увидев в конечном итоге, что вся нужная база занимает не более 15-20кб, решили оставить "базу данных" в исходном формате. Отказались от использования какого-либо СУБД, так как это в лишний раз прибавит несколько миллисекунд на обработку каждого запроса.

-3

При разработке качественного навыка, каждая миллисекунда на счету. Алиса дает серверу на ответ максимум 1.5-3 секунды. Если ответа не будет за это время, Алиса выдаст пользователю «Навык Миксер Красок не отвечает» и закроет навык. Подобное поведение крайне не допустимо и достаточно негативно может сказаться на навыке.

1. Ответы от пользователя

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

При таком подходе:

  • ответ «зеленый» имеет 100% коэффицент;
  • ответ «зеленый, зеленый» имеет 99% коэффицент;
  • ответ «зеленая» имеет 95% коэффицент;
  • ответ «получится зеленый» имеет 70% коэффицент;

Логика обработки изначальна старается найти максимальный коэффицент среди возможных методов у навыка. Если такого нет, то она обрабатывает сценарий по максимально возможному коэффициенту, который указан как минимальный порог соответствия. В нашем случае 70% и более.

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

2. Голосовое сопровождение

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

3. Логирование и обновление

Для отслеживания и логирования каждого действия, каждого ответа и качества ответа мы написали собственный бякэнд, который собирает все диалоги и дает нам возможность наглядно понимать что происходит во время игры. Подобного публичного метода нет у Яндекса, однако, это очень важно, так как любого рода статистика, фидбек и прочие данные крайне важны для усовершенствования навыка.

Таким образом, в течении недели мы практически 24 часа мониторили навык, исправляли, изменяли и дописывали его, для максимально комфортного взаимодействия с ним.

4. Заключение разработки

Разработка самой логики заняло пару вечеров. Еще несколько вечеров на тестирование среди друзей. Теперь можно отправить навык на публикацию в каталоге. Изначально, сервер развернули в собственной сети на Raspberry Pi. Отличный вариант, когда все под рукой. Однако, после публикации, перевели на сторонний сервер с высоким uptime и лучшим железом.

Публикация и победа 🚀

Следующей стадией, после тщательной проверки, была публикация навыка в каталоге Яндекс Алисы. Особого трафика не наблюдали от каталога, так и не поняв каким образом формируется ранжирование на главной странице. А чтобы найти навык, надо поискать что-то похожее. Однако, это не помешало распространить навык среди знакомых и так сказать начать некий бета-тест. Практически всем он понравился. Выявляя новые недочеты, оперативно фиксили их. После всего этого, решили подать заявку на «Премию Алисы», буквально за неделю до завершения раунда. Проходит примерно 10 дней и с нами связывается представитель от Яндекса!

-4

Далее определенные процедуры, согласно условиям конкурса и вуаля! Мы выиграли Премию Алисы за сентябрь 2019! 🥰 Это была наша маленькая победа, которая сильно мотивировала и дала понять, что двигались мы в нужном направлении. Ведь это наш первый навык и он получил «одобрение» от Яндекса! На этом все, дорогой читатель.

Запустить игру можно голосовой командой из Яндекса:

  • «Поиграем в Миксер Красок»
  • «Запусти навык Миксер Красок»

Вот так выглядит наш путь в голосовые приложения для Яндекс Алисы. Как и везде, любой путь начинает с маленьких шагов!

Подписывайся, скоро будет новая статья о новом, очень интересном навыке, который уже разработан и опубликован в каталоге!

Текст: Давид Петросян

Команда: Perfecto Web