Литмир - Электронная Библиотека

Создание чат-ботов с Dialogflow, Watson, ChatterBot и Rasa - img_34.png

Давайте посмотрим пример того, как добавить контекст к намерению.

Здесь мы создадим два новых намерения для отрицательных и положительных ответов и добавим к ним контекст.

Но для начала, добавим ответ в намерение order.pizza.

И не забудем нажать кнопку сохранения.

Создание чат-ботов с Dialogflow, Watson, ChatterBot и Rasa - img_35.png

Теперь, когда мы зададим вопрос, «Могу ли я получить пиццу?»

Агент ответит «Конечно. Хотели бы вы получить напиток с вашим заказом?».

И если я просто наберу ответ «Да», агент на самом деле не будет знать, что делать.

Создание чат-ботов с Dialogflow, Watson, ChatterBot и Rasa - img_36.png

Вернемся на страницу «намерения» и создадим новое намерение.

Назовем это новое намерение «Заказать пиццу и дополнительно напиток – да».

Нажмем кнопку сохранения и вернемся в намерение order.pizza.

Создание чат-ботов с Dialogflow, Watson, ChatterBot и Rasa - img_37.png

И здесь создадим выходной контекст pizza-upsell и сохраним намерение.

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

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

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

Создание чат-ботов с Dialogflow, Watson, ChatterBot и Rasa - img_38.png

Добавим контекст pizza upsell в качестве входного контекста в это намерение.

Таким образом, при повторном заказе, когда пользователь закажет пиццу, агент распознает намерение, и активирует этот контекст.

А затем агент прослушает ответ и попытается определить, это да или нет.

Создание чат-ботов с Dialogflow, Watson, ChatterBot и Rasa - img_39.png

И мы создадим такое же намерение для отрицательного ответа, и этим же контекстом в качестве входного контекста.

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

Создание чат-ботов с Dialogflow, Watson, ChatterBot и Rasa - img_40.png

Для намерения нет, мы добавим фразы с отказом, а для намерения да, мы добавим подтверждающие фразы.

И добавим ответ в это намерение.

Создание чат-ботов с Dialogflow, Watson, ChatterBot и Rasa - img_41.png

Теперь давайте проверим.

Давайте зададим вопрос: «Могу ли я получить пиццу?»

Агент скажет: «Конечно, вы хотели бы получить напиток с пиццей?»

И если я скажу «да», тогда ответ будет: «Отлично, скоро будет».

Теперь мы видим, что «да» связано с заказом пиццы с напитком.

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

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

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

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

Создание чат-ботов с Dialogflow, Watson, ChatterBot и Rasa - img_42.png

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

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

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

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

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

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

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

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

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

Создание чат-ботов с Dialogflow, Watson, ChatterBot и Rasa - img_43.png

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

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

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

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

Создание чат-ботов с Dialogflow, Watson, ChatterBot и Rasa - img_44.png

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

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

Создание чат-ботов с Dialogflow, Watson, ChatterBot и Rasa - img_45.png

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

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

Создание чат-ботов с Dialogflow, Watson, ChatterBot и Rasa - img_46.png

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

Создание чат-ботов с Dialogflow, Watson, ChatterBot и Rasa - img_47.png

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

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

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

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

Создание чат-ботов с Dialogflow, Watson, ChatterBot и Rasa - img_48.png

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

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

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

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

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

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

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

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

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

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

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

Создание чат-ботов с Dialogflow, Watson, ChatterBot и Rasa - img_49.png

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

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

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

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

Создание чат-ботов с Dialogflow, Watson, ChatterBot и Rasa - img_50.png

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

Создание чат-ботов с Dialogflow, Watson, ChatterBot и Rasa - img_51.png

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

Создание чат-ботов с Dialogflow, Watson, ChatterBot и Rasa - img_52.png

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

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

Создание чат-ботов с Dialogflow, Watson, ChatterBot и Rasa - img_53.png

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

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

4
{"b":"800139","o":1}