Alexa lambda_handler没有创建事件会话

时间:2016-09-21 12:24:02

标签: python aws-lambda alexa alexa-skills-kit

我在使用python lambda函数时遇到问题。我得到一个无效的键,用于在调用技能时应该创建的事件数组。我得到的错误是:

{
    "stackTrace": [
        [
            "/var/task/lambda_function.py",
            163,
            "lambda_handler",
            "app_id = event['session']['application']['applicationId']"
            ]
    ],
    "errorType": "KeyError",
    "errorMessage": "'session'"
}

这是我的代码

def lambda_handler(event, context):


"""Lambda function entrypoint."""
# print("event.session.application.applicationId={}".format(
#       event['session']['application']['applicationId']))

# Prevent unwanted access to this Lambda function.
app_id = event['session']['application']['applicationId']
if app_id != "amzn1.ask.skill.yyyyyyyy-xxx":
    raise ValueError("Invalid Application ID: {}".format(app_id))

request = event['request']

if event['session']['new']:
    on_session_started(
        {'requestId': request['requestId']}, event['session'])

func_map = {
    "LaunchRequest": on_launch,
    "IntentRequest": on_intent,
    "SessionEndedRequest": on_session_ended,
}

return func_map[request['type']](event['request'], event['session'])

2 个答案:

答案 0 :(得分:5)

问题是我在Lambda Function仪表板中配置了错误的测试。当我将其更改为Alexa Start Session时,会创建事件对象。 :)

答案 1 :(得分:1)

我们刚刚启动了一个项目bstpy,将Python lambda公开为http服务。您可能会发现它对测试很有用。您可以使用curl或postman将json有效负载投入其中。如果您使用其他Bespoken Tools进行尝试,则可以拥有非常好的开发环境