Alexa 技能默认意图覆盖
Alexa skill default intent override
有没有办法根据我在对话中的位置来覆盖亚马逊的默认意图(或任何真正的意图)?我希望在技能开始时与用户更进一步时通过不同的建议来回答“帮助”请求。目前,无论用户在技能的哪个位置寻求帮助,都会选择亚马逊默认意图。
const HelpIntentHandler = {
canHandle(handlerInput) {
return Alexa.getRequestType(handlerInput.requestEnvelope) === 'IntentRequest'
&& Alexa.getIntentName(handlerInput.requestEnvelope) === 'AMAZON.HelpIntent';
},
handle(handlerInput) {
const speakOutput = 'This is a customized help message';
return handlerInput.responseBuilder
.speak(speakOutput)
.reprompt(speakOutput)
.getResponse();
}
};
我以前用过的一个想法是设置一个 session attribute 来保持你的技能状态。您可以将其初始化为 state = "launched"
之类的值,并在用户参与对话后将其设置为 state = "inProgress"
。在您的帮助意图中,您可以检查会话属性的存在或值:
handle(handlerInput) {
// Get session attributes
const sessionAttributes = handlerInput.attributesManager.getSessionAttributes();
// Get or set default value
const state = sessionAttributes.favoriteColor || "launched";
// Set speakOutput accordingly
...
return handlerInput.responseBuilder
.speak(speakOutput)
.reprompt(speakOutput)
.getResponse();
}
有没有办法根据我在对话中的位置来覆盖亚马逊的默认意图(或任何真正的意图)?我希望在技能开始时与用户更进一步时通过不同的建议来回答“帮助”请求。目前,无论用户在技能的哪个位置寻求帮助,都会选择亚马逊默认意图。
const HelpIntentHandler = {
canHandle(handlerInput) {
return Alexa.getRequestType(handlerInput.requestEnvelope) === 'IntentRequest'
&& Alexa.getIntentName(handlerInput.requestEnvelope) === 'AMAZON.HelpIntent';
},
handle(handlerInput) {
const speakOutput = 'This is a customized help message';
return handlerInput.responseBuilder
.speak(speakOutput)
.reprompt(speakOutput)
.getResponse();
}
};
我以前用过的一个想法是设置一个 session attribute 来保持你的技能状态。您可以将其初始化为 state = "launched"
之类的值,并在用户参与对话后将其设置为 state = "inProgress"
。在您的帮助意图中,您可以检查会话属性的存在或值:
handle(handlerInput) {
// Get session attributes
const sessionAttributes = handlerInput.attributesManager.getSessionAttributes();
// Get or set default value
const state = sessionAttributes.favoriteColor || "launched";
// Set speakOutput accordingly
...
return handlerInput.responseBuilder
.speak(speakOutput)
.reprompt(speakOutput)
.getResponse();
}