Alexa Node.js技能工具包 - 需要在处理程序完成之前返回回调数据

时间:2016-09-20 17:21:32

标签: alexa-skills-kit

我正在尝试构建一个简单的Alexa技能,使用[Node.js ASK](https://developer.amazon.com/public/community/post/Tx213D2XQIYH864/Announcing-the-Alexa-Skills-Kit-for-Node-js)从API返回数据。我已经将http get放在一个处理程序中,但Alexa在回调异步返回API数据之前完成了处理程序。

我一直在寻找答案,目前我的想法是:

  1. 不使用node.js
  2. 找出一种同步获取数据的方法
  3. 简单的我缺少的东西
  4. 代码的核心:

    exports.handler = function(event, context, callback) {
      var alexa = Alexa.handler(event, context);
      alexa.registerHandlers(handler);
      alexa.execute();
    };
    
    var handler = Alexa.CreateStateHandler(states.x, {
      'intent': function() {
        var options = {
          host: baseURL,
          path: pathURL
        };
        
        callback = function(response) {
          var str = "";
          response.on('data', function(piece) {
            str += piece;
          });
          
          response.on('end', function() {
            //does not get executed
            this.emit(':tell', str, "test");
          });
        }
        
        http.request(options, callback).end();
        
        //this does get executed if I leave this here
        this.emit(':tell'...);
      };

1 个答案:

答案 0 :(得分:0)

我认为你有一个范围问题。 试试......

response.on('end',() => {
    this.emit(':tell', str, "test");
});