first commit
This commit is contained in:
61
apps/miniprogram/pages/terminal/voiceGatewayError.js
Normal file
61
apps/miniprogram/pages/terminal/voiceGatewayError.js
Normal file
@@ -0,0 +1,61 @@
|
||||
/* 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
|
||||
};
|
||||
Reference in New Issue
Block a user