Главная » Хабрахабр » Dialogflower — Google Dialogflow для Яндекс Алисы

Dialogflower — Google Dialogflow для Яндекс Алисы

Несколько месяцев назад Яндекс запустил бету своего голосового помощника «Алиса», в которой открыл ее API. И вот совсем недавно выкатил все в паблик. Теперь миллионы пользователей могут запускать различные функции и сервисы голосом прямо из мобильного поиска, навигатора и из Яндекс браузера. Неудивительно, что голосовых навыков становится все больше. Но API диалогов предполагает, что вы должны уметь программировать, у вас должен быть свой сервер с HTTPS, и вдобавок вы должны уметь обрабатывать запросы на естественном языке…

Он конечно же не поддерживает протокол Алисы из коробки, вот и пришла мысль исправить эту ситуацию, чтобы разработчики (и не только) быстро и без серверов создавали навыки для Алисы, которые умеют понимать естественную речь и контекст диалога.
Между тем уже давно существует бесплатный и довольно удобный конструктор диалогов от Google под названием Dialogflow.

Что такое Dialogflow

image

На хабре уже есть несколько неплохих статей, в которых рассматриваются основные инструменты этого продукта. Dialogflow — это онлайн сервис от гугла, который позволяет создавать своих чат-ботов или функции для гугл ассистента (это называется agent). Вот одна из них.

Вдобавок он еще и держит контекст диалога, чтобы на следующую фразу можно было среагировать в контексте предыдущих реплик. По сути, Dialogflow умеет сопоставить фразу пользователя на естественном языке (и на русском тоже) с некоторым «неязыковым» значением (называемым intent) и что-нибудь ответить.

Собственно так и происходит обучение — вы просто показываете примеры запросов, которые относятся к тому или иному интенту в вашем агенте, а Dialogflow автоматически строит модель и все лучше и лучше понимает пользователя. Инструмент довольно прост в управлении, и еще хранит всю статистику запросов, чтобы можно было в один клик дообучать агента новыми интентами или пополнять существующие. Также он может выделить из фразы какие-то сущности, например даты или города, если вам это необходимо для выполнения какой-то функции.

Зачем это Алисе

У Алисы есть API, сходный с API телеграма. Другими словами, чтобы создать навык для Алисы, вам нужно поднять сервер, который будет получать от Алисы текстовый запрос пользователя и отвечать данными в нужном формате. Все вроде просто, но чтобы создать даже самый простой навык, вам понадобится изучить протокол Алисы, поднять свой публичный сервер с HTTPS, написать код, который умеет понимать человеческий язык и поддерживать контекст беседы.

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

Dialogflower

image

Для этого и был сделан сервис dialogflower.com который по сути представляет собой адаптер — он с одной стороны реализует протокол Алисы, а с другой подключается к вашему агенту на Dialogflow. Только вот Dialogflow не поддерживает протокол Алисы, поэтому нельзя так вот просто превратить агента в навык. Без всяких серверов и кода. И таким образом превращает агента в навык.

image

Создаем агента

image

Для начала нужно создать этого самого агента на сайте dialogflow.com Итак, теперь мы можем сосредоточиться только на логике самого диалога в нашем агенте.

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

После этого можно добавлять интенты — темы, который будет понимать наш агент и как-то на них реагировать.

Default welcome intent

Этот интент существует по умолчанию в каждом агенте. Он срабатывает не на какую-то фразу пользователя, а на событие welcome. То есть когда пользователь запускает ваш навык в Алисе фразой типа «Запусти навык мой самыйнужныйнавык». Тогда от пользователя еще нет никакой команды, и агент в ответ как правило должен просто рассказать, что же дальше можно делать.

Если кликнуть на Default welcome intent в списке интентов, то внизу страницы можно добавить Responses — ответы, из которых агент каждый раз случайно выберет какой-нибудь и отправит Алисе.

Алиса еще умеет показывать кнопки и ссылки, далее мы покажем как их добавить в ответ

Жмем Add response — Text response и добавляем варианты текстовых ответов.

Default Fallback Intent

image

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

Реагируем на реплики

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

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

Без нее ничего не заработает.
Потестировать можно прямо тут — в правой части экрана. Не забудьте добавить ответы к вашему интенту и нажмите на кнопку Save. Напишите вашу тестовую фразу в поле Try it now и посмотрите, что ответил ваш агент.

Создаем навык

Теперь все готово, чтобы прикрутить нашего созданного агента к Алисе и потестить его в консоли Яндекс Диалогов. Для этого зайдите на dialogflower.com и нажмите на Создать навык. В появившемся окне нужно указать Client access token от вашего агента. Его можно найти на странице настроек агента в Dialogflow. Жмите Готово и через секунду у вас будет Webhook URL с которым мы отправимся на Яндекс Диалоги.

image

