Как перейти к следующей функции в Alexa Skills - PullRequest
0 голосов
/ 02 февраля 2020

Я новичок в создании навыков Алекса, и я пытаюсь создать навык, который читает ваш пароль Wi-Fi. В будущем я хочу сделать этот динамик c, чтобы кто-то мог добавить свои собственные пароли Wi-Fi и прочитать его обратно. На данный момент мой пароль жестко закодирован. Я хочу попросить Алексу попросить пользователя указать конкретную c кодовую фразу (сейчас у меня также есть этот код). Если пароль правильный, прочитайте сохраненный пароль Wi-Fi. Проблема в том, что я не уверен, как добраться до второй функции. Вот поток разговоров между пользователем и Alexa.

Пользователь: «Alexa, какой у меня пароль к wifi?»

Alexa: «Какой пароль?»

Пользователь: "bravo."

Если правильный пароль Alexa: "Спасибо. Ваш пароль Wi-Fi - ПАРОЛЬ D."

Если неверный пароль Алекса: «Неправильный пароль. Какой ваш пароль?»

Вот моя GetPassword функция.

const GetPassword = {
    canHandle(handlerInput) {
        return Alexa.getRequestType(handlerInput.requestEnvelope) === 'IntentRequest';
    },
    handle(handlerInput) {
        const speakOutput = "What is the passphrase?"
        return handlerInput.responseBuilder
            .speak(speakOutput)
            .reprompt(speakOutput)
            .getResponse();
    }
};

А вот моя CheckPhrase функция.

const CheckPhrase = {
    canHandle(handlerInput) {
        return Alexa.getRequestType(handlerInput.requestEnvelope) === 'IntentRequest';
    },
    handle(handlerInput) {
        const speakOutput = "Your password is, YOUR_WIFI_PASSWORD"
        return handlerInput.responseBuilder
            .speak(speakOutput)
            .reprompt(speakOutput)
            .getResponse();
    }
};

Я намеревался выполнить CheckPhrase, когда пользователь говорит / печатает фразу после запуска первой функции. Я могу нормально добраться до первой функции, и мне предлагается ввести пароль. Но когда я ввожу фразу-пароль, она просто повторяет предыдущее приглашение. Я пытался использовать оператор if / else для проверки ввода пользователя, но я не совсем уверен, как получить правильное значение. Я также попытался вызвать CheckPhrase в пределах responseBuilder из GetPassword, который только что выполнил обратный пароль. Я также пытался использовать reprompt, но я считаю, что это больше, если навык не получил пользовательский ввод через определенное время.

Я прошу прощения, если это элементарные аспекты развития навыков Amazon, но я прочитал документы и, возможно, я не использую правильные фразы для поиска того, что я ищу, но это было бесполезно. Я видел несколько сообщений о SO, но я не смог найти никаких вопросов, касающихся проверки ввода или использования дополнительных функций.

Мой код в настоящее время размещается в консоли Alexa, а не в Lambda (I '). я не уверен, что это актуально). И я в настоящее время не использую никаких слотов.

1 Ответ

2 голосов
/ 04 февраля 2020

Похоже, вам нужно подтверждение слота. Проверьте эту страницу из официальных документов: https://developer.amazon.com/en-US/docs/alexa/custom-skills/define-the-dialog-to-collect-and-confirm-required-information.html

Sidenote: вам, вероятно, понадобится использовать SSML для написания пароля, как только код заработает, как и ожидалось: https://forums.developer.amazon.com/questions/190384/how-configure-alexa-to-confirm-numeric-slots-input.html

...