# 小程序音视频通话+摄像头(for 硬件)

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

# 1. 产品介绍

# 1.1 小程序 Voip

借助微信小程序音视频通话插件,硬件开发者可以通过小程序硬件框架(WMPF)、Linux SDK 接入、云云接入三种方式实现智能设备和手机微信端的一对一音视频通话,满足实时触达场景,提升通话体验。

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

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

# 1.2 小程序摄像头

借助微信小程序音视频通话插件里的摄像头能力,开发者能够快速的将摄像头类产品接入微信小程序生态(云对云的方式),用户查看摄像头流媒体也更加方便,培养用户小程序观看摄像头的习惯。

针对摄像头涉及的功能,分成组件必选、组件可选、自定义等部分。

类型 模块 功能点 描述
组件必选 播放器 播放 播放、暂停
组件必选 播放器 画面缩放 放大、缩小
组件必选 播放器 音量 音量、静音
组件必选 播放器 屏幕 小屏、全屏
组件必选 对讲 设备呼叫手机 VoIP功能
组件可选 播放器 清晰度 开发者传入
组件可选 对讲 手机呼叫设备 呼叫、挂断
自定义(举例) 轮盘 方向控制 一般用来控制摄像头转动
自定义(举例) 增值服务 云存储
自定义(举例) 增值服务 AI服务

小程序界面

全屏界面

# 2. 设备要求

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

目前支持 「设备直连」和「云对云」 两种接入模式:

  • 设备直连:支持安卓和 Linux 设备。由设备端直接向微信后台发送并接受音视频流和信令,与用户手机微信内的小程序进行通话。
  • 云对云:支持无法满足设备直连硬件需要的低功耗 Linux、RTOS 等系统设备。设备端仅进行设备验证,由开发者后台(服务端)向微信后台转发音视频流和信令,与用户手机微信内的小程序进行通话。

# 2.1 设备直连(安卓)

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

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

# 2.2 设备直连(Linux)

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

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

# 2.3 云对云

目前支持部分低功耗 Linux、RTOS 等系统的设备。设备端进行设备验证,经由开发者后台中转,与用户手机微信内的小程序进行通话。

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

  • HTTPS 通信能力
  • 存储能力
  • 音(视)频能力

# 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)」,手机端微信客户端内运行小程序(手机用户发起或接听通话)。
  • 与 RTOS 设备通话时,设备端的 SDK 用于发起呼叫,服务端的 SDK 用于通过过程中的视频流转,手机端微信客户端内运行小程序(手机用户发起或接听通话)。

# 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. 服务端开发

RTOS 设备使用云对云方案时,需要进行服务端开发。设备直连(Linux、Android) 无需服务端开发。

# 7. 常见问题

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