# Promise<Object> initByCaller(Object req)
本接口为异步接口,返回
Promise
对象。
发起通话并获取通话房间号。调用此接口后,会创建 VoIP 房间,并且向接听方推送接听提醒。
建议先阅读接口介绍。
# 参数
# Object req
属性 | 类型 | 默认值 | 必填 | 说明 | 最低版本 |
---|---|---|---|---|---|
roomType | string | 是 | 通话类型。voice: 音频通话;video: 视频通话 | ||
caller | Object | 是 | 拨打方信息 | ||
caller.id | string | 是 | 拨打方 id,参考 businessType 的说明 | ||
caller.name | string | 否 | 显示的拨打方名字。设备端发起通话时无效 | ||
caller.cameraStatus | number | 0 | 否 | 是否启用摄像头。0: 开启;1: 关闭 | |
listener | Object | 是 | 接听方信息 | ||
listener.id | string | 是 | 接听方 id,参考 businessType 的说明 | ||
listener.name | string | 否 | 显示的接听方名字。 | ||
listener.cameraStatus | number | 0 | 否 | 是否启用摄像头。0: 开启;1: 关闭 | |
businessType | number | 0 | 否 | 业务类型。详见 businessType 的说明 | |
voipToken | string | 否 | 拨打票据,部分情况下必填,参考 businessType 的说明 | ||
miniprogramState | string | formal | 否 | 接听方点击通知时打开的小程序类型。 取值:formal: 正式版; trial: 体验版; developer: 开发版。 2.1.8 起,正式版小程序只能拨打给正式版,设置这一字段无效。 | |
customQuery | string | 否 | 接听方点击通知打开小程序时,会作为 query 拼接到插件页面路径后,格式如 a=1&b=2 。可在接听端小程序内通过 getPluginOnloadOptions 或 getPluginEnterOptions 接口获取到 | ||
timeLimit | number | 否 | 最大通话时长,需为 > 0 的数字 | 2.3.8 |
# 返回值
由于历史原因,本接口调用失败可能会抛出异常(一般是参数错误),也可能会返回 isSuccess: false
(一般是后台错误)。
接口成功返回后,仍需要使用 isSuccess
字段判断调用是否最终成功。
# Object
接口调用成功时,返回如下
属性 | 类型 | 说明 | 最低版本 |
---|---|---|---|
isSuccess | boolean | 是否调用成功,此时为 true | |
roomId | string | 本次通话的房间号 | 2.4.0 |
groupId | string | 与 roomId 相同 | |
chargeType | string | 计费方式。取值:duration: 时长计费;license: license 计费 | 2.3.8 |
调用失败时,接口返回如下:
属性 | 类型 | 说明 | 最低版本 |
---|---|---|---|
isSuccess | boolean | 是否调用成功,此时为 false | |
object | 错误对象,已废弃。{ err_code: string, errMsg: string } | ||
errCode | number | 错误码,取值参考错误码文档 | |
errMsg | string | 错误信息 | |
errObj | VoipError | 错误对象 | 2.4.0 |
# 关于 businessType
不同 businessType 对应的部分参数含义不同,参数获取的具体方式请参考对应业务的文档。
businessType | 业务类型 | caller.id | listener.id | voipToken |
---|---|---|---|---|
1 | 硬件设备呼叫手机微信 | 设备 SN | 微信用户 openId | 使用设备认证 SDK注册的设备传入 deviceToken. 使用 WMPF 注册的设备不能有这个字段(插件 2.3.0 支持) |
2 | 手机微信呼叫硬件设备 | 微信用户 openId | 设备 SN | 从设备获取的 pushToken |
- 发起通话前,需要在提前让 openId 对应的用户在微信客户端的小程序内进行授权,具体流程请参见授权文档;
- 传入 id 为 设备 SN 时,name 会强制使用用户授权时的「deviceName」+「modelId 对应设备型号」,不使用开发者传入的 name。
- 本接口
businessType=2
仅支持安卓 WMPF,呼叫 Linux 设备请使用 callDevice。 - 本接口
businessType=2
不支持 license 计费,手机微信呼叫安卓 WMPF 建议使用 callWMPF。
# 示例代码
const wmpfVoip = requirePlugin('wmpf-voip').default
try {
const { isSuccess } = await wmpfVoip.initByCaller({
caller: {
id: '拨打方 Id',
name: '拨打方名字',
},
listener: {
id: '接听方 Id',
name: '接听方名字',
},
roomType: 'video',
businessType: 1,
voipToken: 'xxxx*****xxxx',
miniprogramState: 'developer', // 开发阶段建议使用开发版
})
if (isSuccess /* && 当前不在插件页面 */) {
wx.redirectTo({
url: wmpfVoip.CALL_PAGE_PATH,
})
} else {
wx.showToast({
title: '呼叫失败',
icon: 'error',
})
}
} catch (e) {
wx.showToast({
title: '呼叫失败',
icon: 'error',
})
}