Alexa Proactive Events API对于单播类型返回403-没有启用clientId

时间:2019-07-08 11:48:58

标签: alexa alexa-skills-kit alexa-skill

我正在使用亚马逊的Alexa技能API和主动事件API向我的Alexa技能发送通知。我可以通过多播发送通知,但不适用于交付类型“单播”

我收到HTTP状态代码:403,错误消息为:

"No enablement for clientId:amzn-*********"

我已遵循Alexa技能proactive API documentation

向端点发送通知时

https://api.amazonalexa.com/v1/proactiveEvents/stages/development

我使用技能证书获得了accesstoken并将accesstoken作为不记名令牌添加到请求中。

注意:我已经启用了https://alexa.amazon.in和 我得到了Amazon userId,apiAccesstoken和同意令牌。我将它们存储在我的数据库(mongoDB)中。 我使用Amazon userId发送通知

<pre>
    <code>
    var uuid = require('node-uuid');
    var accessToken = "This`enter code here` token will be obtained from amazon oauth api.";
    var userId = "amzn1.ask.account.AH2ZEP5WGJGAEPWPOG3Getc.....";
    var uuid = require('node-uuid');
    var referenceId = uuid.v4();
    var now = new Date();
    var expiresOn = addMinutes(now, 300);
    var eventData = {
        "timestamp": new Date(),
        "referenceId": uuid,
        "expiryTime": expiresOn,
        "event": {
            "name": "AMAZON.MessageAlert.Activated",
            "payload": {
                "state": {
                    "status": "UNREAD",
                    "freshness": "NEW"
                },
                "messageGroup": {
                    "creator": {
                        "name": "Andy"
                    },
                    "count": 5,
                    "urgency": "URGENT"
                }
            }
        },
        "localizedAttributes": [
            {
                "locale": "en-US",
                "MessageAlert": "UNREAD"
            },
            {
                "locale": "en-GB",
                "MessageAlert": "UNREAD"
            }
        ],
        "relevantAudience": {
            "type": "Unicast",
            "payload": {
              "user": userId
            }
        }
    };

    var opt = {
        data: eventData,
        token: accessToken
    }
    sendRequest(opt, function(err, ret, code) {
        console.log("err : ",JSON.stringify(err, null, 2));
        console.log("ret : ",JSON.stringify(ret, null, 2));
        console.log("code : ",JSON.stringify(code, null, 2));
    });
    function sendRequest(options, callback) {

        var data = options.data;
        var token = options.token;
        var headers = {
            "Content-Type": "application/json",
            "Authorization":"Bearer "+token
        };

        var opt = {
            url: "https://api.amazonalexa.com/v1/proactiveEvents/stages/development",
            method: "POST",
            headers: headers,
            body: JSON.stringify(data)
        };

        request(opt, function(error, response, body){
            var statusCode = (response && response.statusCode) ? response.statusCode : "";

            if(error) {
                return callback(error);
            } else if(body) {
                try {
                  var result = JSON.parse(body);
                  return callback(null, result, statusCode);
                } catch(e) {
                  console.log("e.message : ",e.message);
                  return callback(null, body, statusCode);
                }

            } else {
                return callback(null, body, statusCode);
            }
        });

    }
    </code>
</pre>

结果应为带有HTTP的{​​{1}}状态代码。 但是我收到了202状态代码HTTP,错误消息为:

403

0 个答案:

没有答案