一、业务说明
微信最近推出了手机微信呼叫设备的VOIP插件 和 Linux SDK内部体验版本,之前公司小程序开发过设备呼叫微信的功能,设备如何呼叫微信可以看之前的博客:微信小程序音视频通话(for硬件)组件的使用-CSDN博客。此次推出的微信呼叫设备功能,实现了小程序与设备之间的双向通话, 手机呼叫设备的说明可以看官方文档:手机微信呼叫设备(Linux 直连) | 微信开放文档
二、具体代码实现
2.1 小程序代码
- 引入VOIP体验版插件
"plugins": {"wmpf-voip": {"version": "dev-921a8b2691ed173478641355f335b52b","provider": "wxf830863afde621eb"}
}
- 手机微信段发起微信通话
callDeviceByVoip: function (deviceId, modelId, sn) {// 引入设备与视频通话const wmpfVoip = requirePlugin('wmpf-voip').default // 异步获取 roomId 的方式wmpfVoip.callDevice({roomType: 'video', // 房间类型。voice: 音频房间;video: 视频房间sn: deviceId,modelId: modelId,nickName: deviceId,chargeType: 'duration', // 计费方式 timeLimit: 5000}).then(response => {const roomId = response.roomId;wx.request({url: "http://192.168.1.190:8090/wx_user/updateRoomId",method: 'POST', //请求方式header: { 'Content-Type': 'application/json',},data: { roomId: roomId,wxUserId: getApp().userBean.wxUserId,callDevice: sn},success: function(res) { }}) // 获取当前页面栈const pages = getCurrentPages();// 判断当前页面是否是插件页面const isPluginPage = pages.some(page => page.route === wmpfVoip.CALL_PAGE_PATH);if (!isPluginPage) {wx.redirectTo({url: wmpfVoip.CALL_PAGE_PATH,});}// 在这里可以使用 roomId 进行后续的操作}).catch(error => {console.error('callDevice failed:', error);wx.showToast({title: '呼叫失败',icon: 'error',});});
}