Тимур Машнин - Создание чат-ботов с Dialogflow, Watson, ChatterBot и Rasa стр 4.

Шрифт
Фон

В случае нет, мы должны просто разместить заказ на пиццу.

Теперь, что, если вы хотите, чтобы агент сделал больше, чем просто давал ответы пользователю?

Что если вы решите сохранить заказ пиццы в базе данных?

Вы можете достичь этого с выполнением fulfillment.

Выполнение это действие с использованием кода, развернутого вне диалога.

Это позволяет чат-боту выполнять внешнюю бизнес-логику на основе намерения.

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

И мы можем написать код для этого взаимодействия с внешней системой.

Здесь мы будем использовать встроенный редактор DialogFlow для написания кода.

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

Это будут три разных сущности, которые нам необходимо идентифицировать и извлечь из запроса клиента.

Если клиент говорит: «Можно мне пиццу?», нам нужно настроить агента запросить дополнительную информацию, необходимую для отправки заказа в бэкэнд-систему, ответственную за размещение заказов.

Как мы можем собрать эти недостающие фрагменты информации?

Для этого мы можем использовать раздел действия и параметры намерения.

Здесь вы можете установить необходимые значения параметров, соответствующие сущностям в запросе.

Если пользователи опустят один или несколько параметров в своем ответе, ваш агент попросит их указать значения для каждого пропущенного параметра.

Поэтому в разделе действия и параметры отметим параметр pizza_topping и нажмем Define prompts.

И здесь мы введем вопросы, которые чат-бот задаст, если не обнаружит в намерении пользователя сущность pizza_topping.

И здесь вы также можете заметить, что отмечена опция «Список» для начинки, чтобы агент распознавал несколько начинок в запросе.

И мы создадим сущность размер size.

Далее вернемся в намерение и разметим его обучающие фразы этой сущностью.

Далее перейдем в раздел действия и параметры.

И здесь отметим параметр size и нажмем Define prompts.

И здесь введем уточняющий вопрос.

Таким образом, здесь мы добавим: «Хотите кусок или целый пирог?»

Это позволит агенту запросить информацию, если она не была захвачена.

Теперь, переключимся на выполнение.

И здесь мы видим встроенный редактор, который мы активируем.

И вы увидите, что здесь уже есть шаблон с некоторым кодом, написанным на nodeJS.

Этот код представляет собой веб-приложение nodeJS webhook, которое будет развернуто в Google сервисе Firebase.

Webhook это механизм получения уведомлений об определённых событиях.

В нашем случае это механизм уведомления об обнаружении определенного намерения чат-ботом.

И webhook в нашем примере будет развернут с помощью облачной функциональности Cloud Functions for Firebase, которая позволяет автоматически запускать код в ответ на события, вызванные HTTP-запросами.

Ваш код хранится в облаке Google и работает в управляемой среде.

После того, как вы напишите и развернете код, серверы Google сразу же начнут управлять этой облачной функцией.

И для нашего чат-бота бесплатного плана Spark Firebase будет достаточно.

И здесь во встроенном редакторе, у нас также есть файл package.json, и нам нужно изменить его.

Нам нужно добавить зависимость от Google базы данных Datastore, которую мы будем использовать для хранения заказа пиццы.

Поэтому мы добавим @google-cloud/datastore.

После этого нажмем кнопку Deploy развернуть.

В результате в наш проект будет добавлен облачный сервис Cloud Functions for Firebase, где будет развернут наш webhook.

Чтобы проверить развернут ли наш webhook, откроем страницу нашего Google проекта Dialogflow и нажмем Cloud Functions.

И здесь мы увидим нашу развернутую облачную функцию.

Теперь более подробно рассмотрим код webhook.

Здесь, у нас есть объявление о некоторых необходимых пакетах, которые нам нужно импортировать, и нам также необходимо импортировать пакет хранилища данных Datastore.

Поэтому здесь мы импортируем пакет Datastore.

И в строке 12 мы создадим новый экземпляр хранилища данных, привязав его к идентификатору нашего Google проекта.

Идентификатор проекта можно посмотреть в консоли проектов по адресу, указанному на слайде.

И здесь у нас есть основная функция dialogflowFirebaseFulfillment, где у нас есть функция для приветствия агента, и у нас есть функция для агента, который ничего не понимает.

Но у нас нет функции для заказа пиццы, и это то, что мы собираемся сюда добавить.

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

И если мы включим, например, Fulfillment в намерении приветствия, тогда если мы наберем в Try it hello, чат-бот ответит не фразой намерения, а функцией приветствия агента, которая определена в вебхук.

Теперь, давайте создадим функцию для заказа пиццы.

Здесь у нас есть функция order pizza, которая определяет переменные для извлечения параметров из пользовательского запроса.

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

Эта сущность будет содержать значения переменных.

Возврат этой функции это действие сохранения содержимого созданной нами сущности в Datastore.

И в конце, мы должны добавить запись в карту намерений.

После этого развернем заново наш вебхук.

И теперь нужно включить Fulfillment для намерения order.pizza.upsell.drink-no, чтобы после того, как клиент отказался от напитка, мы сохранили наш заказ в базе данных.

Теперь все готово к работе и в панели Try it наберем

Могу ли я получить пиццу.

Затем ответим на вопрос о начинке и на вопрос о размере.

В результате получим ответ от агента, что наш заказ размещен.

Нажав на кнопку Diagnostic info можно посмотреть запросы и ответы вебхука в формате Json.

Чтобы проверить, сохранился ли заказ, откроем Google проект и в боковой панели выберем Datastore Entites.

И здесь мы увидим, что наш заказ успешно сохранился в облаке Google.

Google Dialogflow. Интеграция с Telegram

Dialogflow позволяет интегрировать вашего чат-бота с различными платформами.

Это такие популярные приложения как Google Assistant, Slack и Facebook Messenger и другие.

В качестве примера мы рассмотрим интеграцию нашего чат-бота с мессенджером Telegram.

Опция интеграция Telegram позволяет легко создавать ботов Telegram с пониманием естественного языка на основе технологии Dialogflow.

И для начала работы, откроем Telegram.

И здесь наберем @BotFather.

Далее нажмем кнопку Start.

Здесь нажмем ссылку /newbot и введем имя бота ex_bot.

И здесь мы должны скопировать сгенерированный токен доступа.

Вернемся в Dialogflow и включим интеграцию с Telegram.

В результате откроется диалоговое окно.

И здесь мы должны ввести сгенерированный токен доступа.

И нажать кнопку Start.

Вернемся в Telegram и откроем бота по его ссылке.

И здесь, нажав кнопку Start мы можем разговаривать с нашим чат-ботом.

ChatterBot

ChatterBot это библиотека Python, которая позволяет легко генерировать автоматические ответы на вводимые пользователем данные.

И ChatterBot использует набор алгоритмов машинного обучения для получения различных типов ответов.

И ChatterBot является независимой от языка библиотекой, что позволяет обучать чат-бота говорить на любом языке.

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

Ваша оценка очень важна

0
Шрифт
Фон

Помогите Вашим друзьям узнать о библиотеке

Скачать книгу

Если нет возможности читать онлайн, скачайте книгу файлом для электронной книжки и читайте офлайн.

fb2.zip txt txt.zip rtf.zip a4.pdf a6.pdf mobi.prc epub ios.epub fb3