【发布时间】:2020-11-11 04:31:25
【问题描述】:
我需要接受可以是任何字符串的用户输入,但 Lex 不支持 AMAZON.Literal 类型。我看过其他文章谈论使用intent_request,但我无法使其工作。
在我的设置中,我只有一个话语:{string}。 我还将“字符串”定义为使用 AlphaNumeric 类型的插槽,未选中“必需”。 (我什至应该使用 AlphaNumeric 吗?)
在我的初始化和验证 Lambda 函数中,我有这个:
def delegate(session_attributes, slots):
return {
'sessionAttributes': session_attributes,
'dialogAction': {
'type': 'Delegate',
'slots': slots
}
}
def perform_action(intent_request):
source = intent_request['invocationSource']
slots = intent_request['currentIntent']['slots']
if source == 'DialogCodeHook':
slots['string'] = intent_request['inputTranscript']
return delegate({}, slots)
def dispatch(intent_request):
return perform_action(intent_request)
def lambda_handler(event, context):
return dispatch(event)
如果我输入“abc”之类的内容,就可以了(因为它是纯 AlphaNumeric)。但是,如果我输入“这是什么”之类的内容,那么它总是会返回“对不起,你能重复一遍吗?”。看来,即使使用 Lambda 函数,槽类型“AlphaNumeric”仍然可以发挥作用。我尝试了其他几种类型,但没有任何效果。
我在这里缺少什么?如何让它接受任何随机字符串?
谢谢。
【问题讨论】:
标签: aws-lambda amazon-lex