видим, что «да» связано с заказом пиццы с напитком.
В случае нет, мы должны просто разместить заказ на пиццу.
Теперь, что, если вы хотите, чтобы агент сделал больше, чем просто давал ответы пользователю?
Что если вы решите сохранить заказ пиццы в базе данных?
Вы можете достичь этого с выполнением fulfillment.
Выполнение – это действие с использованием кода, развернутого вне диалога.
Это позволяет чат-боту выполнять внешнюю бизнес-логику на основе намерения.
После обнаружения намерения, которое соответствует действию, агент должен иметь возможность обратиться к внешней системе для выполнения действия.
И мы можем написать код для этого взаимодействия с внешней системой.
Здесь мы будем использовать встроенный редактор DialogFlow для написания кода.
Для размещения заказа пиццы, серверная сторона должна знать как минимум три фрагмента информации; размер пиццы, начинку и время получения заказа.
Это будут три разных сущности, которые нам необходимо идентифицировать и извлечь из запроса клиента.
Если клиент говорит: «Можно мне пиццу?», нам нужно настроить агента запросить дополнительную информацию, необходимую для отправки заказа в бэкэнд-систему, ответственную за размещение заказов.
Как мы можем собрать эти недостающие фрагменты информации?
Для этого мы можем использовать раздел действия и параметры намерения.
Здесь вы можете установить необходимые значения параметров, соответствующие сущностям в запросе.
Если пользователи опустят один или несколько параметров в своем ответе, ваш агент попросит их указать значения для каждого пропущенного параметра.
Поэтому в разделе действия и параметры отметим параметр pizza_topping и нажмем Define prompts.
И здесь мы введем вопросы, которые чат-бот задаст, если не обнаружит в намерении пользователя сущность pizza_topping.
И здесь вы также можете заметить, что отмечена опция «Список» для начинки, чтобы агент распознавал несколько начинок в запросе.
И мы создадим сущность размер size.
Далее вернемся в намерение и разметим его обучающие фразы этой сущностью.
Далее перейдем в раздел действия и параметры.
И здесь отметим параметр size и нажмем Define prompts.
И здесь введем уточняющий вопрос.
Таким образом, здесь мы добавим: «Хотите кусок или целый пирог?»
Это позволит агенту запросить информацию, если она не была захвачена.
Теперь, переключимся на выполнение.
И здесь мы видим встроенный редактор, который мы активируем.
И вы увидите, что здесь уже есть шаблон с некоторым кодом, написанным на nodeJS.
Этот код представляет собой веб-приложение nodeJS webhook, которое будет развернуто в Google сервисе Firebase.
Webhook – это механизм получения уведомлений об определённых событиях.
В нашем случае – это механизм уведомления об обнаружении определенного