# 小程序音视频通话(for 硬件)

接入流程和常见问题也可参考微信小程序音视频通话(for 硬件) 使用手册

# 1. 产品介绍

借助微信小程序音视频通话(for 硬件)能力,硬件开发者可以通过小程序硬件框架(WMPF),实现智能设备和手机微信端的一对一音视频通话,满足实时触达场景,提升通话体验。

下图为手机端的示意图,授权弹窗、通话提醒、通话界面为微信提供的统一界面,硬件小程序接入微信 VOIP 通话插件后,可实现上述功能。

适用于校园话机、门禁机、智能门锁、智慧中控屏、智能电视、智能摄像头、智能音箱、智慧养老等多种设备和场景,支持硬件设备和手机端双向通话,实现通话强提醒。

# 2. 设备要求

目前支持安卓系统和 Linux 系统的设备。每台设备只能绑定一个小程序,只能和一个小程序进行通话。

# 2.1 设备直连(安卓)

安卓系统设备端运行小程序硬件框架(WMPF),WMPF 内运行开发者小程序,直接与用户手机微信内的小程序进行通话;

设备应满足下列基本要求:

# 2.2 设备直连(Linux)

Linux 系统设备端调用 小程序音视频通话 SDK (Linux),直接与用户手机微信内的小程序进行通话。

设备应满足下列基本要求:

# 3. 开发前准备

以下几个环节可以同时进行,涉及到多个平台侧的审核流程,请提前预留时间。

# 3.1 【仅安卓直连设备】接入微信硬件平台

注册微信终端合作平台和微信开放平台账号、登记设备信息等环节均涉及平台审核,请提早准备。

参考文档指引,完成「微信终端合作平台 (wecooper)」企业主体账号注册、移动应用绑定和硬件注册的流程。

本步骤主要是将设备接入微信的设备体系,完成设备与 APP,以及 APP 与小程序之间的关联。

  • 为避免混淆,移动应用的 appId 一般被称为 hostAppId;
  • 每一台硬件设备都需要使用 hostAppId 身份调用 addDevice 接口完成注册,才可以使用 安卓 WMPF。

# 3.2 设备接入和申请设备能力

此环节涉及平台审核,请提早准备。

小程序想要使用音视频通话能力能力,需要在小程序管理平台申请开通「小程序音视频能力」设备能力。详见「设备接入」文档和微信小程序音视频通话(for 硬件) 使用手册中的流程指引,并关注《硬件 VoIP 审核验证要求》

完成接入后,开发者可获得由平台分配的 model_id。model_id 对应一种设备类型,是调用小程序设备能力相关接口的重要凭证。

获取 model_id 后,开发者可以调用获取设备票据接口获取 snTicket,用于后续的设备验证流程。

# 3.3 接入 VOIP 插件

小程序音视频通话的主要功能通过「VOIP 通话」这一小程序插件(appId: wxf830863afde621eb)提供。

在小程序管理后台完成「小程序音视频能力」申请并通过后,小程序可以直接使用 VOIP 通话插件,无需额外申请。

如果开发者想要提前进行调试,可以手动进行申请:登录「小程序管理后台」——「设置」——「第三方设置」——「插件管理」,点击「添加插件」,搜索并添加「VOIP 通话」插件。

# 4. 设备端开发

# 5. 小程序开发

开发者需要开发(或使用现有)小程序,接入「VOIP 通话」插件,实现拨打和接听音视频通话的能力。

  • 与安卓设备通话时,开发者需要使用同一个小程序,既运行在安卓设备端(设备发起或接听通话),也运行在手机端微信客户端(手机用户发起或接听通话)。
  • 与 Linux 设备通话时,设备端运行「小程序音视频通话 SDK (Linux)」,手机端微信客户端内运行小程序(手机用户发起或接听通话)。

# 5.1 核心流程

至少使用微信客户端 8.0.30 及以上版本,建议使用当前最新版本。

小程序开发主要有以下环节,请参考各环节的文档:

  1. 接入「VOIP 通话」插件:参考插件文档在小程序中引入插件;
  2. 设备呼叫手机微信:
  1. 手机微信呼叫设备:适用于用户在手机微信内发起通话,已注册并且用户授权过的设备接听,请参考《手机微信呼叫设备(安卓)》《手机微信呼叫设备(Linux)》
  2. 性能与体验优化:请参考《性能与体验优化》

通话相关异常,请参考《通话异常排查指南》

# 5.2 调试说明

VoIP 通话流程暂不支持在微信开发者工具进行调试,请使用真机进行。

# 5.2.1 设备端使用「开发版/体验版小程序」

安卓设备端可指定使用「开发版/体验版小程序」进行调试。请参考《开发设备端应用(安卓)》「3.2 运行开发版/体验版小程序」。

# 5.2.2 使用开发版/体验版小程序接听通话

接听方收到消息推送点击接听后,默认打开的是正式版的小程序。

在开发阶段,建议在调用 wmpfVoip.initByCaller 时额外传入 miniprogramState 参数指定打开开发版/体验版小程序。

const result = await wmpfVoip.initByCaller({
  // 其他参数省略
  miniprogramState: 'developer', // formal/正式版(默认);trial/体验版;developer/开发版
})

使用小程序音视频通话 SDK (Linux)时,可以在初始化时设置 wxa_flavor 指定使用开发版/体验版接听通话。

注意:

  • 接听方为手机微信时,应提前扫微信开发者工具生成的开发版二维码下载开发版。
  • 接听方为运行 WMPF 的设备时,应提前按照 5.2.1 的步骤下载开发版。
  • 正式上线时应注意切换为正式版,可以使用 wx.getAccountInfoSync 接口判断当前的小程序版本。

# 6. 常见问题

请参考 《常见问题(FAQ)》