我对Alexa开发非常陌生,为此我正在使用JOVO框架。因此,我很抱歉,如果这不是问这个问题的正确地方。
我的app.js(JOVO)骨架如下:
const ivr_menu: = [
{
choice: "contact detail",
desc: "know more about a given contact."
},
{
choice: "email history",
desc: "know emailing history of a given contact."
},
]
app.setHandler({
LAUNCH(){
return this.toIntent("WelcomeIntent");
},
async WelcomeIntent() {
let os = "Welcome. Please listen to the IVR menu options carefully.";
for (var index = 0; index < ivr_menu.length; index++) {
os += `Say ${ivr_menu[index].choice} to ${ivr_menu[index].desc}.`;
}
this.ask(os);
},
async UserChoiceIntent() {
const menu_option = this.$inputs.ivrmenuoption.value;
switch(menu_option) {
case "contact detail":
return this.toIntent("ContactLookupIntent");
case "email history":
return this.toIntent("EmailHistoryIntent");
}
},
async ContatLookupIntent() {
const contact_id = this.$inputs.contactid.value;
this.tell(contact_id);
}
});
我要完成的工作是,当用户告诉他的选择时,它将首先向用户显示IVR菜单选项。一旦用户选择一个选项(例如说出联系方式),该技能就会进入UserChoiceIntent
并导航到正确的意图(switch-case
)。
ContactLookup
或EmailHistory
之类的每种意图都要求用户输入。对于这种技能,ID总是数字的,例如5099563。
在上述方法中,我遇到的问题是,当alexa导航到意图时,它没有获得所需的输入(const contact_id = this.$inputs.contactid.value
),因此最终说出
您要求的技能回答有误。
我的问题:
我是否有导航到意图并要求用户输入的选项?在导航到意图并等待用户输入(this.ask()
)之后,alexa会问我有没有什么方法可以使用这种说话方式?输入值可用后,alexa将继续执行该意图内的其余逻辑吗?最重要的是alexa执行this.ask()
,然后继续执行意图中的其余逻辑。
如何手动创建时段说话?请注意,我正在本地使用JOVO来构建该技能,并将其部署到Alexa。
由于我在这项技能上的全部意图都是像5099563这样的输入,即一个数字值,我该如何将其发送给alexa?我尝试使用AMAZON.NUMBER,但是当我输入一个值时,我不知道它会带来一些奇怪的结果,而这与我的意图响应无关。似乎输入已从某处获取并用于其他技能!在这里使用哪种正确的插槽类型?我尝试过AMAZON.LITERAL
,但它仅在美国提供,并且我来自印度,因此对我的技能不起作用。我认为传递这种价值的最好方法是说它像五零九九九五六三。 AMAZON.NUMBER
不会接受(或可能我错了)。那么处理这种情况的最佳方法是什么?
交互模型:
{
"interactionModel": {
"languageModel": {
"invocationName": "metrics report",
"types": [],
"intents": [
{
"name": "WelcomeIntent",
"samples": [],
"slots": []
},
{
"name": "UserOptionIntent",
"samples": [
"{ivrmenuoption}"
],
"slots": [
{
"name": "ivrmenuoption",
"type": "AMAZON.Person"
}
]
},
{
"name": "ContactLookupIntent",
"samples": [
"{contactid}",
],
"slots": [
{
"name": "contactid",
"type": "AMAZON.NUMBER"
}
]
},
{
"name": "AMAZON.CancelIntent",
"samples": []
},
{
"name": "AMAZON.HelpIntent",
"samples": []
},
{
"name": "AMAZON.StopIntent",
"samples": []
}
]
}
}
}
请注意,我是Alexa技能开发的新手。如果我的某些问题看起来很愚蠢,请考虑我对新手的理解程度。