Node.js   发布时间:2022-04-24  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Node.js Lambda函数从REST调用返回Alexa Service Simulator的“响应无效”大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
在Node.js Lambda函数和Alexa之间对API进行REST调用遇到问题.我正在使用 request库通过帐户关联技能拨打电话.我只为意图设置了一个样本话语,模拟器看到这很好.

此外,cloudwatch日志显示来自api端点的200响应代码以及API中从console.logs到CW的任何返回数据.

'use Strict';
var http = require('http');
var request = require('request');
var Alexa = require('alexa-sdk');
var APP_ID = "amzn1.ask.skill.XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXX";

exports.handler = function(event,context,callBACk) {
    var alexa = Alexa.handler(event,context);
    alexa.appId = APP_ID;
    alexa.registerHandlers(handlers);
    alexa.execute();
};

var handlers = {
   'Launchrequest': function () {
        this.emit(':tell','Hi!');
   },'ApiWelcomeIntent': function () {
        request('https://some.web/api',function (error,response,body) {
            if (!error && response.statusCode == 200) {
            // from within the callBACk,write data to response,essentially returning it.
                var speechOutput = JSON.Stringify(body);
                console.log(body + " :raw output?");
                console.log(speechOutput + ' :JSON Stringified');
                console.log(response.statusCodE);
                this.emit(':tell',speechOutput);
            } else {
                console.log(error + ' : ' + response.statusCodE);
                this.emit(':tell','There was an error');
            }
        });
    },'AMAZON.HelpIntent': function () {} //.........And other built in intents.

    }
};

我猜它与speechOutput的格式有关,我要求Alexa“发出/告诉”?

解决方法

不,它与speechOutput的格式无关.问题是,当执行请求方法的回调时,对此的引用将丢失.要解决此问题,请在调用请求之前保留对此的引用(例如,将其分配给名为self的变量):

'use Strict';
var http = require('http');
var request = require('request');
var Alexa = require('alexa-sdk');
var APP_ID = "amzn1.ask.skill.XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXX";

exports.handler = function(event,'ApiWelcomeIntent': function () {
        self = this

        request('https://some.web/api',essentially returning it.
                var speechOutput = JSON.Stringify(body);
                console.log(body + " :raw output?");
                console.log(speechOutput + ' :JSON Stringified');
                console.log(response.statusCodE);
                self.emit(':tell',speechOutput); // USE SELF HERE
            } else {
                console.log(error + ' : ' + response.statusCodE);
                self.emit(':tell','There was an error'); // AND HERE AS WELL
            }
        });
    },'AMAZON.HelpIntent': function () {} //.........And other built in intents.

    }
};

大佬总结

以上是大佬教程为你收集整理的Node.js Lambda函数从REST调用返回Alexa Service Simulator的“响应无效”全部内容,希望文章能够帮你解决Node.js Lambda函数从REST调用返回Alexa Service Simulator的“响应无效”所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。