Jovo стремится создать среду разработки, которая позволяет писать код один раз и доставлять его на несколько голосовых платформ (в настоящее время это Alexa и Google Assistant). Опять же, экосистема голосовой связи идет по тому же пути, что и разработка приложений, пытаясь найти способы поддержки нескольких баз кода. С каждой голосовой платформой все еще есть несколько шагов, которых нельзя избежать, но вы можете написать основную логику своего приложения на JavaScript.
Для этого поста я создал простое приложение, которое сообщает пользователю, какая последняя статья на моем сайте.
Установить Jovo
Jovo - это модуль NPM, поэтому установите его с помощью:
npm install -g jovo-cli
Эта команда устанавливает служебную программу командной строки, которая поможет вам создавать проекты и управлять ими, включая полезную команду создания проекта:
Затем установите другие зависимости, которые потребуются вашему проекту Jovo:
cd <project_name>
npm install
Вы можете запустить приложение с помощью node index.js
или jovo run
, но, поскольку все голосовые платформы работают через приложения, подключенные к Интернету, вам необходимо представить свое приложение в Интернете с помощью такого инструмента, как ngrok, и получить безопасную версию URL-адреса, который он генерирует. .
Подключение Jovo к Alexa
Чтобы код вашего приложения работал с Alexa, вам нужно сделать два начальных шага (но могут быть и другие в зависимости от его сложности).
1. Добавьте намерения
Намерения сообщают Alexa, что делать с конкретными действиями по умолчанию и настраиваемыми действиями, а также настраиваемыми фразами, которые пользователи могут использовать для их запуска. Если вы ничего не укажете для действий по умолчанию, будут использоваться настройки платформы по умолчанию. Добавьте следующее в раздел намерений Создателя Alexa вашего навыка:
{ "languageModel": { "intents": [ { "name": "AMAZON.CancelIntent", "samples": [] }, { "name": "AMAZON.HelpIntent", "samples": [] }, { "name": "AMAZON.PauseIntent", "samples": [] }, { "name": "AMAZON.ResumeIntent", "samples": [] }, { "name": "AMAZON.StopIntent", "samples": [] }, { "name": "LatestPostIntent", "samples": [ "latest post", "latest news", "latest article", "latest blog" ], "slots": [] } ], "invocationName": "<your_invocation>" } }
Как вы можете видеть выше, я изменил только пользовательский LatestPostIntent
и добавил несколько альтернативных «высказываний», которые могут вызвать это намерение. Это намерение напрямую связано с кодом приложения, но я вернусь к нему позже.
2. Добавьте URL-адрес веб-перехватчика.
На вкладке Конфигурация измените Тип конечной точки службы на HTTPS и добавьте свой открытый URL сверху с добавлением /webhook
:
Инструкции Google
1. Добавьте намерения
Настроить Google Assistant сложнее, по умолчанию вам предоставляется меньше. Для повышения скорости в этой статье я рекомендую вам импортировать намерения, созданные мной, с помощью параметра Настройки ›Экспорт и импорт. Вы можете увидеть особенности LatestPostIntent
ниже, включая триггерные фразы:
2. Добавьте URL-адрес веб-перехватчика.
На вкладке Выполнение включите Webhook и добавьте указанный выше URL-адрес с добавлением /webhook
:
Код
Благодаря Jovo код этого приложения довольно прост и требует небольшого обновления до index.js
в нижней части файла:
const handlers = { 'LAUNCH': function() { app.toIntent('LatestPostIntent'); }, 'LatestPostIntent': function() { parser.parseURL('https://gregariousmammal.com/feed.xml', function(err, parsed) { console.log(parsed.feed.title); parsed.feed.entries.slice(1).forEach(function(entry) { console.log(entry.title + ':' + entry.link); app.tell(entry.title); }) }); }, };
Метод toIntent
позволяет перейти к новому намерению в рамках того же запроса - в данном случае LatestPostIntent
. Логика для этого намерения - это JavaScript, использующий rss-parser для анализа RSS-канала сайта и возврата одного результата, о котором говорит фреймворк.
Вот я пробую приложение на своем Echo.
А в симуляторе Google Assistant:
Делаем это еще проще
Если вы до сих пор читали, может показаться, что Jovo не экономит вам столько времени, как вы надеялись, и это верный комментарий. Частично это связано с необходимостью посещать разные порталы разработчиков для подключения кода к платформе, но также потому, что Jovo - это новая платформа. Я поговорил с командой разработчиков платформы, и они скоро выпустят новую версию. Эта версия уменьшит потребность в создании ваших моделей взаимодействия на каждой платформе. Вместо этого вы можете создать один файл локально, и новые команды интерфейса командной строки будут передавать его на платформы за вас. Он также представит немного другую структуру файла, чем описано выше, и планирует в ближайшее время добавить интернационализацию строк.
Если вы заинтересованы в разработке голосовых интерфейсов для нескольких платформ, но хотите, чтобы ваш код был максимально управляемым, поэкспериментируйте с платформой в ее нынешнем виде, зарегистрируйтесь в Jovo Slack и следите за этими изменениями.
Первоначально опубликовано на dzone.com.