Alexa Proactive Events API возвращает 403 для одноадресного типа - для clientId нет включения - PullRequest
0 голосов
/ 08 июля 2019

Я использую API навыков Amazon для Amazon и API активных событий для отправки уведомлений в мой навык Alexa. Я могу отправить уведомление с многоадресной рассылкой, но она не работает для типа доставки "Unicast"

Я получаю HTTP код состояния: 403 и сообщение об ошибке:

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

Я следовал навыкам Alexa Проактивная документация API

При отправке уведомления на конечную точку

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

Я получаю accesstoken, используя учетные данные навыка, и добавляю accesstoken в качестве токена на предъявителя к запросу.

Примечание: я уже включил навык с https://alexa.amazon.in и Я получил идентификатор пользователя Amazon, apiAccesstoken и согласие. Я сохранил их в своей базе данных (mongoDB). Я использую идентификатор пользователя Amazon для отправки уведомления

<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);
            }
        });

    }
    

Результат должен быть HTTP код состояния с 202. Но я получаю HTTP код состояния 403 и сообщение об ошибке:

"No enablement for clientId: *************"
...