Files

46 lines
1.6 KiB
JavaScript

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("网络连接失败")),
});
});
}