php - Amazon Connect 从 Lambda 函数和 PHP 接收 JSON 数据

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

我让 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 对象响应。当不正确时,唯一记录的错误如上,

The lambda function returned an error

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

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

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

最佳答案

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

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

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

var resultMap = { Name:'CustomerName', Address:'1234 Main Road', CallerType:'Patient' }

callback(null, resultMap);

The output returned from the function must be a flat object of key/value pairs, with values that include only alphanumeric, dash, and underscore characters. Nested and complex objects are not supported. The size of the returned data must be less than 32 Kb of UTF-8 data.

The following example shows the JSON output from these Lambda functions:

{ "Name": "CustomerName", "Address": "1234 Main Road", "CallerType": "Patient" }

关于php - Amazon Connect 从 Lambda 函数和 PHP 接收 JSON 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52664175/

相关文章:

php - 向未支付订单的用户发送邮件 php

PHP MySQL 缺少行(错误?)

ios - RestKit 使用外键从 JSON 导入

xml - 使用 Elasticsearch 地理功能从 XML 原始数据中查找最常见的位置

java - EC2 ELB 性能问题

php - 在某种类型的所有作业完成后安排作业

PHP:从 MySQL 数据库中过滤和导出大量数据

python - 如果可能,如何将 Python dict 转换为 JSON 作为列表

javascript - 通用 JSON 元素访问

amazon-s3 - 带 Cloudformation 的非 jar 装 ACL S3 存储桶