我的Lex机器人中有4个意图,这些意图的逻辑与业务规则的细微变化非常相似
实现一个lambda函数并根据不同的意图调用不同的函数是一个好习惯吗?
这种方法是否会引入任何潜在的瓶颈或性能影响?
答案 0 :(得分:1)
对于不同的意图使用单个Lambda函数没有问题。您可以在所有意图中调用单个lambda函数,检查该lambda中的intent并在相同的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)