如何在 Skill 创建后立即执行操作?

How to do something as soon as Skill is created?

在我的 Alexa Skill 中,我在 'addRequestInterceptors' 中设置了动态实体,因为实体必须尽快可用,问题是如果用户说 'Alexa, open SKILLNAME' 实体被正确初始化,但是如果此时用户改为说 'Alexa, ask SKILLNAME where is DYNAMICENTITY',则技能失败,因为尚未设置 DYNAMICENTITY

所以我的问题是,如何像创建技能时一样尽快设置我的动态实体?我已经尝试过 LaunchIntent,但如上例所示,如果用户在调用中提出问题,则可以避免..

所以 LaunchIntent 和 addRequestInterceptors 不适合这样做..

这是我应该尽快 运行 的代码:

const LoadListaPuntiVendita = {
    async process(handlerInput) {
        const {attributesManager, requestEnvelope} = handlerInput;
        const sessionAttributes = attributesManager.getSessionAttributes();
        const attributes = await attributesManager.getPersistentAttributes() || {};
        const piva =  attributes.hasOwnProperty('piva') ? attributes.piva : null;
        sessionAttributes["piva"] = piva;
        if (!piva || piva === null) {
            return;
        }
        
        let negozi = sessionAttributes['negozi']
        if (!negozi) {
            const response = await logic.fetchNegozi(piva);
            sessionAttributes['negozi'] = response;
            addDynamicEntities(handlerInput.responseBuilder, 'PuntoVenditaType', response);
            }
        }
};

乍一看,这是一个可能的错误。这只会 运行 在您至少进行了一次保存“piva”并将其设置为客户的持久值的交换之后。

如果您在技能初始化时 运行 执行此操作,则它仍然必须 运行 在持久性适配器初始化并从您的存储中检索“piva”的值之后并且必须在没有设置实体的情况下为“piva”或代码returns存储了一个值。