Мне нужно создать намерения, которые могут обрабатывать (webhook) заполнение слотов, запрашивая пользователя, а также получая пропущенный слот из выходного контекста, если этот слот был ранее предоставлен в диалоге.
Итак, у меня есть intent1, intent2 и intent3, все они с параметром P, который необходим для предоставления ответа пользователю. У меня также есть выполнение webhook для обработки этих намерений (также, конечно, для заполнения слотов). Диалог должен быть следующим:
Сценарий 1
- Пользователь: текст intent1 без значения для параметра P
- Агент: «укажите параметр P»
- Пользователь: параметр P
- Агент: ответ для намерения 1 с параметром P (параметр P теперь в контексте)
- Пользователь: текст intent2 без значения параметра P
- Агент: ответ для intent2, получение параметра P из контекста
Это работает как положено. Проблема происходит здесь:
Сценарий 2
(те же 6 шагов, описанных выше)
- Пользователь: intent3 текст без значения для параметра P
- Агент: ответ для intent2 получение параметра P из контекста
Я считаю, что на шаге 5 диалоговый поток обнаруживает, что параметр P отсутствует в intent1, поэтому он ожидает, что шаг 6 будет запросом агента параметра P, а шаг 7 будет заполнением слота пользователя для этого параметра. Но это предположение неверно, поскольку параметр P получен из контекста на шаге 6.
Вопрос: есть ли способ сообщить агенту, что заполнение слота уже выполнено (восстановив его из контекста, сделав вывод или что-то еще), чтобы агент не ожидал, что ввод следующего пользователя будет отсутствует слот, но текст для нового совпадения намерений?