【发布时间】:2023-04-10 02:54:01
【问题描述】:
我对编程知之甚少,但已经使用树莓派工作了几年。我想在 Pi 中使用 Alexa 并运行脚本来打开和关闭 GPIOS。在尝试了一些教程之后,我将 AWS Lambda 与 Alexa 技能连接起来。问题是我在测试技能时遇到错误。 “技能反应被标记为失败 卢斯 请求标识符:amzn1.echo-api.request.49687858-4c4f-482f-b82d-dd0ffedc9841
目标 Lambda 应用程序返回失败响应"
我检查了 AWS 云上的日志,这就是我得到的。
'intent': KeyError
Traceback (most recent call last):
File "/var/task/lambda_function.py", line 40, in lambda_handler
intent_name = event['request']['intent']['name']
KeyError: 'intent
我不知道该怎么做。我改编了来自 hackster.io 教程的代码。我使用 python 2.7 的 Lambda 代码是:
import boto3
access_key =
access_secret =
region =
queue_url =
def build_speechlet_response(title, output, reprompt_text, should_end_session):
return {
'outputSpeech': {
'type': 'PlainText',
'text': output
},
'card': {
'type': 'Simple',
'title': "SessionSpeechlet - " + title,
'content': "SessionSpeechlet - " + output
},
'reprompt': {
'outputSpeech': {
'type': 'PlainText',
'text': reprompt_text
}
},
'shouldEndSession': should_end_session
}
def build_response(session_attributes, speechlet_response):
return {
'version': '1.0',
'sessionAttributes': session_attributes,
'response': speechlet_response
}
def post_message(client, message_body, url):
response = client.send_message(QueueUrl = url, MessageBody= message_body)
def lambda_handler(event, context):
client = boto3.client('sqs', aws_access_key_id = access_key, aws_secret_access_key = access_secret, region_name = region)
intent_name = event['request']['intent']['name']
if intent_name == "LightOn":
post_message(client, 'on', queue_url)
message = "on"
elif intent_name == "LightOff":
post_message(client, 'off', queue_url)
message = "off"
else:
message = "Unknown"
speechlet = build_speechlet_response("Mirror Status", message, "", "true")
return build_response({}, speechlet)
我只想打开然后关闭 LED,但我不知道我是否需要所有这些代码。如果有一种简单的方法可以在 lba 中进行编码,请告诉我。
非常感谢您的帮助!
【问题讨论】:
标签: python amazon-web-services aws-lambda alexa