简介:通过双人音视频通话功能(1v1 VoIP),用户可以直接在小程序内进行一对一视频通话或音频通话,提升小程序服务质量,且功能所需的开发成本极低。
从基础库 2.20.1 开始支持。
申请开通
暂只针对国内主体如下类目的小程序开放,需要先通过类目审核,再在小程序管理后台,「开发」-「开发管理」-「接口设置」中自助开通该接口权限。
我这里选择的类目是:工具-视频客服
前端接口(蓝色常用,根据需要其他自行开发)
- 开启双人通话:wx.setEnable1v1Chat
- 加入(创建)双人通话:wx.join1v1Chat
- 退出(销毁)双人通话:wx.exitVoIPChat
- 更新房间麦克风/耳机静音设置:wx.updateVoIPChatMuteConfig
- 监听房间成员变化:wx.onVoIPChatMembersChanged
- 监听房间成员通话状态变化:wx.onVoIPChatSpeakersChanged
- 监听通话中断:wx.onVoIPChatInterrupted
- 监听实时语音通话成员视频状态变化:wx.onVoIPVideoMembersChanged
调用流程
- 通过 wx.setEnable1v1Chat 接口将用户的接听状态
enable
设置为true
,该设置仅在当次小程序生命周期有效,小程序每次冷启动后均需要重新设置。 - 通过 wx.join1v1Chat 接口传入呼叫方信息
caller
与接听方信息listener
发起呼叫,接听方与呼叫方均需在小程序内。
计费
微信为单个小程序提供每个自然月1000分钟的免费通话时长,1分钟语音通话时长扣除1分钟免费通话时长,1分钟视频通话时长扣除15分钟免费时长。超出部分需另行付费。 免费时长领取与套餐包购买需前往微信服务市场进行操作。
上述指引:https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/1v1voip.html
使用条件需要去微信服务市场(https://fuwu.weixin.qq.com/service/detail/00048c0090477065ad6b475ee56415)开通,默认免费购买。土豪例外
微信为单个小程序提供每个自然月1000分钟的免费通话时长,1分钟语音通话时长扣除1分钟免费通话时长,1分钟视频通话时长扣除15分钟免费时长。超出部分需另行付费。 免费时长领取与套餐包购买需前往微信服务市场进行操作。
登录小程序后台,完善更新小程序协议,获取用户麦克风和摄像头权限
代码实现
避坑一:在小程序的 app.json 配置文件中声明所需的权限
"permission": {
"scope.userLocation": {
"desc": "你的位置信息将用于小程序位置接口的效果展示"
},
"scope.camera": {
"desc": "用于音视频通话的摄像头权限"
},
"scope.record": {
"desc": "用于音视频通话的录音权限"
}
}
避坑二:发起双人视频前,确认摄像头权限和麦克风权限
wx.authorize({
scope: 'scope.record,scope.camera',
success() {
// 用户已经同意授权,可以进行录音操作
console.log('用户已授权')
},
fail(error) {
// 用户拒绝授权或者授权录音异常
console.log('scope.record.error: ', error)
},
})
避坑三:开启双人通话。设置 enable
为 false
时,无法接听呼叫,在onLaunch()先开启。
onLaunch() {
wx.setEnable1v1Chat({
enable: true,
success(res) {
console.log(res);
},
fail(err) {
console.error("拨通失败", err)
}
})
},
wxml文件
一对一视频问诊
js文件
//1V1开启视频问诊
Video1v1Chat: function () {
wx.showToast({
title: '请允许获取摄像头和麦克风的权限',
icon: 'none',
duration: 2000
})
wx.setEnable1v1Chat({
enable: true,
success(res) {
console.log(res);
wx.join1v1Chat({
caller: {
nickname: '呼出方昵称',
headImage: '呼出方头像',
openid: '呼出方openid',
},
listener: {
nickname: '接听方昵称',
headImage: '接听方昵称',
openid: '接听方openid',
},
success(res) {
},
fail(res) {
}
})
},
fail(err) {
console.error("拨通失败", err)
}
})
},
onLoad(options) {
//获取呼出方和接听方的信息
}
注意事项
- setEnable1v1Chat 不支持在微信开发者工具使用,请使用真机预览或真机调试
- 只有通话双方都打开小程序才能接通
- 通话双方都要授权相机、麦克风权限,否者唤起通话失败
- 开发前准备工作不能缺,缺一步都不能实现音视频通话功能
最后
《玄码祝言》
稽首众妙门,敬呈诸码灵君:
乾坤有序,代码无垠。愿君指下生风时:
一炁化三清——编译清、测试清、上线清;
五行生克,需求无碍,产品如九宫流转自然成。