在Amazon Lex中,当使用AWS Lambda返回响应卡时,抛出空的fulfillmentState错误可能有几个原因。以下是一些可能的解决方法和代码示例:
import json
def lambda_handler(event, context):
# 处理逻辑...
response = {
"sessionAttributes": event["sessionAttributes"],
"dialogAction": {
"type": "Close",
"fulfillmentState": "Fulfilled",
"message": {
"contentType": "PlainText",
"content": "您的请求已处理成功。"
}
}
}
return {
"statusCode": 200,
"body": json.dumps(response)
}
import json
def lambda_handler(event, context):
try:
# 处理逻辑...
# 如果发生异常,抛出异常
response = {
"sessionAttributes": event["sessionAttributes"],
"dialogAction": {
"type": "Close",
"fulfillmentState": "Fulfilled",
"message": {
"contentType": "PlainText",
"content": "您的请求已处理成功。"
}
}
}
return {
"statusCode": 200,
"body": json.dumps(response)
}
except Exception as e:
error_response = {
"sessionAttributes": event["sessionAttributes"],
"dialogAction": {
"type": "Close",
"fulfillmentState": "Failed",
"message": {
"contentType": "PlainText",
"content": "发生错误:{}".format(str(e))
}
}
}
return {
"statusCode": 500,
"body": json.dumps(error_response)
}
确保Lambda函数返回的响应与以上示例代码结构相匹配,并正确设置fulfillmentState和message属性。这样,当您返回响应卡时,不会再抛出空的fulfillmentState错误。