繁体   English   中英

Amazon Lex V2 Lambda python 用于获取意图名称或从 lambda 返回的任何响应的代码不起作用

[英]Amazon Lex V2 Lambda python code to get intent name or any response back from lambda is not working

''' 尝试从 lambda 为 Amazon Lex v2 获取作为意图名称的响应。 它可以是字符串或简单程序中的任何响应。

我已经参考了 V2 Lex 文档,但我可以想出以下代码,在多次尝试后显示错误。 https://docs.aws.amazon.com/lexv2/latest/dg/lambda.html

错误:“无效的 Lambda 响应:收到来自 Lambda 的错误响应:未处理”

'''

def lambda_handler(event, context):
  entity = event["currentIntent"]["slots"]["Nm"].title()
  intent = event["currentIntent"]["name"]


  response = {
    'sessionState': {
        'dialogAction': {
            'type': 'Close'
        },
        'state': 'Fulfilled'
    },
    'messages': [
          'contentType': 'PlainText',
          'content': "The intent you are in now is "+intent+"!"
        ],
    
    }    

  return response

'messages' 字段是一个对象数组,而不是字符串数组。 应声明如下:

'messages': [
          {
              'contentType': 'PlainText',
              'content': "The intent you are in now is "+intent+"!"
            }
        ]

参考:

Amazon Lex - Lambda 响应格式

我遇到了同样的问题。 对我有用的解决方案如下

var response = {};
    response.messages = [
        message
    ];
    response.sessionState = {
        sessionAttributes:sessionAttributes,
        intent : {
            name : intentRequest.interpretations[0].intent.name,
            state : 'Fulfilled'
        },
        dialogAction: {   
            type: "Close",   
            fulfillmentState: "Fulfilled"
        }
    };

请参阅 lex v2 开发人员指南第 69 页响应格式https://docs.aws.amazon.com/lexv2/latest/dg/lex2.0.pdf

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM