菊风已发布实时音视频2.0升级版(2.0版本说明),当前您正在访问1.0旧版本,点击此处可进入2.0升级版

# 功能介绍

借助微信小程序音视频通话(for 硬件) (opens new window)能力,硬件开发者设备端集成菊风 IoT SDK,小程序端接入微信 VoIP 通话插件,可以实现当设备呼叫手机端微信用户时,手机端微信用户不需要打开微信,即可收到音视频通话弹窗提醒,通过提醒进入小程序进行通话,解决通话遗漏问题。适用于智能门锁、智能手表、校园话机、门禁机、智慧中控屏、智能电视、智能摄像头、智能音箱、智慧养老等多种设备和场景。下图为手机端微信的示意图,授权弹窗、通话提醒、通话界面为微信提供的统一界面。

功能介绍

# 业务流程

业务流程

# 功能开通

# 申请小程序

  1. 开发者向微信官方 (opens new window)申请开通非个人主体的微信小程序,并做好微信官方认证,该小程序用于和设备通话,登录微信公众平台 (opens new window)获取小程序的 AppID

image.png

# 申请开通设备管理

开发者参考微信官方文档 (opens new window)的要求和步骤,添加 [工具-设备管理]为小程序服务类目,开通硬件设备能力,添加用于音视频通话的设备类型,获取微信平台分配的 model_id

image.png

# 集成开发

# 兼容性说明

  1. 安卓设备使用 IoT 安卓 SDK,安卓版本≥ 6.0,且 Android SDK 支持如下 ABI:

    • armeabi-v7a

    • arm64-v8a

  2. 如果实现双向音视频通话,确保微信版本高于 8.0.54 版本

# 开发准备

  1. 准备应用账号和导入 License

    注册 (opens new window)登录 (opens new window) 菊风开发者账号,在控制台创建 1.0 应用以获取 appKey,并导入 License

TIP

如果已有 RTC1.0 应用的 appKey 和 AES_KEY 密钥,也可以直接使用,License 导号逻辑保持不变

  1. 在控制台【应用管理】-【应用详情】页面开通微信 VoIP 通话服务,开发者获取小程序授权链接,由小程序的管理员扫码授权小程序权限集硬件服务 ID:118 给菊风

image.png

image.png

  1. 开发者自行实现用户的通讯录功能,维护设备 sn(即设备唯一 ID:Device ID)和微信小程序 appid、微信小程序用户 openid 的关系

  2. 开发者自行实现呼叫信令,小程序呼叫设备需要信令

# 设备呼叫小程序

image.png

开发者在设备端集成 IoT 安卓 SDK,SDK 调用 join 接口加入频道,同时通过客户自建信令向后台发起呼叫,由客户后台服务调用 POST call 接口请求呼叫,呼出后小程序端会收到设备端呼叫并实现强提醒振铃

# 设备获取通话状态

设备端可通过调用 JCMediaChannelParticipant.getCustomState 接口获取通话状态,各状态值含义如下:

  • 接通:0x1000
  • 挂断:0x2000
  • 拒接:0x4000
  • 异常:0x8000

# 小程序拒接

前提:

  1. 小程序端在小程序管理后台完成「小程序音视频能力」申请并通过后,开发者参考菊风提供的微信小程序 VoIP 插件接入文档进行集成开发,直接使用 VoIP 插件,无需额外申请

  2. 小程序收到设备的呼叫后,小程序用户需要对设备进行授权,授权后才会弹出来电的通知进而实现通话,因此开发者还需要参考微信官方文档 (opens new window)实现授权逻辑

小程序端调用 VoIP 插件接口实现来电拒接,拒接通知由菊风服务端通知给设备端 SDK,设备收到拒接通知后主动调用 leave 接口离开频道

# 小程序接听

小程序端调用 VoIP 插件接口实现来电接听,接听后菊风后台实现双端媒体流打通,实现双向音视频通话

# 小程序挂断

小程序端调用 VoIP 插件接口实现通话挂断,挂断通知由菊风服务端通知给设备端 SDK,SDK 收到通知后主动调用 leave 接口离开频道,结束通话

# 设备挂断

设备端主动调用 leave 接口离开频道,挂断会通知到小程序端并结束通话

# 小程序呼叫设备

image.png

开发者在设备端集成菊风 SDK,小程序呼叫设备,由小程序端通过客户自建信令通道通知客户后台服务,后台服务通知设备,此时小程序端调用 VoIP 插件接口 (opens new window)发起呼叫,准备接通媒体

# 设备拒接

设备通知客户后台拒接来电,通过客户后台调用 POST reject 接口拒绝接听,此时小程序端会收到拒接通知

# 设备接听

设备端 SDK 调用 join 接口加入频道,此时设备也将接听的信令告知客户后台服务,由后台调用 POST accept 接口实现来电接听,小程序端收到接听通知并双端媒体流打通,实现双向音视频通话

# 画面角度旋转与分辨率

  1. 微信小程序端发出的视频流方向与物理方向并不一致,默认是逆时针旋转 90 度的,因此设备端看小程序端的画面如果需要调整为正向,需要保证微信版本高于 8.0.54

    • 在设备呼叫小程序时,restful APIsubscribeVideoRotation 参数传 1,query 中的 encodeVideoRotation 参数传 1;
    • 小程序呼叫设备时,小程序端的callDevice (opens new window)接口 payload 中subscribeVideoRotation 参数传 1 。
  2. 小程序看设备端的画面调整,可参考微信官方文档配置:微信官方文档 (opens new window)

image.png

当采用上述方案时,注意事项如下:

  1. setUIConfig 需要在通话发起前/接通前设置

  2. 小程序看设备端 需要将设备设置旋转 270 度 根据小程序是主叫还是被叫 调用 setUIconfig 来旋转 listenerUI 还是 callerUI,

当小程序作为主叫时 小程序为 caller 设备端为 listener 则需要旋转 listener 的 UI

// 在callDevice发起前调用
wmpfVoip.setUIConfig({
    listenerUI:{
        cameraRotation: 270,
    },
   callerUI:{
        cameraRotation: 270,
    },
})

当小程序作为被叫时 设备端为 caller 小程序为 listener 接听者 则需要旋转 caller 的 UI

// 此时应写在app.js 在小程序拉起时加载
wmpfVoip.setUIConfig({
    listenerUI:{
        cameraRotation: 0,
    },
   callerUI:{
        cameraRotation: 270,
    },
})
  1. 小程序端发出的 VoIP 的视频流默认为 H264 编码流,原始分辨率最大为 640x480

# 验收

由于微信小程序工具类类目的开通没有门槛,出于安全要求,如果最终业务要上线,需要寄送一台完成集成的设备给微信官方进行认证备案(设备寄送后不返还),具体参考硬件 VoIP 审核验证要求 (opens new window)

# 商务计费

当前菊风支持 License 计费,具体费用联系商务咨询。

最后更新时间: 7/30/2026, 11:48:48 AM