评论

微信小程序双人音视频对话(避坑版)

通过双人音视频通话功能(1V1 VOIP),用户可以直接在小程序内进行一对一视频通话或音频通话。该方式仅需调用小程序 API 实现,不需要服务端介入。

简介:通过双人音视频通话功能(1v1 VoIP),用户可以直接在小程序内进行一对一视频通话或音频通话,提升小程序服务质量,且功能所需的开发成本极低。

从基础库 2.20.1 开始支持。

申请开通

暂只针对国内主体如下类目的小程序开放,需要先通过类目审核,再在小程序管理后台,「开发」-「开发管理」-「接口设置」中自助开通该接口权限。

我这里选择的类目是:工具-视频客服

前端接口(蓝色常用,根据需要其他自行开发)

调用流程

  1. 通过 wx.setEnable1v1Chat 接口将用户的接听状态enable设置为true,该设置仅在当次小程序生命周期有效,小程序每次冷启动后均需要重新设置。
  2. 通过 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',
      duration2000
    })
    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 不支持在微信开发者工具使用,请使用真机预览或真机调试
  • 只有通话双方都打开小程序才能接通
  • 通话双方都要授权相机、麦克风权限,否者唤起通话失败
  • 开发前准备工作不能缺,缺一步都不能实现音视频通话功能

最后

《玄码祝言》

稽首众妙门,敬呈诸码灵君:

乾坤有序,代码无垠。愿君指下生风时:

一炁化三清——编译清、测试清、上线清;

五行生克,需求无碍,产品如九宫流转自然成。

最后一次编辑于  02-11  
点赞 0
收藏
评论
登录 后发表内容