AWS lexbot を検証するためにラムダで電子メールと電話番号を検証する正規表現コードを使用しましたが、エラーがスローされました (エラーが発生しました: 無効な Lambda 応答: Lambda からのエラー応答を受け取りました: 未処理)。
この特定のボットで 3 つのインテントを作成しました。この 2 つの意図は機能していますが、この正規表現検証コードが原因で、1 つの意図はまったく検出されませんでした。この正規表現検証コードを削除すると、正常に機能していました。
これは、エラーが発生している意図のラムダ コードです。
""" --- Start greeting --- """
def validate_greeting_intent(usermood,phonenumber,email):
UserMood = ['okay', 'better', 'too gud', 'fine', 'gud', 'happy', 'good', 'great']
if usermood is not None and usermood.lower() not in UserMood:
return build_validation_result(False,
'UserMood',
'Hey start with good greeting conversation, please'
)
if not PHONE_REGEX.match(phonenumber):
return build_validation_result(
False,
'PhoneNumber',
'Please enter valid phone number which contains 10 digits'
)
if not EMAIL_REGEX.match(email):
return build_validation_result(
False,
'Email',
'Please enter valid email address'
)
return build_validation_result(True, None, None)
def greeting_intent(intent_request):
usermood = get_slots(intent_request)['UserMood']
phonenumber = get_slots(intent_request)['PhoneNumber']
email = get_slots(intent_request)['Email']
source = intent_request['invocationSource']
if source == 'DialogCodeHook':
slots = get_slots(intent_request)
validation_result = validate_greeting_intent(usermood,phonenumber,email)
if not validation_result['isValid']:
slots[validation_result['violatedSlot']] = None
return elicit_slot(intent_request['sessionAttributes'],
intent_request['currentIntent']['name'],
slots,
validation_result['violatedSlot'],
validation_result['message'])
# Pass the price of the pizza back through session attributes to be used in various prompts defined
# on the bot model.
output_session_attributes = intent_request['sessionAttributes'] if intent_request['sessionAttributes'] is not None else {}
if usermood is not None:
output_session_attributes['Price'] = len(usermood) * 5 # Elegant pricing model
return delegate(output_session_attributes, get_slots(intent_request))
return close(intent_request['sessionAttributes'],
'Fulfilled',
{'contentType': 'PlainText',
'content': 'What you want to order'})
""" --- End Greeting --- """