当前位置: 首页 > 知识库问答 >
问题:

节点.js Lambda 函数“响应无效”亚马逊 Alexa

阴雪风
2023-03-14

更新:我的http请求endpoint出错。我没有设置适当的身份验证选项,因此修复了很多错误,可能是这个特定的错误。

我的问题与这里的问题类似:

Node.jsLambda函数从REST调用返回"响应无效"给Alexa服务模拟器

然而,这个问题的解决方案并不能解决我的问题。因此,我对Hana云中的xsjs服务进行了http请求调用。我收到“响应无效”错误消息。我不明白为什么。以下是我的功能

 // Create a web request and handle the response.
function httpGet(query, callback) {

    console.log("/n QUERY: "+ query);

    var host = 'datacloudyd070518trial.hanatrial.ondemand.com'; 
    var path = '/LocationInformation/getLocationInfo.xsjs?location='; 
    var hostname = 'https://' + host + path + query; 


    var auth = 'user1:D1anafer'; 

    var req = http.request({'hostname': hostname,
                            'auth': auth
                        }, (res) => {

    var body = '';

        res.on('data', (d) => {
            body += JSON.stringify(d);
        });

        res.on('end', function () {
            callback(body);
        }); 

    }); 


    req.end();

    req.on('error', (e) => {
        console.error(e);
    }); 


}

以及调用它的函数:

'getNewsIntent': function () {

    //self = this; 

    httpGet(location, function (response) {

        // Parse the response into a JSON object ready to be formatted.
        //var output = JSON.parse(response); 
        //output = output['change']; 
        var output = response; 

        var cardTitle = location; 
        var cardContent = output; 

        alexa.emit(':tellWithCard', output, cardTitle, cardContent);

    }); 

}, 

谢谢你-黛安娜

共有3个答案

公孙霖
2023-03-14

来自Lambda的回调必须返回有效的状态码和正文。像这样:

let payload = {
    statusCode: 400,
    body: JSON.stringify('body'),
    headers: {"Access-Control-Allow-Origin": "*"}
};
callback(null, payload);

最重要的是,要从客户端代码调用它,必须传回CORS头。

万承志
2023-03-14

这只是我脑海中的猜测。要真正帮助一些详细的错误消息,就像前面提到的那样。

但只是一个猜测:你的 http.request() 正在使用 http 模块 (https://nodejs.org/api/http.html), 而你正在访问一个 https 资源。如果是这样,有一个https(https://nodejs.org/api/https.html)模块,或者使用像axios https://www.npmjs.com/package/axios 或请求js(https://github.com/request/request)这样的东西,这将处理两者。

就像我说的,只是瞎猜,没有详细的错误信息和看到你需要的声明,但我很高兴深入研究,如果你碰巧有细节。

HTH

耿建弼
2023-03-14

在您的AWS帐户中,进入您的< code>Lambda函数,并单击< code>monitoring选项卡,您应该会在右上角看到“查看Cloudwatch中的日志”。如果您单击该链接,您应该会看到正在产生的错误。

您还可以使用控制台。log()记录从REST api返回的任何信息,这些信息将记录在cloudwatch中,可以帮助您查看错误所在。

 类似资料:
  • 下面是我的php实现代码: 这是用于生成Amazon Pay按钮的JS实现代码。

  • 亚马逊云 图 1.20.2.1 - AWS AWS,即 Amazon Web Services,是亚马逊(Amazon)公司的 IaaS 和 PaaS 平台服务。AWS 提供了一整套基础设施和应用程序服务,使用户几乎能够在云中运行一切应用程序:从企业应用程序和大数据项目,到社交游戏和移动应用程序。AWS 面向用户提供包括弹性计算、存储、数据库、应用程序在内的一整套云计算服务,能够帮助企业降低 IT

  • 我想问alexa各种各样的问题,最后我想让它问“你还有什么想知道的吗?”当我说“是”(yes是工作建议)时,它应该根据我的意图来建议我。就像我在

  • 我刚刚开始使用AWS EC2。我明白EC2就像一台远程计算机,在那里我可以做几乎所有我想做的事情。然后我发现了ECS的事。我知道它使用Docker,但我对这两者之间的关系感到困惑。 ECS只是EC2中的Docker安装吗?如果我已经有一个EC2并且我启动了一个ECS,这是否意味着我有两个实例?

  • 我正在努力培养Alexa技能。我仍在试图让Alexa在有意向请求时说些什么,但我遇到了一个错误,我不知道该怎么办。当我通过Alexa服务模拟器运行示例话语时,我得到了错误: 无法调用远程终结点,或者它返回的响应无效。 如果我在lambda测试事件中运行相同的语句,我得到的错误是: "错误消息":"异常:引用错误:未定义输出" 我的javascript代码是 任何帮助将不胜感激,谢谢!

  • 但有些多重问题, 如何在.NET中对Amazon Cognito用户池执行身份验证。我以以下方式启动Auth: 他们的文档非常非常糟糕,当我想回应挑战时,我似乎找不到该通过什么。 我假设它只是用默认的JWT中间件配置OWIN,还是应该期待其他东西?