import { NAME, errorCodeUrl } from './constants';
/////////////////////////////////////////////////////////////////////////////////
//
// (三)JS 封装层抛出的异常(严重)
//
/////////////////////////////////////////////////////////////////////////////////
export const TcccErrorCode = {
/////////////////////////////////////////////////////////////////////////////////
//
// 基础错误码
//
/////////////////////////////////////////////////////////////////////////////////
/// 无错误。成功
// ERR_SIP_SUCCESS : 200,
/// 无错误。成功
ERR_NONE : 0,
/// Http 请求失败,请检查网络连接情况
ERR_HTTP_REQUEST_FAILURE : -10001,
/// token登录票据不正确或者已过期
ERR_HTTP_TOKEN_ERROR : -10002,
/// 获取坐席配置失败。请联系我们
ERR_HTTP_GETSIPINFO_ERROR : -10003,
/// 正在通话中,禁止重置网络操作&发起外呼
ERR_NETWORK_CANNOT_RESET : -10004,
/// 你已经退出登录了,请重新登陆
ERR_HAD_LOGGEDOUT : -10005,
/// 注销失败
ERR_UNRIGIST_FAILURE : 20001,
/// 接听失败,通常是trtc进房失败了
ERR_ANSWER_FAILURE : 20002,
/// URI 格式错误。
ERR_SIPURI_WRONGFORMAT : 20003,
/// 发送DTMF失败
ERR_SEND_DTMF_FAILURE : 20004,
/////////////////////////////////////////////////////////////////////////////////
// SIP相关错误码
/////////////////////////////////////////////////////////////////////////////////
/// Bad Request 错误请求
ERR_SIP_BAD_REQUEST : 400,
/// Unauthorized。未授权(用户名密码不对情况)
ERR_SIP_UNAUTHORIZED : 401,
/// Payment Required 付费要求,通常是坐席许可满了
ERR_SIP_PAYMENTREQUIRED : 402,
/// Forbidden 禁止。密码错误,或者是被踢了
ERR_SIP_FORBIDDEN : 403,
/// Not Found 未发现
ERR_SIP_NOTFOUND : 404,
/// Method Not Allowed 方法不允许
ERR_SIP_NOTALLOWED : 405,
/// Not Acceptable 不可接受
ERR_SIP_NOTACCEPTABLE : 406,
/// Proxy Authentication Required 代理需要认证
ERR_SIP_AUTHENTICATION_REQUIRED : 407,
/// Request Timeout。请求超时(网络超时)
ERR_SIP_REQUESTTIMEOUT : 408,
/// Gone 离开
ERR_SIP_GONE : 410,
/// Precondition Failed
ERR_SIP_PRECONDITION_FAILED : 412,
/// Request Entity Too Large
ERR_SIP_TOO_LARGE : 413,
/// Request-URI Too Long。 请求URL太长(用户ID太长)
ERR_SIP_URI_TOO_LONG : 414,
/// Unsupported Media Type
ERR_SIP_UNSUPPORTED_MEDIA : 415,
/// Unsupported URI Scheme
ERR_SIP_UNSUPPORTED_SCHEME : 416,
/// Bad Extension
ERR_SIP_BAD_EXTENSION : 420,
/// Extension Required
ERR_SIP_EXTENSION_REQUIRED : 421,
/// Session Interval Too Small
ERR_SIP_SESSION_TOO_SMALL : 422,
/// Interval Too Brief
ERR_SIP_TOO_BRIEF : 423,
/// Flow failed
ERR_SIP_FLOW_FAILED : 430,
// /// First Hop Lacks Outbound Support
// ERR_SIP_439 : 439,
/// Temporarily Unavailable
ERR_SIP_TEMPORARILY_UNAVAILABLE : 480,
/// Call/Transaction Does Not Exist
ERR_SIP_NOT_EXIST : 481,
/// Loop Detected
ERR_SIP_LOOP_DETECTED : 482,
/// Too Many Hops
ERR_SIP_TOO_MANY_HOPS : 483,
/// Address Incomplete
ERR_SIP_ADDRESS_INCOMPLETE : 484,
/// Ambiguous
ERR_SIP_AMBIGUOUS : 485,
/// Busy Here
ERR_SIP_BUSY_HERE : 486,
/// Request Terminated。请求终止(网络异常,网络中断场景下)
ERR_SIP_REQUEST_TERMINATED : 487,
/// Not Acceptable Here
ERR_SIP_NOT_ACCEPTABLE_HERE : 488,
// ///"Event Package Not Supported
// ERR_SIP_489 : 489,
/// Request Pending
ERR_SIP_REQUEST_PENDING : 491,
/// Undecipherable
ERR_SIP_UNDECIPHERABLE : 493,
/// Server Internal Error
ERR_SIP_SERVER_ERROR : 500,
/// Not Implemented
ERR_SIP_NOT_IMPLEMENTED : 501,
/// Bad Gateway
ERR_SIP_BAD_GATEWAY : 502,
/// Service Unavailable 服务不可用
ERR_SIP_SERVICE_UNAVAILABLE : 503,
/// Server Time-out服务超时
ERR_SIP_SERVER_TIMEOUT : 504,
/// Version Not Supported
ERR_SIP_VERSION_NOT_SUPPORTED : 505,
/// Message Too Large
ERR_SIP_MESSAGE_TOO_LARGE : 513,
/// Busy Everywhere
ERR_SIP_BUSY_EVERYWHERE : 600,
/// Decline
ERR_SIP_DECLINE : 603,
/// Does Not Exist Anywhere
ERR_SIP_NOT_EXIST_ANYWHERE : 604,
/// Not Acceptable
ERR_SIP_NOT_ACCEPTABLE : 606,
/////////////////////////////////////////////////////////////////////////////////
// 音频相关错误码
/////////////////////////////////////////////////////////////////////////////////
/// 打开麦克风失败,例如在 Windows 或 Mac
/// 设备,麦克风的配置程序(驱动程序)异常,禁用后重新启用设备,或者重启机器,或者更新配置程序
ERR_MIC_START_FAIL : -1302,
/// 麦克风设备未授权,通常在移动设备出现,可能是权限被用户拒绝了
ERR_MIC_NOT_AUTHORIZED : -1317,
/// 麦克风设置参数失败
ERR_MIC_SET_PARAM_FAIL : -1318,
/// 麦克风正在被占用中,例如移动设备正在通话时,打开麦克风会失败
ERR_MIC_OCCUPY : -1319,
/// 停止麦克风失败
ERR_MIC_STOP_FAIL : -1320,
/// 打开扬声器失败,例如在 Windows 或 Mac
/// 设备,扬声器的配置程序(驱动程序)异常,禁用后重新启用设备,或者重启机器,或者更新配置程序
ERR_SPEAKER_START_FAIL : -1321,
/// 扬声器设置参数失败
ERR_SPEAKER_SET_PARAM_FAIL : -1322,
/// 停止扬声器失败
ERR_SPEAKER_STOP_FAIL : -1323,
/// 开启系统声音录制失败,例如音频驱动插件不可用
ERR_AUDIO_PLUGIN_START_FAIL : -1330,
/// 安装音频驱动插件未授权
ERR_AUDIO_PLUGIN_INSTALL_NOT_AUTHORIZED : -1331,
/// 安装音频驱动插件失败
ERR_AUDIO_PLUGIN_INSTALL_FAILED : -1332,
/// 安装虚拟声卡插件成功,但首次安装后功能暂时不可用,此为 Mac 系统限制,请在收到此错误码后提示用户重启当前 APP
ERR_AUDIO_PLUGIN_INSTALLED_BUT_NEED_RESTART : -1333,
/// 音频帧编码失败,例如传入自定义音频数据,SDK 无法处理
ERR_AUDIO_ENCODE_FAIL : -1304,
/// 不支持的音频采样率
ERR_UNSUPPORTED_SAMPLERATE : -1306,
/////////////////////////////////////////////////////////////////////////////////
// 网络相关错误码
/////////////////////////////////////////////////////////////////////////////////
/// 进入房间失败,请查看 onError 中的 -3301 对应的 msg 提示确认失败原因
ERR_RTC_ENTER_ROOM_FAILED : -3301,
/// 请求 IP 和 sig 超时,请检查网络是否正常,或网络防火墙是否放行 UDP。
/// 可尝试访问下列 IP:162.14.22.165:8000 162.14.6.105:8000 和域名:default-query.trtc.tencent-cloud.com:8000
ERR_RTC_REQUEST_IP_TIMEOUT : -3307,
/// 请求进房超时,请检查是否断网或者是否开启vpn,您也可以切换4G进行测试确认
ERR_RTC_CONNECT_SERVER_TIMEOUT : -3308,
/// 进房参数为空,请检查: enterRoom:appScene: 接口调用是否传入有效的 param
ERR_RTC_ROOM_PARAM_NULL : -3316,
/// 进房参数 sdkAppId 错误,请检查 TRTCParams.sdkAppId 是否为空
ERR_RTC_INVALID_SDK_APPID : -3317,
/// 进房参数 roomId 错误,请检查 TRTCParams.roomId 或 TRTCParams.strRoomId 是否为空,注意 roomId 和 strRoomId 不可混用
ERR_RTC_INVALID_ROOM_ID : -3318,
/// 进房参数 userId 不正确,请检查 TRTCParams.userId 是否为空
ERR_RTC_INVALID_USER_ID : -3319,
/// 进房参数 userSig 不正确,请检查 TRTCParams.userSig 是否为空
ERR_RTC_INVALID_USER_SIG : -3320,
/// 进房请求被拒绝,请检查是否连续调用 enterRoom 进入相同 Id 的房间
ERR_RTC_ENTER_ROOM_REFUSED : -3340,
};
export const TcccWarningCode = {
/////////////////////////////////////////////////////////////////////////////////
// 音频相关警告码
/////////////////////////////////////////////////////////////////////////////////
/// 没有检测到可用的麦克风设备
WARNING_MICROPHONE_DEVICE_EMPTY : 1201,
/// 没有检测到可用的扬声器设备
WARNING_SPEAKER_DEVICE_EMPTY : 1202,
/// 用户未授权当前应用使用麦克风
WARNING_MICROPHONE_NOT_AUTHORIZED : 1203,
/// 音频采集设备不可用(例如被占用或者PC判定无效设备)
WARNING_MICROPHONE_DEVICE_ABNORMAL : 1204,
/// 音频播放设备不可用(例如被占用或者PC判定无效设备)
WARNING_SPEAKER_DEVICE_ABNORMAL : 1205,
/// 当前音频帧解码失败
WARNING_AUDIO_FRAME_DECODE_FAIL : 2102,
/// 音频录制写入文件失败
WARNING_AUDIO_RECORDING_WRITE_FAIL : 7001,
/// 录制音频时监测到啸叫
WARNING_MICROPHONE_HOWLING_DETECTED : 7002,
};
/**
* @namespace ErrorCode
* @description 错误码
*/
export const TXTcccJSError = {
/**
* 未知错误
* @default 0xFFFF
* @memberof module:ErrorCode
*/
UNKNOWN: -199,
/**
* 无效参数
*
* @default 0x1000
* @memberof module:ErrorCode
*/
INVALID_PARAMETER: -198,
/**
* 非法操作
*
* @default 0x1001
* @memberof module:ErrorCode
*/
INVALID_OPERATION: -197,
};
const getErrorName = function (code) {
for (let key in TXTcccJSError) {
if (TXTcccJSError[key] === code) {
return key;
}
}
return 'UNKNOWN';
};
/**
* TcccError 错误对象<br>
* @extends Error
* @namespace code
*/
class TcccError extends Error {
constructor({ code = TXTcccJSError.UNKNOWN, message, extraInfo }) {
if (extraInfo) {
const tempError = {
code: code,
errMsg: message,
errCode: code,
errMsg: message,
extraInfo: Object.assign(Object.assign({}, extraInfo), { errCodeUrl: errorCodeUrl }),
};
super(JSON.stringify(tempError));
}
else {
super(message +
` <${getErrorName(code)} 0x${code.toString(16)}>.`);
}
this.code = code;
this.message = message;
this.errCode = code;
this.errMsg = message;
this.extraInfo = Object.assign(Object.assign({}, extraInfo), { errCodeUrl: errorCodeUrl });
}
/**
* 获取错误码<br>
* 详细错误码列表参见 {@link module:ErrorCode ErrorCode}
* @memberof TrtcError
*/
getCode() {
return this.code;
}
}
export default TcccError;
export function generateError_(error, code = TXTcccJSError.UNKNOWN, extraInfo) {
return new TcccError({
code: error.code || code,
message: `${NAME.LOG_PREFIX}${error.message}`,
extraInfo,
});
}
;