Как запросить ввод после навигации с помощью this.toIntent () и продолжить выполнение того же намерения после получения пользовательского ввода с помощью this.ask () - PullRequest
0 голосов
/ 19 июня 2019

Я очень новичок в разработке 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.Если некоторые мои вопросы выглядят глупо, рассмотрите мой уровень понимания новичка.

...