Тимур Машнин

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


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

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

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

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

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

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

      

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

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

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

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

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

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

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

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

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

      

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

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

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

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

      

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

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

      

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

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

      

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

      

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

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

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

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

      

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

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

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

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

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

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