当我在样本中发表类似的事情时,Alexa是否有可能做出正确反应?打开插槽?
MyNameIsIntent {firstname}
ProjektIntent {projekt}
现在她总是回到MyNameIsIntent,即使她问了一个关于ProjektIntent的问题
糟糕的谈话:
Alexa: Welcome, what is your name?
Me: Frank
Alexa Hi Frank, Tell me what project is interesting for you?
Me: Teleshoping
Alexa: Hi Teleshoping, Tell me what project is interesting for you?
我对Alexa完全陌生,如果Alexa可能回答正确的问题,你能给我一个小费吗?我尝试使用会话属性来执行此操作但不起作用
答案 0 :(得分:2)
这样的话语文件不起作用。 Alexa使用话语的文本 - 除了你没有的插槽名称之外的东西 - 选择意图。
所以,遗憾的是,你不能设计你的交互以允许只是'Teleshoping'的响应。相反,用户将不得不说“我对Teleshoping感兴趣”(你需要告诉他们这样说),样本话语将是“我对{projekt}感兴趣”。 / p>
答案 1 :(得分:1)
根据应用程序的状态,您可以使用States对相同的意图做出不同的反应。
有关官方文档,请参阅https://github.com/alexa/alexa-skills-kit-sdk-for-nodejs#making-skill-state-management-simpler。
您可以像这样创建一个StateHandler字典(在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
接受两个问题的答案,决定哪些函数应该仅根据应用程序状态处理结果。
答案 2 :(得分:0)
只是为了给汤姆的答案增加一点进一步的澄清,Alexa无法判断“" teleshoping"是你的名字或项目。 如果汤姆提到你使用更长的话语,例如"我的名字是{firstname}"和#34;我想{projekt}"然后Alexa将毫无困难地辨别。 您还可以通过填写槽值来帮助Alexa区分,但这假设您知道可能的projekt值。 firstname可以使用内置的AMAZON.US_FIRST_NAME slottype。