Я новичок в навыках Alexa, поэтому, возможно, я использую неправильный подход для управления диалогами, но я пытаюсь определить реакцию пользователя следующим образом, используя условия в обработчиках YesIntent и NoIntent. Я размещаю и тестирую все в консоли разработчика Alexa. Вот базовый c сценарий счастливого пути, где они уже сказали «да», они заинтересованы в событии, и теперь я спрашиваю, хотят ли они, чтобы они отправили текстовую информацию:
const YesIntentHandler = {
canHandle(handlerInput) {
return Alexa.getRequestType(handlerInput.requestEnvelope) === 'IntentRequest'
&& (Alexa.getIntentName(handlerInput.requestEnvelope) === 'AMAZON.YesIntent');
},
async handle(handlerInput) {
const sessionAttributes = handlerInput.attributesManager.getSessionAttributes();
const { askedUserIfTheyWantText, textUser } = sessionAttributes;
let speakOutput;
if (askedUserIfTheyWantText === undefined) { // I have yet to ask
speakOutput = 'Alright, want me to text you the info?';
sessionAttributes.askedUserIfTheyWantText = true;
handlerInput.attributesManager.setSessionAttributes(sessionAttributes);
} else if (askedUserIfTheyWantText) { // I already asked and they said yes
// assume I already have number, so I will now text them
const successfullyTextedUser = await textUserInfo();
if (successfullyTextedUser) speakOutput = 'Texted you the info!';
else speakOutput = 'There was a problem texting you the info.';
}
return handlerInput.responseBuilder
.speak(speakOutput)
.getResponse();
}
}
Проблема в том, что askUserIfTheyWantText никогда не обновляется до true (остается неопределенным), поэтому Alexa продолжает спрашивать: «Хорошо, хотите, чтобы я отправил вам текст информации?». Что я делаю неправильно?? Как я уже сказал, я тестирую (с помощью текста) в консоли разработчика Alexa.