#alexa-skills-kit #alexa-skill
Вопрос:
- Может ли перехватчик быть назначен только одному намерению?
- Могу ли я перенаправить перехватчик на другое намерение?
Я создал перехватчик ответа, который проверяет, выиграл ли пользователь в игре, и перенаправляет с перехватчика на другое намерение. Отображается шаблон намерения APL перед перехватчиком, но звук, который говорит alexa, исходит от намерения, которое я перенаправил. И шаблон APL перенаправленного намерения не отображается.
Ответ №1:
Может ли перехватчик быть назначен только одному намерению?
Да, вы можете, вам нужно использовать ту же логику, что и функция canHandle
в вашем перехватчике:
canHandle(handlerInput: Alexa.HandlerInput) {
// reuse this code
return (
Alexa.getRequestType(handlerInput.requestEnvelope) === "IntentRequest" amp;amp;
Alexa.getIntentName(handlerInput.requestEnvelope) === "HelloWorldIntent"
);
},
Могу ли я перенаправить перехватчик на другое намерение?
Не совсем так, но вы можете сделать это по-другому. Перехватчик не отвечает на запрос. Это просто intercept the request
для того, чтобы ваше Намерение могло справиться с этим. Тот intent
отвечает на запрос.
Таким образом, вы можете поместить логику сеанса в перехватчик, и цель будет знать, выиграл пользователь в игре или нет.
Перехватчик
const MyAwesomeInterceptor = {
process(handlerInput) {
const { attributesManager, requestEnvelope } = handlerInput;
const sessionAttributes = attributesManager.getSessionAttributes();
// Code logic ...
sessionAttributes.hasWon = true
}
}
Намерение
const HelloWorldIntentHandler = {
canHandle(handlerInput) {
return (
Alexa.getRequestType(handlerInput.requestEnvelope) === "IntentRequest" amp;amp;
Alexa.getIntentName(handlerInput.requestEnvelope) === "HelloWorldIntent"
);
},
handle(handlerInput) {
const { attributesManager } = handlerInput;
const sessionAttributes = attributesManager.getSessionAttributes();
if (sessionAttributes.hasWon) {
return handlerInput.responseBuilder.speak("You won").getResponse();
} else {
return handlerInput.responseBuilder.speak("You lost").getResponse();
}
},
};
Я рекомендую вам ознакомиться с документом, чтобы лучше понять, как работает Alexa.
Комментарии:
1. спасибо….ожидается что-то похожее на angular, где вы можете назначить перехватчик только для некоторых запросов. Я буду искать дока …..