dialogflow cx что это

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

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

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

Что такое Dialogflow

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

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

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

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

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

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

Dialogflower

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

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

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

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

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

Default welcome intent

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

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

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

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

Default Fallback Intent

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

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

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

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

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

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

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

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

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

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

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

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

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

Читайте также:  clue или flo что лучше

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

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

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

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

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

Где логика?

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

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

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

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

В итоге

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

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

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

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

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

Ложка дегтя

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

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

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

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

Источник

Что умеет Dialogflow?

26 ноября в Москве прошла третья в своей истории Conversations – конференция по разговорному искусственному интеллекту для разработчиков и бизнеса, на которой был представлен новый доклад компании «Аэроклуб ИТ». В прошлый раз речь шла об одном из наших исследовательских проектов, теперь же рассказ был сосредоточен вокруг инструмента, который мы применяем для чат-ботов. Сперва я планировал просто написать статью по мотивам доклада, но получился целый tutorial, так что под катом вас ждёт довольно подробное описание некоторых возможностей Dialogflow, и даже попадутся неочевидные «хаки».

Вообще, чат-боты и навыки для голосовых ассистентов не являются основной специализацией компании «Аэроклуб ИТ», в которой мы занимаемся разработкой программных решений в сфере B2B-travel.
Однако в 2018 году мы проводили исследования применимости навыков Алисы в нашем нелёгком деле, и в какой-то момент стали использовать Dialogflow.
Когда я был на первой Conversations в качестве слушателя, меня, как участника тех исследований, в большей степени интересовал доклад про Dialogflow. Он был отличный, но, к сожалению, достаточно поверхностный.
Спустя год и несколько практических кейсов его применения, пришло время поделиться нашим опытом. Итак, будем двигаться от простого к интересному.

Если вы уже знакомы с этим сервисом и не хотите читать всё подряд, для вас есть

Что такое Dialogflow?

Агент

Перво-наперво нужно создать агента, который будет выполнять основную работу по общению с пользователем. Как сказано в документации, для понимания сути «агента» DF можно провести параллель с сотрудником call-центра, который обрабатывает запросы клиента (пользователя).
Вам нужно придумать его название, выбрать основной язык общения (позже можно будет выбрать дополнительные), и часовой пояс, в котором он будет работать:

JSON-ключ

Если планируете обращение к сервису через API, то вам понадобится JSON-ключ, необходимый для авторизации. Для этого в настройках агента (шестерёнка возле названия) нужно кликнуть по идентификатору Project ID. В новом окне найти в меню слева пункт «IAM & Admin», а в нём — «Service Accounts». Там надо нажать «Create service account», в разделе «Service account details» ввести любое значение, нажать «Create» (не «Done»!), и в «Grant this service account access to project» указать Role «Dialogflow API Client». И вот теперь нажать «Done»:

Если всё-таки не удалось указать роль при создании аккаунта, тогда нужно в меню слева найти
Iam — Add — выбрать созданный аккаунт — указать Role «Dialogflow API Client» — Save:

В «Service Accounts» возле созданного аккаунта надо найти меню «Actions», а в нём — пункт «Manage keys». Далее — Add key — Create new key — JSON — Create, и вам будет предложено скачать файл с ключом:

Намерения (Intents)

Чтобы агент начал обрабатывать запросы пользователя, нужно добавить в него Intents (намерения, цели). Можно сказать, что они должны соответствовать намерениям пользователя, который «общается» с чат-ботом. Например, купить что-то, получить какую-то информацию, и так далее.

Как правило, после создания агента в нём уже присутствуют сразу две цели: одна — для реакции на приветствие и начала диалога (Default Welcome Intent), и другая — специальная, на тот случай, если не удалось ничего распознать (Default Fallback Intent).

Читайте также:  реализация в валюте по какому курсу считать рублевую

В любом из намерений можно настроить «признаки», по которым будет происходить переход именно в него. Самое простое — это добавить тренировочные фразы (Training phrases), на основе которых Dialogflow определяет то или иное намерение пользователя.

