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.