После того, как вы приняли их имя и запросили письмо, у вас есть два действительных контекста:
- Срок действия контекста
awaiting_name
равен 4 (поскольку он был установленв приветственном намерении два намерения назад) - Срок действия
awaiting_email
имеет срок жизни 5 (поскольку он был только что установлен)
Это означает, что два возможных контекста могут совпадать:
- Контекст
Get Name
(поскольку awaiting_name
действителен) - Контекст
Get Email
(поскольку awaiting_email
действителен)
Dialogflow выбирает контекст Get Name
, что совершенно правильно.Точно, какие правила применяются для выбора Намерения, когда есть несколько совпадений, сложно, но можно выбрать любое из них.
Как вы предполагаете, вы можете установить продолжительность жизни равной 1, что означает, что вы принимаете толькоСледующий ответ на имя или адрес электронной почты.Это сработает, но это плохая идея, потому что это означает, что они не могут задавать вопросы или просить помощи.Это очень не разговорный.
Лучше было бы убрать контекст, когда он вам больше не нужен.Таким образом, ваше Get Name
Намерение может сделать это, установив срок жизни awaiting_name
равным 0 (и другим Намерениям аналогичным образом).Примерно так: