Amazon 开发人员不断告诉我功能测试中有关未验证请求的错误
Amazon developer keeps telling me an error in functional test about not validating the requests
我目前正在尝试部署 alexa 技能,但是当我尝试提交它以供审核时,它一直告诉我我没有验证签名,我不知道如何在代码上实现它。
'use strict';
require('dotenv').config();
var Alexa = require('alexa-sdk');
var languageStrings = require('./languageStrings.js');
exports.handler = function(event, context, callback) {
var alexa = Alexa.handler(event, context);
// To enable string internationalization (i18n) features, set a resources object.
alexa.resources = languageStrings;
alexa.registerHandlers(handlers);
alexa.execute();
};
const verifier = require('alexa-verifier')
verifier(cert_url, signature, requestRawBody, function callbackFn(er) {
// if er, something went wrong
})
var handlers = {
'LaunchRequest': function () {
this.emit('GetFact');
},
'GetNewFactIntent': function () {
this.emit('GetFact');
},
'GetFact': function () {
// Get a random fact from the fact list
// Use this.t() to get corresponding language data
var factArr = this.t('FACTS');
var factIndex = Math.floor(Math.random() * factArr.length);
var randomFact = factArr[factIndex];
// Create speech output
var speechOutput = this.t("GET_FACT_MESSAGE") + randomFact;
this.emit(':tellWithCard', speechOutput, this.t("SKILL_NAME"), randomFact)
},
'AMAZON.HelpIntent': function () {
var speechOutput = this.t("HELP_MESSAGE");
var reprompt = this.t("HELP_MESSAGE");
this.emit(':ask', speechOutput, reprompt);
},
'AMAZON.CancelIntent': function () {
this.emit(':tell', this.t("STOP_MESSAGE"));
},
'AMAZON.StopIntent': function () {
this.emit(':tell', this.t("STOP_MESSAGE"));
}
};`
如果有人可以帮助我提供某种类型的教程或其他东西,我很迷茫,提前谢谢你
您似乎在自定义 Web 服务上托管技能。任何具有自定义服务作为后端的技能都需要验证它收到的请求是由 Alexa 服务发送的。
如果您使用的是 Alexa 团队提供的 SDK,这里 good documentation 介绍了如何验证这一点。
如果您想完全跳过这个,最好使用 AWS Lambda 作为后端,或者在构建技能时选择 Alexa Hosted 作为选项。
我目前正在尝试部署 alexa 技能,但是当我尝试提交它以供审核时,它一直告诉我我没有验证签名,我不知道如何在代码上实现它。
'use strict';
require('dotenv').config();
var Alexa = require('alexa-sdk');
var languageStrings = require('./languageStrings.js');
exports.handler = function(event, context, callback) {
var alexa = Alexa.handler(event, context);
// To enable string internationalization (i18n) features, set a resources object.
alexa.resources = languageStrings;
alexa.registerHandlers(handlers);
alexa.execute();
};
const verifier = require('alexa-verifier')
verifier(cert_url, signature, requestRawBody, function callbackFn(er) {
// if er, something went wrong
})
var handlers = {
'LaunchRequest': function () {
this.emit('GetFact');
},
'GetNewFactIntent': function () {
this.emit('GetFact');
},
'GetFact': function () {
// Get a random fact from the fact list
// Use this.t() to get corresponding language data
var factArr = this.t('FACTS');
var factIndex = Math.floor(Math.random() * factArr.length);
var randomFact = factArr[factIndex];
// Create speech output
var speechOutput = this.t("GET_FACT_MESSAGE") + randomFact;
this.emit(':tellWithCard', speechOutput, this.t("SKILL_NAME"), randomFact)
},
'AMAZON.HelpIntent': function () {
var speechOutput = this.t("HELP_MESSAGE");
var reprompt = this.t("HELP_MESSAGE");
this.emit(':ask', speechOutput, reprompt);
},
'AMAZON.CancelIntent': function () {
this.emit(':tell', this.t("STOP_MESSAGE"));
},
'AMAZON.StopIntent': function () {
this.emit(':tell', this.t("STOP_MESSAGE"));
}
};`
如果有人可以帮助我提供某种类型的教程或其他东西,我很迷茫,提前谢谢你
您似乎在自定义 Web 服务上托管技能。任何具有自定义服务作为后端的技能都需要验证它收到的请求是由 Alexa 服务发送的。
如果您使用的是 Alexa 团队提供的 SDK,这里 good documentation 介绍了如何验证这一点。
如果您想完全跳过这个,最好使用 AWS Lambda 作为后端,或者在构建技能时选择 Alexa Hosted 作为选项。