Также можно указывать события (Events), используя стандартные, или придумав что-то своё. Тогда переход в Intent можно будет форсировать, передав в запросе к DF нужное название:

Теперь агент «научится» отвечать на приветствие! При разработке навыков для голосовых ассистентов часто рекомендуют, чтобы в одной и той же ситуации они не выдавали подряд одинаковые ответы. Используя Dialogflow, можно не беспокоиться об этом, потому что сервис случайным образом выбирает одну из фраз, указанных в разделе Responses. Проверить это можно в «тестовой консоли» которая находится справа:

Цветная точка возле названия намерения — это индикация его приоритета. Для его изменения достаточно «кликнуть» на неё и выбрать нужный уровень.

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

Даже с этими минимальными настройками уже можно сделать какую-нибудь «болталку»: чат-бота, который может поприветствовать пользователя, ответить на простые вопросы, и переспросить, если ему «не понятно».

Сущности (Entities)

Одной из полезных возможностей Dialogflow с уверенностью можно назвать распознавание сущностей. Он хорошо справляется с большинством общих объектов: датами, городами, даже музыкальными группами, и прочим. Каждую тренировочную фразу намерения можно разметить и таким образом указать, какой объект в ней искать и в какой параметр записывать распознанное значение:

В сервисе есть множество системных сущностей, которые могут использоваться в большинстве сценариев. Здесь распознаются диапазоны дат (sys.date-period), «цельные» даты (sys.date), полные названия городов (sys.geo-city), и группы (music-artist):

В этом примере видно, что «Питер» правильно распознан без каких-то дополнительных настроек. Если же Dialogflow сам не справляется с распознаванием этих или других общих объектов, то некоторые системные сущности можно дополнить самостоятельно. Это делается в разделе Entities — System, где отображён список используемых системных объектов. На те из них, которые доступны для дополнения, можно «кликнуть», и в левой колонке указать полное название объекта, а справа — его синонимы:

Для работы с объектами из какой-нибудь специфической предметной области можно создать собственные сущности в разделе Entities — Custom, а при разметке фраз указывать соответствующее название.

Теперь, используя распознавание объектов, можно реализовывать простые сценарии диалога, в которых чат-бот или навык ассистента «понимает», о чём идет речь, и как-то использует информацию, полученную от Dialogflow. Например осуществляет поиск билетов в определённые города на нужные даты.

Параметры

В ответе

На этом сфера применения параметров не ограничивается. Как вы могли заметить в примерах выше, информацию из параметров текущего намерения можно встраивать в ответ. Для этого необходимо прямо в тексте написать нужное название через знак «доллара»:

Это можно использовать, например, для уточнения у пользователя, все ли названные им параметры распознаны верно.

Кстати, если при добавлении блока ответов выбрать «Custom Payload», то, вместе с обычным текстовым ответом, сервис будет передавать и доп-информацию в виде JSON. В неё тоже можно встраивать значения параметров.

Посмотреть итоговое содержимое Payload можно в окне «Diagnostic info» под тестовой консолью, справа. Там, вообще, много всякой информации, в том числе полезной:

В событии

Если вы указываете название события для перехода в то или иное намерение, то вместе с ним можно передавать и параметры. Возьмём, например, намерение, в котором указано событие PersonalGreeting, и один-единственный параметр «name», используемый в ответе:

Уточнение

Теперь возьмём более сложный пример: чат-бот ориентируется на значения параметров, которые приходят из Dialogflow, и выполняет на их основе какие-то действия. Что делать, если сервису не удалось что-то распознать, или пользователь не назвал какую-то важную информацию (например, адрес доставки)? К счастью, Dialogflow умеет задавать уточняющие вопросы для обязательных параметров. Если слева от нужного параметра поставить галку в колонке «Required», то справа появится колонка «Prompts»:

Если нажать на неё — откроется окно для добавления уточняющих фраз:

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