Кроме него для тестов нужно только придумать называние навыка, все остальные поля заполнять пока не обязательно. Тут создайте новый навык для Алисы и в его настройках укажите этот Webhook URL. Тут можно написать что-нибудь и проверить, что ваш навык работает как ожидается. Жмите Сохранить и переходите на вкладку Тестирование.

Наращиваем функционал

Теперь наш навык готов, и все изменения будут касаться только агента на Dialogflow. Просто добавляйте и изменяйте интенты, не забывайте нажимать кнопку Save и тестируйте результат в консоли Яндекс Диалогов.

Как понимать контекст

Dialogflow может выстраивать интенты в цепочки, чтобы ваш навык мог реагировать правильным образом на фразы, сказанные в контексте беседы. Чтобы это сделать, просто добавьте интент к другому интенту. Для этого перейдите на список интентов и наведите мышь на один из них. Справа появится еле заметная надпись Add follow up intent. Нажмите на нее и добавьте интент, который будет работать в контексте предыдущего.

Тогда эта фраза будет обрабатываться агентом только если пользователь сперва попросил рассказать о погоде. То есть например, если у вас есть интент, который реагирует на фразы типа «Какая погода», то к нему можно добавить интент с фразами типа «а завтра».

Как добавить кнопки в ответ Алисы

Алиса умеет отвечать не только текстом, но и показывать кнопки и ссылки. НАжав на кнопку, пользователь как бы формирует новый запрос, только не произнося его и не набирая текстом.

Для этого зайдите в нужный интент, там перейдите к ответам и нажмите Add Responses — Custom Payload. Чтобы добавить кнопки в ответ, нужно написать кусочек JSON в формате, который понимает Алиса. Например, чтобы добавить кнопки, напишите Тут можно указать кусочек ответа из API Алисы.

]}

А вот другой пример Тут добавляется одна кнопка, которая пошлет Алисе запрос «Текст запроса» при нажатии и автоматически скроется после этого из истории чата.

{"buttons": [ {"title": "Текст запроса", "hide": true}, {"title": "Ссылка на сайт", "url": "https://dialogflower.com"}
]}

Тут добавится две кнопки, одна из которых ссылка на сайт dialogflower.com

Вообще, в Payload можно написать любой JSON в формате поля «response» из протокола Алисы.

Где логика?

Конечно не всегда нужно отвечать пусть и рандомными, но статичными фразами. Для того чтобы добавить какую-то логику, нужно будет написать немножко кода. Ну или множко, зависит от вас. Зато Dialogflow позволяет это сделать без аренды серверов.

Тут вы можете написать код на Javascript, который будет нужным образом реагировать на сработавший интент и выполнять какую-то логику, прежде чем ответ отправится пользователю. Перейдите на вкладку Fulfillment и включите переключатель Disabled. Собственно сам ответ можно тут же и переопределить в коде.

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

За вас все сделает Google, причем бесплатно. Основной плюс здесь в том, что вам не приходится поднимать отдельный сервер, чтобы реализовать какую-то логику для вашего агента.

В итоге

Алисой пользуется все больше и больше людей в стране. Она работает и в поиске, и в навигаторе, и в браузере, а скоро в продажу поступит домашняя колонка с Алисой на борту.

У Алисы есть API и каждый день для нее появляется все больше голосовых навыков.

Dialogflow от Google предоставляет неплохой инструмент для разработки голосовых приложений даже без навыков программирования и с возможностью если что бесплатно запустить свой код на серверах гугла.

Dialogflower связывает агента на Dialogflow с Алисой, чтобы можно было быстро создавать навыки и экспериментировать.

Тем более что Dialogflower такой же бесплатный, как и Dialogflow с Алисой. Так за чем же дело встало?

Ложка дегтя

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

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

Там пока нет многих фишек Dialogflow, как например извлечение сущностей или статистика. Буквально пару дней назад на Хабре был представлен инструмент со схожим функционалом, который тоже умеет понимать естественную русскую речь, но делает это гораздо лучше, понимает синонимы, даже если вы обучили бота только на паре фраз. И еще можно без написания кода добавить логику. Но зато есть классный визуальный редактор, на котором сразу виден весь ход диалога с пользователем.

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


Оставить комментарий

Ваш email нигде не будет показан
Обязательные для заполнения поля помечены *

*

x

Ещё Hi-Tech Интересное!

Сортировки всех времён и народов

Несколько лет назад написал небольшой макрос, чтобы создавать алгоритмическую gif-анимацию для хабрастатей. То, о чём так долго говорили большевики и к чему я с разным темпом шёл несколько лет, наконец-то свершилось. Со временем мой скромный инструмент разросся до внушительных размеров, ...

Security Week 22: двухсекундные умные замки

Прошедшая неделя отметилась парой интересных новостей из небезопасного мира интернет-вещей, а главным событием, конечно, стало исследование умного замка Tapplock (новость, оригинальный отчет). Исследователь из Pen Test Partners Эндрю Тирни не просто обошел защиту электронного замка, а скорее обнаружил полное отсутствие ...