Я очень новичок в разработке 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
запрашивает ввод от пользователя.В случае этого навыка идентификаторы всегда числовые, например, 5099563.
В вышеупомянутом подходе проблема, с которой я сталкиваюсь, заключается в том, что когда alexa переходит к цели, она не получает требуемого ввода (const contact_id = this.$inputs.contactid.value
) иследовательно, заканчивая тем, что сказал
В ответе на запрошенный навык есть ошибка.
Мои вопросы:
Есть ли какие-либовариант, что я перейти к намерению и попросить пользователя для ввода?Есть ли способ, которым я могу использовать своего рода высказывание слота, которое Алекса спросит после перехода к цели и ожидания ввода пользователя (this.ask()
)?Как только входное значение станет доступным, 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.Если некоторые мои вопросы выглядят глупо, рассмотрите мой уровень понимания новичка.