В ответе на запрос к Dialgoflow присутствует поле «AllRequiredParamsPresent». На него можно ориентироваться в своём коде чтобы понять, что все необходимые параметры заполнены, и тогда выполнять какое-нибудь действие.

Action

Кстати, насчёт действий. Внимательные читатели наверняка заметили текстовое поле над блоком с параметрами. Ему можно задать любое значение, даже на русском языке. Оно приходит в ответе от сервиса в поле «Action». Как сказано в документации, это просто текстовое поле, которое помогает выполнять какую-либо логику в вашем сервисе. То есть, через него можно указать, например, какое действие должно быть выполнено в вашем коде, который обрабатывает ответ от Dialogflow.

С помощью описанных выше возможностей ваш чат-бот сможет вести более «продвинутые» диалоги: спрашивать у пользователя недостающие данные, переспрашивать параметры заказа, и выполнять указанные действия, если все параметры заполнены.

Контексты (Contexts)

«Ветки» диалога

И вот мы подошли к одной из интересных возможностей сервиса. При помощи Dialogflow можно построить такой сценарий, в котором разговор пойдёт по той или иной «ветке», в зависимости от выбора пользователя: например, доставка или самовывоз. От этого зависит, что агент спросит дальше: адрес доставки или подходящую точку вывоза.

Самый простой способ сделать «ветку» — это создать связанный Intent с помощью кнопки «Add follow-up intent», которая появляется при наведении на то или иное намерение. После этого под «родительским» элементом будут отображаться «дочерние», для которых также можно создать связанные намерения:

Их взаимосвязь основана на указанных контекстах: у родительского появляется «выходящий» контекст (нижнее поле), а у дочернего — «входящий» (верхнее поле):

Например, пользователь выбрал доставку, тогда у текущего диалога будет контекст «Delivery-followup», поскольку такое название написано в поле «Output context». После этого пользователь может спросить про стоимость. Для ответа на подобный вопрос заведено намерение «Delivery — cost» с соответствующими тренировочными фразами и ответами, где поясняется стоимость доставки:

Если же пользователь выберет самовывоз и спросит про стоимость, то разговор попадёт в намерение «Pickup — cost», в котором тренировочные фразы точно такие же, но ответы немного другие:

Как вы наверняка уже поняли, диалог пойдёт по этой ветке, потому что после выбора самовывоза будет активен контекст «Pickup-followup». За этим легко проследить с помощью консоли тестирования:

Читайте также:  menstrual cup что это

Условиями попадания в одно из этих намерений являются входной контекст и тренировочные фразы. Если пользователь скажет то же самое, но диалог не будет ни в одном из этих контекстов, то он попадёт в то намерение, которое предназначено для любых непонятных ситуаций (по умолчанию — Default Fallback Intent). Кстати, подобную цель можно создавать специально для отдельных контекстов.

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

Параметры в контексте

Контексты удобны ещё и тем, что через них можно передавать параметры между намерениями. Как вы уже знаете, их значения можно встраивать в ответ в том же Intent’е, но если всё правильно сделать, то это можно сделать и в «дочерней» цели.

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

В намерении «Order», с которого начинается заказ, в параметр «any» записывается название товара, и задаётся выходящий контекст «Order-followup». Для того, чтобы «достать» этот параметр дальше по цепочке, текст ответа следует дополнить конструкцией «#Order-followup.any». При этом «Order-followup», конечно же должен быть указан в качестве «входящего»:

В результате этого примера получается вот такой ответ:

Полный список параметров, которые можно достать из того или иного контекста, можно увидеть в «Diagnostic info». Обратите внимание, что «входящий» контекст также дополняется параметрами, которые были распознаны в текущем намерении:

Вопрос на уточнение

