У меня есть Alexa-хост-метод (node.js)
пользователь: поговорите с тестовым ботом
alexa: добро пожаловать! Вы можете обновить имя или заказать еду. Что вы хотите сделать?
пользователь: заказывать еду
alexa: вы можете заказать гамбургер, суп и шейк. Что вы хотите иметь?
пользователь: гамбургер
alexa: Какой гамбургер вы хотите, бургер Vegg ie, индейка, говядина или Classi c?
user: vegg ie
alexa: ваш заказ на вегетарианский ie бургер был размещен.
но всякий раз, когда пользователь говорит, что menutype (burger) alexa повторяет: «Возникла проблема с ответ на запрошенный навык "
это мой код
const StartedInProgressOrderFoodIntentHandler = {
canHandle(handlerInput) {
return handlerInput.requestEnvelope.request.type === "IntentRequest"
&& handlerInput.requestEnvelope.request.intent.name === "OrderFoodIntent"
&& handlerInput.requestEnvelope.request.dialogState !== 'COMPLETED';
},
handle(handlerInput) {
return handlerInput.responseBuilder
.addDelegateDirective()
.getResponse();
}
};
const BurgerGivenOrderFoodIntentHandler = {
canHandle(handlerInput) {
return handlerInput.requestEnvelope.request.type === "IntentRequest"
&& handlerInput.requestEnvelope.request.intent.name === "OrderFoodIntent"
&& handlerInput.requestEnvelope.request.intent.slots.menu.value
&& handlerInput.requestEnvelope.request.intent.slots.menu.value === 'Burger'
&& !handlerInput.requestEnvelope.request.intent.slots.burgerType.value
},
handle(handlerInput) {
return handlerInput.responseBuilder
.speak('Which burger would you like Veggie, Turkey, Beef, or Classic burger?')
.reprompt('Would you like a Veggie, Turkey, Beef, or Classic burger?')
.addElicitSlotDirective('burgerType')
.getResponse();
}
};
const SoupGivenOrderFoodIntentHandler = {
canHandle(handlerInput) {
return handlerInput.requestEnvelope.request.type === "IntentRequest"
&& handlerInput.requestEnvelope.request.intent.name === "OrderFoodIntent"
&& handlerInput.requestEnvelope.request.intent.slots.menu.value
&& handlerInput.requestEnvelope.request.intent.slots.menu.value === 'Soup'
&& !handlerInput.requestEnvelope.request.intent.slots.soupType.value
},
handle(handlerInput) {
return handlerInput.responseBuilder
.speak("Which would you like tomato, manchow, onion, or corn soup?")
.reprompt("Would you like a tomato, manchow, onion, or corn soup?")
.addElicitSlotDirective('soupType')
.getResponse();
}
};
const ShakeGivenOrderFoodIntentHandler = {
canHandle(handlerInput) {
return handlerInput.requestEnvelope.request.type === "IntentRequest"
&& handlerInput.requestEnvelope.request.intent.name === "OrderFoodIntent"
&& handlerInput.requestEnvelope.request.intent.slots.menu.value
&& handlerInput.requestEnvelope.request.intent.slots.menu.value === 'Shake'
&& !handlerInput.requestEnvelope.request.intent.slots.shakeType.value
},
handle(handlerInput) {
return handlerInput.responseBuilder
.speak("Which would you like banana, chocolate, vanilla, milk, strawberry, or mango shake?")
.reprompt("Would you like a banana, chocolate, vanilla, milk, strawberry, or mango shake?")
.addElicitSlotDirective('shakeType')
.getResponse();
}
};
const CompletedOrderFoodIntentHandler = {
canHandle(handlerInput) {
return handlerInput.requestEnvelope.request.type === "IntentRequest"
&& handlerInput.requestEnvelope.request.intent.name === "OrderFoodIntent"
&& handlerInput.requestEnvelope.request.dialogState === "COMPLETED";
},
handle(handlerInput){
const menu = handlerInput.requestEnvelope.request.intent.slots.menu.value;
let type;
if (menu === 'Burger') {
type = handlerInput.requestEnvelope.request.intent.slots.burgerType.value;
} else if (menu === 'Soup') {
type = handlerInput.requestEnvelope.request.intent.slots.soupType.value;
} else if (menu === 'Shake') {
type = handlerInput.requestEnvelope.request.intent.slots.shakeType.value;
}
const speechText = `Your order for ${type} ${menu} has been placed.`;
return handlerInput.responseBuilder
.speak(speechText)
.getResponse();
}
};
JSON ответ о состоянии ввода
"status": {
"code": "ER_SUCCESS_MATCH"
},
JSON ответ о выходе
{
"body": {
"version": "1.0",
"response": {
"directives": [
{
"type": "Dialog.Delegate"
}
],
"type": "_DEFAULT_RESPONSE"
},
"sessionAttributes": {},
"userAgent": "ask-node/2.7.0 Node/v10.19.0"
}
}