let wpsInstance = null; function InvokeFromXbot(param) { // 1. 解析参数, 如果不是字符串, 则转换为字符串, 并用json解析, 解析失败直接retrun if (typeof param !== 'string') { param = JSON.stringify(param); } try { param = JSON.parse(param); } catch (e) { return { msg: '参数解析失败', code: -1 }; } // 2. 判断是否有method字段, 如果没有直接return if (!param.method) { return { msg: '参数错误', code: -2 }; } // 3. 获取 method 字段对应的方法和 args 参数 let method = param.method; let args = null; try { args = JSON.parse(param.args); } catch (e) { args = {}; } console.log("method:", method); console.log("args:", args); // confsole.log("args", typeof args); // 4. 判断 method 是否为 inject, 如果是则执行注入方法, 其他走默认方法执行调用函数 if (method === 'inject') { let code = args.code; console.log("start eval code"); console.log(code); console.log(new Function(code)()); wpsInstance = new Function(code)(); // 执行并获取返回值 console.log("success eval code"); return { message: "inject ok", code: 0 } } // 5. 判断是否有 wpsInstance, 如果没有直接return if (!wpsInstance) { return { msg: '未注入', code: -3 }; } // 6. 判断 wpsInstance 是否有 method 方法, 如果没有直接return if (!wpsInstance[method]) { return { msg: '方法不存在', code: -4 }; } // 7. 执行 wpsInstance 的 method 方法, 并返回结果 try { const result = wpsInstance[method](args ?? null); return { msg: '执行成功', code: 0, data: result }; } catch (e) { return { msg: '执行失败', code: -5 }; } }