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();
}