Я думаю, что лучший способ решить проблему - это переосмыслить то, как вы используете Intents. Ваш хороший способ начать думать о проблеме, но когда вы сталкиваетесь с такими проблемами, как вы, переосмысление может быть в порядке.
Во-первых - помните, что Намерение представляет то, что пользователь говорит , а не то, как вы справляетесь с тем, что они говорят. Он представляет то, что пользователь намерен сделать.
Исходя из этого, мы видим, что все четыре фразы действительно пытаются сделать одно и то же - указать, что они забыли информацию своего логина. Как они пытаются это сделать - дополнительная деталь.
Таким образом, вы можете захотеть подойти к этому, создав только один Intent с параметром, который принимает то, как они хотят войти. Вы даже можете сделать этот параметр обязательным, поэтому, если они его не предоставляют, Dialogflow запросит его специально , Это будет одно намерение вместо трех, которые вы предлагаете.
Для этого вы можете создать сущность, которая выглядит примерно так:
![enter image description here](https://i.stack.imgur.com/Nrl6O.png)
Выберите знак плюс рядом с объектами слева. Убедитесь, что вы даете типу сущности имя (я установил здесь «passwordMethod»), а затем введите три сущности, которые имеют смысл для вас. Нажмите кнопку Сохранить, когда вы закончите.
Как только вы это сделаете, вы можете создать свое намерение с несколькими примерами фраз, которые используют эти сущности. Затем вы увидите, что Dialogflow выберет параметр для вас - убедитесь, что вы отметили это как требуется. Убедитесь, что вы включили выполнение webhook и сохранили свое намерение.
![enter image description here](https://i.stack.imgur.com/pDmjV.png)
Ваш webhook будет вызываться с намерением "lost.password", а для параметра passwordMethod
будет установлено одно из значений Entity: "login", "2fa" или "pin".
Теперь вы можете реагировать соответственно в зависимости от значения параметра. В имеющемся у вас обработчике намерений вы увидите, какой параметр установлен, а затем вызовете обычные функции в своем веб-крюке для его обработки. Это довольно стандартное программирование на данный момент - вам не нужно несколько Intents или Intent Handlers, просто разные функции, которые выполняют работу и отправляют ответы.