Это довольно просто реализовать с помощью контекстов Dialogflow.Перечисленные ниже намерения будут моделировать этот поток.
Намерение Pizza
применяет контекст "заданный сверху" к беседе.Это означает, что затем может быть сопоставлено любое из следующих двух намерений, Select Topping
или Available Toppings
.
Пользователь может упомянуть конкретное добавление, которое приведет к совпадению намерения Select Topping
.В противном случае они могут спросить о доступных начинках, что приведет к совпадению Available Toppings
.
Если сопоставлено Available Toppings
, контекст asked-topping
будет по-прежнему применяться после ответа пользователя на вопрос, поэтомуSelect Topping
намерение по-прежнему будет сопоставимым.
Вы можете играть с продолжительностью жизни намерений, чтобы настроить, сколько дополнительных вопросов можно задать, прежде чем агент больше не будет в asked-topping
гос.Установив для asked-topping
срок жизни 0 после соответствия цели Select Topping
, мы не позволяем агенту выбирать еще какие-нибудь начинки после заказа пиццы.
Intent: Pizza
Example training phrase: "I want a large pizza"
Response: "what kind of topping?"
Input contexts: <none>
Output contexts: asked-topping (lifespan 2)
Intent: Select Topping
Example training phrase: "Ham"
Response: "Ok"
Input contexts: asked-topping
Output contexts: asked-topping (lifespan 0)
Intent: Available Toppings
Example training phrase: "can you please list the different toppings?"
Response: "We have ham, mushroom etc. What kind of topping?"
Input contexts: asked-topping
Output contexts: <none>