我正在尝试使用回调函数更新我的messenger / wit.ai聊天机器人中的函数。
此原始格式执行正常:
['buildScenario'](sessionId, context, cb) {
var trendChoice = scenarioCombos['trends']
var disruptionChoice = scenarioCombos['disruptions']
context.trend = trendChoice[Math.floor(Math.random() * trendChoice.length)]
context.disruption = disruptionChoice[Math.floor(Math.random() * disruptionChoice.length)]
cb(context)
},
但是当我按照以下方式更新Promise时,它无法通过:
['buildScenario']({sessionId, context, entities}) {
return new Promise(function(resolve, reject) {
var trendChoice = scenarioCombos['trends']
var disruptionChoice = scenarioCombos['disruptions']
context.trend = trendChoice[Math.floor(Math.random() * trendChoice.length)]
context.disruption = disruptionChoice[Math.floor(Math.random() * disruptionChoice.length)]
return resolve(context)
})
},
我通过在整个函数中添加控制台日志来尝试调试,如下所示:
当触发该功能时,它会中途停止并且无法解决承诺:
当我在函数中尝试console.log(context)时,我得到'undefined'。
我错过了什么?
编辑:当我删除我的函数参数周围的花括号时:
['buildScenario'](sessionId, context, entities) {
console.log('BS POINT 1')
return new Promise(function(resolve, reject) {
console.log('BS POINT 2')
var trendChoice = scenarioCombos['trends']
console.log(trendChoice)
console.log('BS POINT 3')
var disruptionChoice = scenarioCombos['disruptions']
console.log(disruptionChoice)
console.log('BS POINT 4')
console.log(context)
context.trend = trendChoice[Math.floor(Math.random() * trendChoice.length)]
console.log(context)
console.log('BS POINT 5')
context.disruption = disruptionChoice[Math.floor(Math.random() * disruptionChoice.length)]
console.log(context)
console.log('BS POINT 6')
return resolve(context)
})
},
我能够记录我的上下文,但仍无法解析Promise:
答案 0 :(得分:0)
您的buildSenario应该如下所示,但如果您以当前的方式使用它,那就很好了。您可以忽略它,因为它是一条警告信息。
buildScenario({{sessionId, context, text, entities}}) {});
似乎你的一些回调或承诺没有在10秒内解决。
我只使用fb bot integartion在wit.ai上工作,在messenger bot节点上应该发送200状态接收短信。看看这段代码。
答案 1 :(得分:0)
原来我的包依赖关系将我的node-wit API版本限制为3.3.2并且不允许它稍后更新(API变为基于Promise而不是在v4.0.0中使用回调)。一旦我编辑了我的package.json文件以启用最新版本的node-wit,我就可以了。