# VoIP 插件错误码

## 1. 后台返回错误码

| errCode | 描述                                                                   |
| ------- | ------------------------------------------------------------------------ |
| 1       | roomId 错误                                                            |
| 2       | 设备 deviceId 错误                                                     |
| 3       | voip_id 错误                                                           |
| 4       | voipToken 错误 (刷脸模式)                                              |
| 5       | 生成 voip 房间错误                                                     |
| 7       | openId 错误                                                            |
| 8       | openId 未授权（刷脸模式）                                              |
| 9       | openId 未授权设备(硬件模式) 或不是 userId 联系人（刷脸模式）           |
| 12      | 小程序音视频能力审核未完成，正式版中暂时无法使用                       |
| 13      | 硬件设备拨打微信，voipToken 错误                                       |
| 14      | 微信拨打硬件设备，voipToken 错误                                       |
| 15      | 欠费                                                                   |
| 17      | voipToken 对应 modelId 错误                                            |
| 19      | openId 与小程序 appId 不匹配。（同一个用户在不同小程序的 openId 不同） |
| 20      | openId 无效                                                            |
| 22      | 传入的 chargeType 非法                                                 |
| 23      | 当前设备 license 已过期                                                |
| 24      | 当前设备未激活 license                                                 |

## 2. 插件内部错误码

> 以插件最新版本支持为准

| errCode | 描述                                                     |
| ------- | -------------------------------------------------------- |
| 1000    | 使用 WMPF 注册设备时，deviceToken 获取失败               |
| 1001    | voipToken 为空或类型错误（仅在要求传入的情况）           |
| 1002    | CGI 请求失败                                             |
| 1003    | CGI 返回值解析失败                                       |
| 1004    | 接口调用参数错误                                         |
| 1005    | 插件当前正在处理其他通话                                 |
| 1006    | 当前接口必须在 WMPF 使用                                 |
| 1007    | 当前接口必须在微信客户端使用                             |
| 1008    | 通话被中断，具体原因需查看 errMsg                        |
| 1011    | 当前平台不支持该功能                                     |
| 2000    | 加入房间失败，具体原因需查看 errMsg                      |
| 2001    | 加入房间失败：当前有其他小程序 VoIP 通话正在进行         |
| 2002    | 加入房间失败：SDK 重置失败                               |
| 2003    | 加入房间失败：SDK 初始化失败                             |
| 2004    | 加入房间失败：SDK 加入房间失败                           |
| 2005    | 加入房间失败：join 回调失败                              |
| 2006    | 加入房间失败：talk 回调失败                              |
| 2007    | 加入房间失败：调用音视频设备失败（如无法启用麦克风等）   |
| 2008    | 加入房间失败：获取 sessionKey 失败                       |
| 2009    | 加入房间失败：已取消或小程序退后台                       |
| 2010    | 加入房间失败：join CGI 请求失败                          |
| 2100    | 加入房间失败：当前有其他微信好友 VoIP 或系统电话正在进行 |
| 2102    | 加入房间失败：无访问音视频设备的权限（如录音权限等）     |
| 2103    | 加入房间失败：无调用 JSAPI 的权限                        |
| 2104    | 加入房间失败：其他 CGI 异常，具体原因需查看 errMsg       |

## 3. Error 类

> 需插件 2.4.0 版本开始支持

### 3.1 VoipError

插件抛出异常的基类，继承自 `Error`，并增加下列属性：

| 属性名  | 类型    | 简介                                                 |
| ------- | ------- | ---------------------------------------------------- |
| errMsg  | string  | 错误信息                                             |
| errCode | number  | 错误码                                               |
| errno   | number  | 基础库接口返回的 errno                               |
| cause   | unknown | 如果错误本身是其他错误引起的，这里包含原始的错误对象 |

### 3.2 VoipCgiError

后台请求失败错误，继承自 `VoipError`，仅作类型区分，无新增属性。

### 3.3 VoipJoinError

加入房间失败相关错误，继承自 `VoipError`，并增加下列属性：

> 这两个属性开发者一般不需关注，仅微信侧排查问题需要

| 属性名    | 类型   | 简介                                 |
| --------- | ------ | ------------------------------------ |
| extErrMsg | string | `wx.joinVoipChat` 报错里额外的信息   |
| errType   | number | `wx.joinVoipChat` 报错返回的 errType |

### 3.4 VoipPluginError

插件内其他类型的错误，继承自 `VoipError`，仅作类型区分，无新增属性。
