【问题标题】:Amazon Connect receive JSON data from Lambda Function and PHPAmazon Connect 从 Lambda 函数和 PHP 接收 JSON 数据
【发布时间】:2018-10-06 23:00:16
【问题描述】:

我让 Amazon Connect 使用 AWS Lambda 函数从 PHP 服务器检索数据。我在Using AWS Lambda Functions with Amazon Connect

上阅读了这些文档

我有这样的 Lambda 设置:

exports.handler = (event, context, callback) => {
    https.get(url, (httpsResult) => {
        httpsResult.setEncoding('utf8');
        httpsResult.on('data', function gotResult (body) {
            console.log("PHP RETURNED= "+body);
            callback(null, body);
        });
    });
};

PHP 向 lambda 返回一个测试 JSON 对象:

$testArray=array("test"=>"test string value");
echo json_encode($testArray); exit;

Lambda Cloudwatch 日志显示 PHP RETURNED= {"test": "test string value"}

但是当 body 返回到 AWS Connect 时,它只记录以下内容:

{
    "Results": "The Lambda Function Returned An Error.",
    "ContactFlowModuleType": "InvokeExternalResource",
    ...
}

我在 Lambda 中尝试了多种方法来构建对 Connect 的 JSON 对象响应。不正确时,记录的唯一错误如上,

lambda 函数返回错误

但不是错误是什么。但是 lambda 中没有错误,只有在连接中。

我似乎成功传递数据的唯一方法是忽略 PHP 数据并将 Lambda 设置为 callback(null, {"test": "test string value"});

那么我通过 Lambda 从 PHP 传递 JSON 对象出了什么问题?

【问题讨论】:

    标签: php json amazon-web-services aws-lambda


    【解决方案1】:

    事实证明,您不应该将 JSON 对象传递给它,因为尽管文档没有提及它,但回调函数必须自己进行 JSON 编码。通常,您会在日志显示它被双重转义的地方看到这一点的证据,但无论出于何种原因,这里都没有发生这种情况。

    我在 Lambda 中使用 Node.js,所以回调需要接收常规的 Javascript 对象

    仔细查看示例有助于发现差异:

    var 结果映射 = { 名称:'客户名称', 地址:'1234 Main Road', 来电者类型:'病人' }

    回调(null, resultMap);

    函数返回的输出必须是键/值对的平面对象,其值仅包含字母数字、破折号和下划线字符。不支持嵌套和复杂对象。返回数据的大小必须小于 32 Kb 的 UTF-8 数据。

    以下示例显示了这些 Lambda 函数的 JSON 输出:

    { "名称": "客户名称", “地址”:“1234大道”, “来电者类型”:“患者” }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-22
      • 1970-01-01
      • 1970-01-01
      • 2013-12-16
      相关资源
      最近更新 更多