# VoIP 通话插件

本插件主要用于提供「小程序音视频通话(for 硬件)」的部分基础能力和统一的通话界面。完整的接入流程和开发指南请参考相关文档

插件接入可参考:小程序示例代码

# 1. 小程序引入插件

关于小程序插件详细说明请参考小程序使用插件文档

在「小程序管理后台」添加插件后,使用者还需要要在小程序的 app.json 中声明本插件。可以在主包引入,也可以在分包引入。

// 主包引入
{
  "plugins": {
    "wmpf-voip": {
      "version": "latest", // latest 表示自动使用最新版本。也可使用具体版本,如 2.3.8
      "provider": "wxf830863afde621eb"
    }
  }
}
// 分包引入
{
  "subpackages": [
    {
      "root": "xxxx",
      "pages": [],
      "plugins": {
        "wmpf-voip": {
          "version": "latest", // latest 表示自动使用最新版本。也可使用具体版本,如 2.3.8
          "provider": "wxf830863afde621eb"
        }
      }
    }
  ]
}

完成声明后,可以在小程序中来确认是否引入成功

const wmpfVoip = requirePlugin('wmpf-voip').default
console.log(wmpfVoip) // 有结果即表示引入插件成功

# 2. 插件接口

从功能上,插件提供的接口可以分为以下几类

# 2.1 发起通话

发起通话的过程中,插件主要负责通话房间创建、发送接听提醒和通话页面的展示。可以在小程序页面或插件页面调用initByCaller 发起通话。

# 2.2 结束通话

通常情况下,通话结束需要用户点击操作。某些场景下,小程序也可以调用 forceHangUpVoip 主动结束当前通话。

非用户点击结束通话可能有以下场景:

  • 用户操作硬件设备的某些按钮结束通话。例如,设备有单独的话机听筒时,用户挂断听筒。
  • 用户通话时长超过限制。建议使用 initByCallertimeLimit 参数。插件低版本也可以根据 calling 事件的 keepTime 字段计算通话时长。

# 2.3 通话事件

开发者可以通过 onVoipEvent 绑定通话事件的监听,以便更好的分析通话过程。

# 2.4 自定义设置

插件提供下列接口对通话过程和界面进行设置

# 2.5 授权查询

在微信客户端内,可以使用wx.getDeviceVoIPList查询当前登录的用户同意/拒绝授权了哪些设备。

在硬件端,可以通过插件getIotBindContactList接口查询用户是否授权某台设备。

推荐开发者在微信用户授权设备时,即 wx.requestDeviceVoIP 回调 success 后,在后台存储 SN 与 openId。在设备端联系人页面中,配合 getIotBindContactList 接口进行授权验证。

# 2.6 页面参数

小程序可以通过插件getPluginEnterOptions获取从插件页面进入小程序时的启动参数。

如果小程序在前台时进入插件页面,则需要使用getPluginOnloadOptions获取插件通话页面 onLoad 时页面路径中的参数。

# 3. 更新日志

请参考《小程序音视频通话插件更新日志》