Создание разговорного опыта с Dialogflow

Введение

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

Шутки в сторону, у чат-ботов довольно много вариантов использования:

  1. Улучшение обслуживания клиентов - с помощью чат-бота пользователь может обратиться в службу поддержки по запросу, вместо того, чтобы стоять в очереди.
  2. Оптимизация процесса заказа на покупку - с помощью чат-бота пользователи могут легко покупать то, что они хотят (например, покупать пиццу), без необходимости звонить на горячую линию.
  3. Автоматизируйте ответы - на повторяющиеся вопросы, такие как проблемы с возвратом средств, проблемы с доставкой или проблемы с оплатой, чат-бот может предоставить ответ на основе банка знаний.
  4. Снижение нагрузки на обслуживание клиентов - мы можем передать рутинные задачи чат-боту и запрашивать у персонала службы поддержки только более сложные задачи.
  5. Или даже для повышения собственной продуктивности - вы даже можете создать чат-бота, который поможет вам заказывать товары по запросу, воспроизводить ваше любимое видео или записывать задачу в свой календарь.

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

Агент

Чат-бот начинается с агента. Я назову своего агента агент 1, потому что я недостаточно изобретателен, чтобы придумать имя. Агент отвечает за хранение намерений, сущностей, содержимого и выполнения. Короче говоря, агент - это ваш чат-бот.

После перехода в Dialogflow и входа в консоль с моей личной учетной записью Gmail меня приветствует эта страница:

Давайте создадим агента:

Намерения

Как только я создам своего агента, меня встретят двумя намерениями по умолчанию:

Намерения подобны темам. Когда мои клиенты что-то спрашивают у агента_1, агент_1 пытается классифицировать вопрос по намерению / теме.

Если вопрос слишком сложен для агента_1, он попадет в категорию Резервное намерение, где агент предоставит стандартные ответы на все вопросы, которые он не понимает.

Второе намерение по умолчанию - Добро пожаловать. Да, ты прав. Приветственное намерение предоставляет ответы по умолчанию для клиентов, которые приветствуют agent_1.

Быстрое примечание:

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

Заказ пиццы

Создадим намерение для заказов на пиццу. В любом случае есть обучающие фразы. Это фразы, которые будут вводить клиенты. Не забывайте использовать самые разные фразы, чтобы наш агент мог быть умнее.

Конечно, на вопросы должны быть ответы (пока не обращайте внимания на знаки $, мы вернемся к этому позже):

После тестирования agent_1 мы обнаружили, что он работает!

Сущности

Замечательно, что agent_1 может отвечать на заказы пиццы. Но что такое пицца? Что такое бекон? Что такое клубничный молочный коктейль? Для агента_1 это очень чуждый термин. Таким образом, давайте определим объекты. Сущности помогают определить, кто, что, где и когда в ваших предложениях.

Давайте определим объект, который поможет агенту_1 понять начинки для пиццы:

В моей сущности pizza_topping я указал все начинки, которые предлагает Pizzaeiou. Установив флажок «Определить синонимы», я разрешаю различным словам приходить к одному и тому же корневому слову, как видно из 3-й строки, например, бекона.

Отметив третье поле «Разрешить автоматическое расширение», мы можем позволить агенту_1 выучить новые слова. Например, если все клиенты запрашивают «яблоко» в качестве начинки для пиццы, agent_1 автоматически включит яблоко в этот объект. Разумеется, яблоко в качестве начинки для пиццы никому не нравится ... поэтому ставить галочку в этом поле я не буду.

Аннотирование обучающих фраз

Определив наши сущности, давайте воспользуемся этим. Давайте аннотируем наши обучающие фразы в нашем намерении pizza.order:

  1. Дважды щелкните слово «курица».

2. Найдите нашу предопределенную сущность pizza_topping:

3. Агент_1 теперь распознает курицу как начинку для пиццы:

Проявите творческий подход к своим объектам

Некоторые объекты могут быть определены или доступны:

  1. Системные сущности - время, дата, числа являются примерами заранее определенных сущностей. Вам не нужно создавать для них сущности. Dialogflow автоматически помечает «сейчас», «16:00», «октябрь» как объекты даты или времени.
  2. Составные объекты. Допустим, Pizzaeiou также продает напитки. Конечно, мы можем определить «молочный коктейль» как наш напиток. Однако как мы определяем «большой клубничный молочный коктейль» как наш напиток? Конечно, мы не хотим, чтобы агент_1 понимал «большой клубничный молочный коктейль» как «большую клубнику» и «молочный коктейль», это было бы катастрофой. Следовательно, мы можем определить объект с именем drinks_composite и указать различные типы возможных заказов. Не забудьте не ставить галочку «определять синонимы».

Конечно, мы должны указать тип вкусов, которые мы предлагаем:

Заполнение щелей

«Мои клиенты всегда заказывают пиццу. Откуда мне знать, хотят ли они пиццу с шоколадом или пиццу с курицей ?! Когда они этого хотят ?! Им нужна личная пицца или большая пицца ?! » - Агент_1

Агент_1 сыт по горло. У нее проблемы с выполнением заказов. Давайте поможем ей, позаботившись о том, чтобы наши клиенты всегда предоставляли размер, время и начинки:

  1. Аннотируйте наши обучающие фразы сущностями

2. Создайте действия и параметры. Отметьте необходимые параметры и определите подсказки, если пользователь не смог предоставить параметры.

3. Измените наши ответы. Включите параметры со знаком «$».

Давай проверим! (Не забудьте сначала спасти своего агента)

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

Контексты

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

Заказчик: А сейчас хочу пиццу с грибами.

Агент_1: Конечно, не хочешь выпить?

Клиент: Да, пожалуйста

Агент_1: Простите, что это было?

В этой ситуации нет контекста. Агент_1 не может понять поток беседы. Следовательно, давайте создадим намерение upsell_drink_yes и намерение upsell_drink_no. Перед этим мы должны изменить наше намерение pizza.order для создания контекста upsell-drink:

Число 5 указывает количество взаимодействий, которые будут сохраняться в этом контексте. Затем мы можем установить входной контекст наших намерений upsell_drinks_yes и upsell_drinks_no для вывода нашего намерения pizza.order и указать несколько примеров обучающих фраз :

Давай проверим!

Исполнение

Теперь, когда мы получили заказ, нам нужно отправить его в хранилище данных, чтобы кухня Pizzaeiou могла получить заказ! Это можно сделать через фулфилмент. Есть 2 вида исполнения:

  1. Встроенный редактор: вы можете продвигать свои заказы через облачные функции, которые вы создаете в своей базе данных. Обычно это используется в целях тестирования. Вам следует переключиться на Webhook для развертывания.
  2. Webhook: Webhook позволяет различным приложениям общаться друг с другом через запросы JSON. Кухня может быть немедленно уведомлена о деталях заказа после завершения выполнения.

Экспорт Agent_1

Давайте экспортируем agent_1, чтобы она могла вечно жить в облаке:

Вывод

Вуаля! Мы успешно создали чат-бота для Pizzaeiou. Теперь мы можем поручить сотрудникам службы поддержки клиентов решать более сложные вопросы, а не принимать заказы.

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

Использованная литература:

Https://www.coursera.org/learn/conversational-experiences-dialogflow/