Проверьте, установлено ли «значение» в слоте - PullRequest
0 голосов
/ 09 февраля 2019

Я делаю первые шаги с приложением Alexa.Я хочу разработать простое намерение, которое отвечает с именем человека {personName}, если в слоте было установлено «значение».Однако я не могу понять, что не так со следующим кодом: поскольку проверка включена, Alexa не понимает запрос, даже если введенный json верен.

Меня вдохновил другой вопрос StackOverflow о проверке ввода Проверка ввода Alexa для типа AMAZON.NUMBER с использованием диалоговой модели

const AnswerUserIntentHandler = {
    canHandle(handlerInput) {
        return handlerInput.requestEnvelope.request.type === 'IntentRequest'
            && handlerInput.requestEnvelope.request.intent.name ==='AnswerUserIntent';
    },
    handle(handlerInput) {
        var pNameObj = this.event.request.intent.slots.personName
        var testValue = pNameObj.hasOwnProperty("value");
        if (testValue) {
            var speechText = 'You entered the intent with a value!';
        }else{
            var speechText = 'You just entered the intent';
        }

        return handlerInput.responseBuilder
            .speak(speechText)
            //.reprompt('add a reprompt if you want to keep the session open for the user to respond')
            .getResponse();
    }
};

1 Ответ

0 голосов
/ 11 февраля 2019

Я бы сделал что-то вроде этого:

 var name = handlerInput.requestEnvelope.request.intent.slots.personName.value;
 var testValue= (name != undefined) ? true : false;
...