具有授权的Alexa node.js http请求

时间:2017-04-14 07:55:14

标签: javascript node.js http request alexa-skills-kit


我正在为亚马逊Alexa实施一项技能。我想确定用户的地理位置,但http.get请求无法正常工作。我在邮递员中尝试了这个请求,但我得到了理想的结果,但无法弄清楚可能出现的问题。请求网址应与具有授权标头https://api.amazonalexa.com/v1/devices/{deviceId}/settings/address的此Authorization: Bearer {token}类似。
这是我的代码

try{
    var body = "";
    console.log('Authorization ', consentToken);
    var response = '';

    var options = {
      host: 'api.eu.amazonalexa.com',
      path: '/v1/devices/'+deviceId+'/settings/address',
      port: '443',
      headers: {'Authorization': "Bearer "+consentToken},
      method: 'GET'
    };       

    https.get(options, function(res) {
         console.log('status', res.statusCode);
         if (res.statusCode >= 200 && res.statusCode < 400) {
           res.on('data', function(data_) { response += data_.toString(); });
           res.on('end', function() {
             var data = JSON.parse(response);
             console.log('data', data);
             if (data.length > 0)
                 userLocation = data;
           });
         }
       }).on('error', function(e) {
                console.log("errrrror",e);
       }).on('uncaughtException', function (err) {
                console.log('uncaughtException',err);
       });
  }
  catch(error) { 
        console.log('getAndProcessUserLocation',error);
}   

我不知道为什么不执行https.get。没有错误,但我无法从中获取任何日志。
我遵循了thr官方网站的文档 https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/device-address-api

1 个答案:

答案 0 :(得分:1)

在没有看到其余代码的情况下,我的猜测是您没有向Alexa请求指示您是异步处理它,因此会话在请求完成之前结束。