使用一个Lambda函数来处理多个intent

时间:2018-02-01 05:23:19

标签: aws-lambda amazon-lex

我的Lex机器人中有4个意图,这些意图的逻辑与业务规则的细微变化非常相似

实现一个lambda函数并根据不同的意图调用不同的函数是一个好习惯吗?

这种方法是否会引入任何潜在的瓶颈或性能影响?

1 个答案:

答案 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)