Что, если бы голосовое приложение нетривиальной сложности было бы реализовано с различными подходами, и все это было бы с открытым исходным кодом? Именно этому и посвящен проект Dice Championship, и я надеюсь, что он принесет некоторую образовательную ценность сообществу разработчиков голосовой связи.

Что именно означает «разные подходы» для этого проекта?

Я намеренно оставил его расплывчатым, потому что я планирую сделать его максимально удобным. Я имею в виду некоторые направления подходов:

  • Различные способы реализации рейтинговых таблиц, например DynamoDB, MySQL, GameOn и таблицы Google
  • Различные языки программирования, например Javascript, Typescript, Python, PHP, .NET / C # и Java
  • Различные SDK / платформы, например Фреймворк Jovo и ASK SDK
  • Различные платформы разработки, например VoiceFlow и BotTalk
  • Различные помощники, например Алекса, Google Ассистент и Биксби
  • Различные расширения, например APL 1.1, ISP, закадровый голос и т. Д.

И в чем преимущество использования всех этих разных версий одного и того же голосового приложения?

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

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

В этом есть большой смысл! А теперь расскажите нам о реальном голосовом приложении.

Конечно, с удовольствием! Фактически, вы можете попробовать его, если хотите - он опубликован в канадских, немецких и американских магазинах Alexa Skill.

Меня бы не было, если бы я упустил возможность сделать это #VoiceGame, но это очень просто: в каждом раунде приложение бросает десять кубиков для вас: складывает номиналы с вашей оценкой и сравнивает ее с вашими собственными рекордами и глобальной таблицей лидеров. Если вы улучшите одно из обоих, вы получите положительное сообщение и звук, в противном случае вы получите мягкий отрицательный ответ, и вас попросят повторить попытку.

Моя личная техническая зона, очевидно, - это фреймворк Jovo (на Javascript), и я использую ключи ответа i18n даже для одноязычных голосовых приложений (чтобы отделить контент от логики). Итак, вот диаграмма с типичным диалоговым окном навыка "Чемпионат по играм в кости" и разбивкой по клавишам ответа и функциям-обработчикам, которые генерируют каждую часть ответ:

В чем дело с функциями обработчика? Это актуально?

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

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

Какие версии «Чемпионата по играм в кости» существуют на данный момент?

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

Вот версии, которые доступны прямо сейчас:

  • Базовая версия
    Мне нравится думать об этой версии как о прототипе счетчика, который определяет исходный набор функций и с которыми сравниваются различные версии. Кроме того, он более подробно документирован, чем другие версии. Он использует фреймворк Jovo в Javascript (за этим решением нет повестки дня, это то, с чем я больше всего знаком), реализует таблицу лидеров с AWS DynamoDB (потому что это то, что я считаю ванильным выбором для предоставления голосовых приложений с постоянством между сессиями), и использует звуки из ASK Sound Library.
  • Live Alexa Skill Version
    Это версия, опубликованная в магазинах Alexa Skill. Технически он похож на базовую версию, но имеет все функции для получения навыка через сертификацию (тогда как базовая версия несколько упрощена), имеет всю информацию (модель, манифест и ресурсы перевода) для en-US, en-CA и de-DE locales и использует лицензионные звуковые эффекты от Audiojungle.
    Вы можете ожидать, что эта версия будет со временем привлекать наибольшее внимание и обновления.
  • Версия GameOn
    Я уже построил и опубликовал это, когда Skills GameOn SDK был недавно выпущен, но изменил его структуру, чтобы вписаться в этот проект. Эта версия похожа на базовую, но использует Amazon GameOn вместо DynamoDB для реализации таблицы лидеров.

Хорошо, а что дальше?

Версии, над которыми я активно работаю на момент написания этой статьи, - это AWS Aurora, MySQL (через AWS RDS) и Версия Google Spreadsheet.

У меня такие большие планы на этот проект, но я думаю, что буду придерживаться того, что сейчас популярно, и займусь MongoDB (как еще одна реализация таблицы лидеров), ASK SDK v2 и VoiceFlow.

Что, если бы я хотел увидеть «Чемпионат по играм в кости» на моем любимом языке или на моей любимой платформе?

Мне нравится этот вопрос! У вас есть два варианта:

  • Свяжитесь со мной и дайте мне знать! Если я знаю, что есть спрос, я могу выделить ваш любимый подход в первую очередь.
  • Реализуйте сами и поделитесь! Мне особенно нравится этот вариант, потому что на результат не будут влиять мои собственные (кроссплатформенные) соглашения о кодировании. Если вы хотите координировать свои усилия со мной, добро пожаловать, но это не обязательно.

Кстати, это проект Jovo?

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

Спасибо, что дочитали до этого места! Если вам нравится идея этого проекта и вы с нетерпением ждете ее развития, рассмотрите возможность распространения информации, поделившись этой статьей, участвуя (хлопая в ладоши / лайкая / глядя / комментируя) или внося свой вклад. Жду этого с нетерпением! :)