import { getStorageFun, TOKEN_NAME } from "@/utils/auth.js"; import { Authorization, KEFU_BASE_URL } from "@/utils/config.js"; function resolveQiaobaoBaseUrl() { let baseUrl = KEFU_BASE_URL; // H5 本地联调时,管理后台测试域名可能尚未部署最新桥宝接口。 // 只让 localhost/127.0.0.1 的开发页面访问本机 8080,App、小程序及线上 H5 不受影响。 // #ifdef H5 if (typeof window !== "undefined" && ["localhost", "127.0.0.1"].includes(window.location.hostname)) { baseUrl = `http://${window.location.hostname}:8080`; } // #endif return String(baseUrl).replace(/\/+$/, ""); } /** Stateless Qiaobao chat. It is intentionally separate from formal customer service. */ export function chatWithQiaobao(payload) { return new Promise((resolve, reject) => { uni.request({ url: `${resolveQiaobaoBaseUrl()}/qiaobao/chat`, method: "POST", data: payload, timeout: 30000, header: { Authorization, "HSM-AUTH": getStorageFun(TOKEN_NAME) || "", "content-type": "application/json", }, success: ({ data, statusCode }) => { let value = data; if (typeof value === "string") { try { value = JSON.parse(value); } catch (error) { /* keep original */ } } if (statusCode >= 200 && statusCode < 300 && value?.bizcode === 100) { resolve(value.data || {}); return; } reject(new Error(value?.msg || "桥宝暂时无法回答")); }, fail: (error) => reject(error || new Error("网络连接失败")), }); }); }