一、业务说明
微信最近推出了手机微信呼叫设备的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',
});
});
}