首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Alexa Skill在Ajax请求后没有响应

Alexa Skill在Ajax请求后没有响应
EN

Stack Overflow用户
提问于 2018-05-03 08:25:02
回答 1查看 198关注 0票数 1

这段代码可以完美地工作

代码语言:javascript
复制
var app = new Alexa.app('appName');
// ...
app.intent('marcopolo', {
  'slots': {},
  'utterances': ['marco']
}, function(request, response){
  console.log('marco worked');
  response.say('polo').shouldEndSession(false).send();
});

// Alexa says: polo
// Log says: marco worked

此代码不起作用

代码语言:javascript
复制
var app = new Alexa.app('appName');
// ...
app.intent('marcopolo', {
  'slots': {},
  'utterances': ['marco']
}, function(request, response){
  console.log('marco started');
  return ajax('http://www.google.com')
    .then(function(){
      console.log('marco response');
      response.say('polo').shouldEndSession(false).send();
    })
    .catch(function(){
      console.log('marco error');
      response.say('polo, I think').shouldEndSession(false).send();
    });
});

// alexa says: (no response)
// Log says: marco started

我尝试使用request-promisesuperagent作为Ajax库,结果相同。

以下是版本:

代码语言:javascript
复制
"alexa-app": "^2.4.0",
"request-promise": "^2.0.0",
"superagent": "^3.8.3"

以下是我的Alexa技能意图:

代码语言:javascript
复制
"intents": [
  {
    "name": "marcopolo",
    "slots": [],
    "samples": [ "marco" ]
  }
]

我从来没有见过app.intent()使用return语句的例子,但是我在网上看到一个响应,它建议在app.intent()中的异步需要返回一个promise,但是这个更新没有效果:

代码语言:javascript
复制
return ajax('http://www.google.com')

我也认为它可能是缓慢和超时,但我的Alexa技能超时设置为5分钟。我还有其他一些技巧,可以毫无问题地使用Ajax,而且代码都运行在Lambda (一种云服务)上,所以我无法想象任何环境因素都会导致这个问题。

感谢您的帮助。

EN

回答 1

Stack Overflow用户

发布于 2018-05-04 01:34:30

这段代码可以工作

代码语言:javascript
复制
var ajax = require('request-promise');
//...
app.intent('marcopolo', {
  'slots': {},
  'utterances': ['marco']
}, function(req, res){

  ajax('http://google.com').then(function() {
    console.log('success');
    res.say('polo').send();
  }).catch(function(err) {
    console.log(err.statusCode);
    res.say('not working').send();
  });
  return false;

});

事实证明,return语句是必需的,而且它必须是false。我找不到任何有记录的地方,也找不到任何关于return falseapp.intent()意味着什么的解释。返回undefined或Promise对象会中断交互。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50145295

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档