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 作为选项。