Как вы помните, если обязательный параметр не заполнен, то Dialogflow попытается уточнить нужную информацию (если есть соответствующая настройка). Когда сервис задаёт наводящий вопрос по одному из параметров, то к диалогу добавляется несколько технических контекстов, имена которых генерируются автоматически, что можно увидеть на скриншоте слева. Допустим, в случае доставки или самовывоза спрашивается номер телефона пользователя. Он запросто может ответить вопросом на это уточнение: например, зачем ему называть ту или иную информацию. Причём вопрос может звучать достаточно просто: «А зачем», и без контекста по этой фразе будет трудно догадаться, о чём идёт речь. В зависимости от ситуации, он должен получить пояснение, что курьер позвонит и договорится о времени доставки, или придёт сообщение о прибытии покупки в пункт самовывоза. Как же это сделать?

На картинке выше показан пример уточнения телефона для доставки, и этому соответствует контекст «delivery_dialog_params_phone-number». Можно создать специальное намерение, для которого указать его в качестве «входящего», и сделать аналогичное для самовывоза, но с другим названием контекста, конечно же.

Теперь пользователь получит правильный ответ:

Это происходит за счёт того, что название одного из контекстов диалога и пользовательская фраза совпадают с теми же параметрами в этих намерениях.

Однако, если в вашем сценарии уже предусмотрен «общий» Intent без входного контекста, отвечающий на подобные вопросы, то диалог может перейти именно в него. Чтобы этого избежать можно понизить его приоритет, нажав на цветную точку возле названия и выбрав нужный уровень.

Срок жизни

В настройках намерений вы могли заметить число возле названия «выходящего» контекста — это, как вы уже могли догадаться, его «срок жизни». Оно указывает кол-во высказываний пользователя, на протяжении которого контекст будет «держаться». Например, «2» означает, что он будет существовать на протяжении 2х фраз, где первая — та, в которой он появился. То есть на третьей он уже пропадёт.

Для того, чтобы контекст поддерживался как можно дольше, можно задать ему какое-нибудь большое число (например, 90 000, почему нет). Но в этом случае, в соответствии с документацией, такой контекст будет «жить» 20 минут. Однако, если разговор попадёт в намерение, где он указан в качестве «выходящего», то отсчёт его срока начинается заново. Таким образом, контекст может поддерживаться «вечно».

Для того, чтоб DF мог учитывать контекст, ему нужно передавать один и тот же идентификатор сессии на протяжении разговора. Он должен быть, конечно же, уникальным для каждого диалога.

С помощью этого функционала можно построить достаточно сложные сценарии диалога, которые смогут покрыть множество задач. Как я уже писал ранее, общение между пользователем и ботом, особенно голосовым ассистентом, должно быть естественным. Данный сервис поможет в этом, по крайней мере для разговора на не очень сложные темы.

История изменений

При разработке диалога, как и любого другого проекта, легко сделать изменения, которые, возможно, понадобится «откатить». Обычно в этом помогает история изменений, или, на худой конец, система контроля версий. Первого, к сожалению в Dialogflow нет, но настройки агента можно экспортировать в json-файлы и «положить» их в SVN.

В настройках агента есть вкладка «Export and Import», в которой можно выгрузить агента в виде zip-архива. В нём содержатся файлы, которые можно отправить в github, например, как я и поступил с агентом, на примере которого писал этот материал. Благодаря этому легко отследить внесённые изменения, и, при необходимости, восстановить какую-либо версию: эти файлы можно снова собрать в архив и воссоздать агента, или дополнить его.

Выводы

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

Однако, не обойдётся без минусов: ваш проект будет очень сильно зависеть от Dialogflow. Если вы пользуетесь бесплатной версией, то при превышении её лимитов (более 180 текстовых запросов в минуту) сервис, а значит — и ваш чат бот, не будут корректно отвечать на запросы пользователя.

С другой стороны, если через ваш проект проходит столько трафика (3 запроса в секунду!), значит, скорее всего, он пользуется популярностью. Если так, то его наверняка можно монетизировать. Например, в Яндекс-диалогах не так давно запустили рекламу, а ещё можно выиграть премию Алисы.

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

Заключение

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

Когда мы только начинали работу с ним, нам очень помог другой tutorial, за что спасибо его автору.

Спасибо, что дочитали до конца! Не прощаюсь, встретимся на хабре!

Источник

Сказочный портал