Aws lambda 使用一个Lambda函数处理多个意图
在我的Lex bot中有4个意图,这些意图的逻辑非常相似,业务规则略有变化 实现一个lambda函数并基于不同的目的调用不同的函数是一种好的做法吗Aws lambda 使用一个Lambda函数处理多个意图,aws-lambda,amazon-lex,Aws Lambda,Amazon Lex,在我的Lex bot中有4个意图,这些意图的逻辑非常相似,业务规则略有变化 实现一个lambda函数并基于不同的目的调用不同的函数是一种好的做法吗 这种方法会带来任何潜在的瓶颈或性能影响吗?为不同的目的使用单个Lambda函数没有问题。您可以在所有意图中调用单个lambda函数,检查该lambda中的意图,并在同一lambda中调用相关函数/方法 正如您所说的,意图非常相似,因此您可能还可以使用公共函数为这些意图执行类似的操作 def common_function(): # some
这种方法会带来任何潜在的瓶颈或性能影响吗?为不同的目的使用单个Lambda函数没有问题。您可以在所有意图中调用单个lambda函数,检查该lambda中的意图,并在同一lambda中调用相关函数/方法 正如您所说的,意图非常相似,因此您可能还可以使用公共函数为这些意图执行类似的操作
def common_function():
# some processing
return cm
def intent2(intent_request):
cm = common_function()
# rest processing
return output
def intent1(intent_request):
cm = common_function()
# rest processing
return output
def dispatch(intent_request):
logger.debug('dispatch userId={}, intentName={}'.format(intent_request['userId'], intent_request['currentIntent']['name']))
intent_name = intent_request['currentIntent']['name']
if intent_name == 'intent1':
return intent1(intent_request)
if intent_name == 'intent2':
return intent2(intent_request)
if intent_name == 'intent3':
return intent3(intent_request)
if intent_name == 'intent4':
return intent4(intent_request)
raise Exception('Intent with name ' + intent_name + ' not supported')
def lambda_handler(event, context):
logger.debug(event)
logger.debug('event.bot.name={}'.format(event['bot']['name']))
return dispatch(event)