in lambda/src/gather_symptom_bot.py [0:0]
def validate_symptom_input(intent_name, session_attributes, slot_details, slots):
symptom_name = slots.get(SLOT_SYMPTOM_ONE, None)
# TODO: add support for multiple symptoms
if not symptom_name: # did not get symptom
symptom_slot_detail = helper.get_attribute(slot_details, SLOT_SYMPTOM_ONE, {})
unknown_symptom = symptom_slot_detail.get('originalValue', None)
if unknown_symptom:
logger.info(f'encountered unknown symptom: {unknown_symptom}')
helper.append_session_attr(session_attributes, UNKNOWN_SYMPTOM_ATTR, unknown_symptom)
symptom_name = unknown_symptom
slots[SLOT_SYMPTOM_ONE] = symptom_name
else:
return helper.elicit_slot(session_attributes, intent_name, slots, SLOT_SYMPTOM_ONE,
msg_strings.get('ASK_SYMPTOM'))
pain_level = slots.get(SLOT_PAIN_LEVEL, None)
if symptom_name in intensity_symptom and pain_level:
try:
int(pain_level)
except ValueError:
return helper.elicit_slot(session_attributes, intent_name, slots, SLOT_PAIN_LEVEL,
msg_strings.get('PAIN_LEVEL_VALIDATION_FAILED').format(symptom_name))
# verify within range
if int(pain_level) < 0 or int(pain_level) > 10:
return helper.elicit_slot(session_attributes, intent_name, slots, SLOT_PAIN_LEVEL,
msg_strings.get('PAIN_LEVEL_VALIDATION_FAILED').format(symptom_name))
else:
# confirm intensity level if it's above threshold
if int(pain_level) >= INTENSITY_THRESHOLD:
msg = msg_strings.get('CONFIRM_INTENSITY').format(symptom_name, pain_level)
return helper.confirm_intent(session_attributes, intent_name, slots, msg)
return helper.delegate(session_attributes, slots)
else:
if symptom_name in localized_symptom:
# need to distinguish which body part has the symptom
body_part = slots.get(SLOT_BODY_PART, None)
if not body_part:
return helper.elicit_slot(session_attributes, intent_name, slots, SLOT_BODY_PART,
msg_strings.get('ASK_SYMPTOM_BODY_PART').format(symptom_name))
else:
modifier = slots.get(SLOT_BODY_PART_MODIFIER, None)
return confirm_symptom(session_attributes, intent_name, slots, symptom_name, body_part, modifier)
else:
return confirm_symptom(session_attributes, intent_name, slots, symptom_name)