【发布时间】:2017-04-24 03:10:43
【问题描述】:
早些时候我遇到了 Alexa 没有将状态更改回空白状态的问题,以及 found out that there is a bug in doing that。为了完全避免这个问题,我决定强制我的技能始终以 START_MODE 开头。
我使用 this 作为我的参考,他们通过在第 55 行的 alexa.execute() 之前执行 alexa.state = constants.states.START 来设置技能状态。但是,当我在代码中执行相同操作时,它不起作用。
以下是我目前的技能:
exports.newSessionHandler = {
LaunchRequest () {
this.hander.state = states.START;
// Do something
}
};
exports.stateHandler = Alexa.CreateStateHandler(states.START, {
LaunchRequest () {
this.emit("LaunchRequest");
},
IntentA () {
// Do something
},
Unhandled () {
// Do something
}
});
我正在使用Bespoken-tools 和Mocha 测试这个技能,当我像这样直接喂IntentA 时:
alexa.intended("IntentA", {}, function (err, p) { /*...*/ })
测试抱怨,Error: No 'Unhandled' function defined for event: Unhandled。据我所知,这只能意味着该技能在启动时处于空白状态(因为我没有为该状态定义任何Unhandled),这一定意味着alexa.state 不是一个真正的东西。但这让我想知道他们是如何让它在上面的示例代码中工作的。
我想解决这个问题的方法是为我希望在START_MODE 中拥有的每个意图创建一个别名,方法是:
IntentA () {
this.handler.state = states.START;
this.emitWithState("IntentA");
}
但我想知道是否有办法强制我的技能从特定状态开始,因为在我看来这似乎是一个非常非常好的解决方案。
【问题讨论】:
标签: javascript node.js alexa-skills-kit alexa-skill