【问题标题】:BotFramework sorry the service was upgraded and we need to start overBotFramework 抱歉服务已升级,我们需要重新开始
【发布时间】:2017-03-28 14:20:53
【问题描述】:

我目前有一个拥有 340 个用户的机器人,其中一些用户使用的是旧版本。最近我更新了我这边的版本,给用户发了一条消息,当他们尝试回复时,他们收到一条消息说“抱歉服务已升级,我们需要重新开始”

我知道这与 upgradeDialogId 有关。我已经有了它,但我不确定为什么它没有被触发。

const
    connector = new builder.ChatConnector({
        appId: process.env.MICROSOFT_APP_ID,
        appPassword: process.env.MICROSOFT_APP_PASSWORD,
        gzipData: true
    })

const
    bot = new builder.UniversalBot(connector)
        .set('autoBatchDelay', 0)
        .set('dialogErrorMessage', common.error().text)
bot.use(builder.Middleware.dialogVersion({
    version: VERSION,
    resetCommand: /^reset/i
}))

bot.use(builder.Middleware.firstRun({
    version: VERSION,
    dialogId: '/firstRun',
    upgradeDialogId: '/upgrade'
}))
bot.dialog('/upgrade', upgrade)
function upgrade(session, args) {
    session.endDialog("We just upgraded to a better version")
}

我是否遗漏了有关升级对话逻辑的内容?

提前感谢您的帮助

【问题讨论】:

    标签: bots botframework


    【解决方案1】:

    我在 Middleware.ts 文件中找到了这段代码 sn-p

    static firstRun(options: IFirstRunOptions): IMiddlewareMap {
            return {
                botbuilder: (session, next) => {
                    if (session.sessionState.callstack.length == 0) {
                        // New conversation so check first run version
                        var cur = session.userData[consts.Data.FirstRunVersion] || 0.0;
                        var curMajor = Math.floor(cur);
                        var major = Math.floor(options.version);
                        if (major > curMajor) {
                            // Run user through full first run experience
                            session.beginDialog(consts.DialogId.FirstRun, <IFirstRunDialogArgs>{
                                version: options.version,
                                dialogId: options.dialogId,
                                dialogArgs: options.dialogArgs
                            });
                        } else if (options.version > cur && options.upgradeDialogId) {
                            // Run user through upgrade experience
                            session.beginDialog(consts.DialogId.FirstRun, <IFirstRunDialogArgs>{
                                version: options.version,
                                dialogId: options.upgradeDialogId,
                                dialogArgs: options.upgradeDialogArgs
                            });
                        } else {
                            next();
                        }
                    } else {
                        next();
                    }
                }
            }
        }
    

    注意调用 firstRun 对话框的 else if 部分。我认为代码中存在错误,应该调用 upgradeDialogId 。谁能证实这一点?

    【讨论】:

      猜你喜欢
      • 2023-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-12
      • 1970-01-01
      • 2016-01-20
      • 1970-01-01
      • 2014-09-14
      相关资源
      最近更新 更多