У меня есть intent-A
, который запускается некоторым пользователем. Когда пользователь получает ответ, я использовал ConfirmIntent
вместо Close
, чтобы я мог переключить / связать другое намерение (скажем, intent-B
).
В идеале, если пользователь вводит "yes"
, тогда намерение должно срабатывать, а если пользователь вводит "no"
, то не должно. Проблема в том, что intent-B
запускается независимо от того, что я набираю.
Я прочитал о ConfirmIntent
из здесь, здесь и здесь.
Телефонный код:
session_attributes = {"confirmationContext": "AutoPopulate"}
return confirm_intent(session_attributes , 'intent-B', slots, 'Do you want to invoke intent-B')
Код подтверждения:
def confirm_intent(session_attributes, intent_name, slots, message):
return {
'sessionAttributes': session_attributes,
'dialogAction': {
'type': 'ConfirmIntent',
'intentName': intent_name,
'slots': slots,
'message': {
'contentType': 'PlainText',
'content': message
}
}
}
В журналах я вижу это confirmationStatus': 'Denied'
, когда я набираю "no
", но даже тогда вызывается intent-B
.
Я что-то упустил или все устроено таким образом?
ПРИМЕЧАНИЕ. Для обходного пути я добавляю код ниже в DialogCodeHook intent-B
if 'confirmationStatus' in intent_request['currentIntent'] and intent_request['currentIntent']['confirmationStatus'] == 'Denied':
return close("Ok, let me know if you need anything else.", session_attributes)