В этой статье речь пойдёт о голосовых интерфейсах (Voice User Interface — VUI), а также будет показано, как на Node.js можно создать приложение (навык — в терминологии платформы Яндекс.Диалоги) для голосового помощника Алисы. С помощью стороннего API наше приложение будет получать цитаты известных людей и передавать Алисе, а та, в свою очередь, зачитывать их пользователям. Также рассмотрим и один из немногих способов монетизации таких приложений — создание кнопки донации (donation — пожертвование). В общем, все должны остаться довольными.
Итак, чем же по своей сути являются голосовые интерфейсы? Дело в том, что несколько лет назад технологии достигли такого уровня развития, при котором стало возможным массовое использование самого естественного, природного способа взаимодействия человека с компьютером — посредством голоса. Целый ряд крупных IT-компаний предоставил возможность разработки «голосовых приложений» для сторонних разработчиков, создав у себя соответствующие платформы: Alexa (Amazon), Action on Google, Bixby (Samsung), Алиса (Яндекс). Теперь данные платформы генерируют мощный импульс для повсеместного распространения голосовых интерфейсов — от компьютеров и смартфонов, до бытовой техники. Похоже, что в ближайшие несколько лет произойдёт кардинальная смена привычной парадигмы взаимодействия человека с машиной: вместо кнопок и тумблеров все эти холодильники, кофеварки, СВЧ-печи и утюги будут управляться человеческим голосом.
Сегодня мы остановимся на Алисе, изначально ориентированной на поддержку русского языка, и уже имеющую весьма качественный синтезатор человеческого голоса. Алису можно вызывать из: Яндекс.Браузера; мобильного приложения Яндекс с Алисой для Android и iOS; мобильного приложения Яндекс.Навигатор для Android и iOS; Яндекс.Станции. Для навыков Алиса имеет специальный каталог, где независимые разработчики, такие как вы, могут публиковать свои приложения. И знаете, несмотря на то, что платформа находится ещё в весьма детском возрасте — Алисы уже достаточно много. Она буквально на глазах становится вездесущей! Например, скачиваний приложения Яндекс с Алисой для Android превысило 100 миллионов, а согласно данным StatCounter, в июле 2019 г. доля Яндекс.Браузер на российском рынке составила более 13%. И это только пара примеров для наглядности.
Поэтому для программистов, держащих руку на пульсе инноваций, настало время разрабатывать для голосовых интерфейсов! Давайте начнём и мы — сделаем навык, который будет слать запросы в API forismatic.com, извлекать из ответа цитаты-высказывания и имена их авторов, форматировать всё это в подобающий вид, и отправлять Алисе. Последняя, в свою очередь, (и уже без нашего участия) будет произносить и показывать эти высказывания своей аудитории. Кроме того, мы попросим Алису, чтобы тем пользователям, у кого на устройствах есть экран показывать ещё и кнопку "Поддержи проект", при нажатии на которую пользователь будет перенаправлен на страницу Я.Соберу от сервиса Яндекс.Деньги. Таким образом, люди, имеющие доброе сердце и немного денег, смогут помогать развитию вашего проекта.
Для начала, у вас на компьютере должен быть установлен Node.js с npm, а также (опционально, только для тестирования) ngrok (также см. ниже спойлер Об ngrok), и/или необходимо иметь бесплатный или платный аккаунт на ZEIT (для тестирования и развёртывания; необходимо также установить Now CLI).
Об ngrok
ngrok «пробивает тоннель» от вашего компьютера в Интернет, поэтому на время тестирования локальный компьютер становится сервером во всемирной паутине — в этом основное удобство и предназначение ngrok. Чтобы установить ngrok: на сайте ngrok.com создаём бесплатный аккаунт, скачиваем zip-архив и распаковываем его на локальной машине, например, в C:\Program Files\ngrok и прописываем в переменной среды path путь к этой папке. В командной строке или терминале выполняем команду
ngrok -v
чтобы убедиться что всё работает. Затем, чтобы связать локальную машину с вашим аккаунтом в ngrok, один раз выполняем команду: ngrok authtoken YOUR_TOKEN
где YOUR_TOKEN — ваш уникальный токен, который вы найдёте в своём ngrok-аккаунте.Затем на GitHub склонируйте (или скачайте, а затем распакуйте) репозиторий alice-tutorial-skill, который является неотъемлемой частью данной статьи. Код с подробными комментариями находится в файле /api/index.js — можете читать его словно музыкант ноты.
После этого выполните вход в каталог:
cd alice-tutorial-skill
и установите необходимые пакеты: npm install
Чтобы протестировать с помощью ngrok:
- В командной строке или терминале, в каталоге alice-tutorial-skill выполните команду:
npm start
- В другом экземпляре командной строки или терминала выполните команду:
ngrok http 3000
- Скопируйте URL с протоколом https, который сгенерировал ngrok, как показано на скриншоте ниже.
Чтобы развернуть или протестировать на ZEIT: в командной строке или терминале, в каталоге alice-tutorial-skill выполните команду:
now
Подождите несколько секунд пока код выгрузится на сервер, а затем скопируйте URL в консоли ZEIT, и добавьте в конец этого URL путь к каталогу api (/api/).
Теперь зайдите в свой аккаунт Яндекс, перейдите в консоль Яндекс.Диалоги, нажмите плитку "Создать диалог", и в всплывающем окне выберите плитку "Навык в Алисе", как показано на скриншоте:
На вкладке "Настройки" заполните все необходимые поля, причём в поле "Webhook URL" вставьте URL сгенерированный ngrok (показано в примере ниже), или URL, полученный в консоли ZEIT (с добавленным в конце /api/):
Теперь перейдите на вкладку "Тестирование", где вы должны увидеть нечто подобное:
Вот, собственно, и всё! Именно так сделан и работает опубликованный в каталоге Алисы навык Умные Мысли, который вы можете попробовать. На смартфоне это будет выглядеть примерно так:
В моих планах написать на эту тему ещё ряд статей, и следующей будет статья об интеграции Алисы с CRM Битрикс24, что позволит создавать коммерческие навыки по оформлению заказов с помощью голоса.
Обновление от 14.10.2019. Статья об интеграции Алисы с CRM Битрикс24 опубликована: "Алиса в стране Битрикс".
Заключение
На сегодня всё. Другие материалы следуют. Кому подобное читать интересно — подписывайтесь на уведомления о новых публикациях. Подписаться можно на этом сайте (кнопка Подписаться внизу), или на Telegram-канал IT Туториал Захар, или на одноимённое сообщество в VK, или Twitter @mikezaharov.