根据应用程序的状态,您可以使用States 对相同的意图做出不同的反应。
官方文档见https://github.com/alexa/alexa-skills-kit-sdk-for-nodejs#making-skill-state-management-simpler。
您可以像这样创建一个 StateHandlers 字典(在 Node.js 4.3 中):
var askNameStateHandlers = Alexa.CreateStateHandler("askNameState",
{
"MyIntent": function () { /* ... */ }
// more handlers ...
});
然后你像这样注册你的处理程序,假设你有一个没有状态的处理程序字典defaultHandlers
和两个带有特定状态的处理程序的字典,askNameStateHandlers
并且askProjectStateHandlers
:
exports.handler = function(event, context, callback) {
var alexa = Alexa.handler(event, context);
alexa.registerHandlers(defaultHandlers, askNameStateHandlers, askProjectStateHandlers);
alexa.execute();
};
要更改应用程序的状态,只需在处理函数中像这样分配它:
this.handler.state = "askNameState";
然后alexa-sdk
将根据您的应用程序状态处理调用正确的处理程序。
https://github.com/alexa/skill-sample-nodejs-highlowgame上还有一个完整的示例实现
请注意,这样一来,您将只有一个意图MyIntent
接受这两个问题的答案,仅根据应用程序状态决定您的哪个函数应处理结果。