You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在JS函数任意执行阶段,让用户输入reset即可回到初始level 0状态?

多轮对话reset功能实现方案

问题根因

  • reset判断的放置位置错误:你把reset逻辑放在了各level业务分支之后,而所有level的业务分支命中后都会执行return语句,直接结束函数执行,reset逻辑根本没有机会被触发
  • 重置操作不完整:仅修改了level变量,未清空usersName、path两个关联的状态变量,重置后开启新对话会残留上一轮的用户数据
  • 原代码未处理非yes/no的输入场景,用户输入其他内容时函数无返回值,不符合不限制输入的需求

正确实现代码

let level = 0;
let usersName;
let path;

const getBotReply = (msg) => {
    // 将reset判断放在函数最入口,优先级高于所有业务逻辑
    if (msg === "reset") {
        // 重置所有状态变量到初始值
        level = 0;
        usersName = undefined;
        path = undefined;
        return "对话已重置,请输入你的姓名重新开始";
    }

    if (level === 0) {
        level = 1;
        usersName = msg;
        return "Chur " + usersName + ". Do you live in Raglan?";
    }

    if (level === 1) {
        level = 2;
        if (msg === "yes") {
            path = "left-yes";
            return "Do you know how to surf?";
        }
        if (msg === "no") {
            path = "right-no";
            return "Are you from Auckland?";
        }
        // 补充非yes/no输入的兜底提示
        return "我暂时无法识别该内容,你可以输入yes/no继续对话,或输入reset重置对话";
    }

    // 后续level的业务逻辑可在此处扩展,同时可以补充对应层级的输入兜底逻辑
}

实现说明

  • reset逻辑放在函数最开头,任何阶段用户输入reset都会优先触发重置,不会被后续业务逻辑拦截
  • 重置操作清空了所有关联状态,避免旧数据干扰新对话流程
  • 补充了非预期输入的兜底返回,符合无需限制用户只能输入yes/no的需求
  • 重置后返回明确的操作提示,引导用户下一步操作

内容的提问来源于stack exchange,提问作者Eliot Robinson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 22:36:04