62 lines
1.7 KiB
JavaScript
62 lines
1.7 KiB
JavaScript
/* global module, require */
|
|
|
|
const { resolveVoicePrivacyErrorMessage } = require("./voicePrivacy");
|
|
|
|
/**
|
|
* 统一收敛语音网关错误:
|
|
* 1. 隐私权限错误优先翻译,避免误报为网关问题;
|
|
* 2. `url not in domain list` 单独归类为 socket 合法域名问题;
|
|
* 3. 其他 `connectSocket:fail` 视为网络或网关配置问题,不再误导成域名问题。
|
|
*/
|
|
|
|
function normalizeMessage(input, fallback) {
|
|
if (typeof input === "string" && input.trim()) return input.trim();
|
|
return typeof fallback === "string" ? fallback : "";
|
|
}
|
|
|
|
function resolveVoiceGatewayErrorState(input, fallback) {
|
|
const raw = normalizeMessage(input, fallback);
|
|
if (!raw) {
|
|
return { message: "", showSocketDomainModal: false };
|
|
}
|
|
|
|
const privacyMessage = resolveVoicePrivacyErrorMessage(raw, raw);
|
|
if (privacyMessage !== raw) {
|
|
return { message: privacyMessage, showSocketDomainModal: false };
|
|
}
|
|
|
|
if (/auth deny|scope\.record|authorize/i.test(raw)) {
|
|
return {
|
|
message: "麦克风权限未开启,请在设置中允许录音",
|
|
showSocketDomainModal: false
|
|
};
|
|
}
|
|
|
|
if (/url not in domain list/i.test(raw)) {
|
|
return {
|
|
message: "语音网关连接失败,请检查小程序 socket 合法域名",
|
|
showSocketDomainModal: true
|
|
};
|
|
}
|
|
|
|
if (/ready_timeout|连接超时/i.test(raw)) {
|
|
return {
|
|
message: "语音服务连接超时,请稍后重试",
|
|
showSocketDomainModal: false
|
|
};
|
|
}
|
|
|
|
if (/connectSocket:fail/i.test(raw)) {
|
|
return {
|
|
message: "语音网关连接失败,请检查网络或网关配置",
|
|
showSocketDomainModal: false
|
|
};
|
|
}
|
|
|
|
return { message: raw, showSocketDomainModal: false };
|
|
}
|
|
|
|
module.exports = {
|
|
resolveVoiceGatewayErrorState
|
|
};
|