# 设备组

针对某些需要对设备进行批量操作的场景,可以通过设备组完成。

# 1. 设备组的限制

  • 一个设备组最多添加 50 个设备,一个设备只能属于一个设备组。
  • 同一个设备组内的设备必须属于同一设备类型(model_type),例如「校园电话」,但不一定是相同设备型号(model_id)。
  • 设备组必须通过后台 API 创建,创建后不允许修改设备组的名称。用户授权和接听通话时看到的都是设备组的名称,而不能针对用户自定义。

# 2. 管理设备组

开发者可以通过下列后台接口完成对设备组的增删改查操作。

开发者需要维护创建的所有设备组的 group_id,已便后续查询和授权时使用。微信只做校验,不维护小程序下创建的所有 group_id 列表。

注意:

除了设备组创建时添加设备外,一般添加或删除设备只应发生在添购设备、设备损坏更换、设备裁撤等场景。请开发者保持设备组内设备的相对稳定,避免过于频繁的修改设备组的组成。

微信会对设备组操作进行监测,并在必要时要求小程序管理员进行手动确认。这种情况下,设备组操作会在管理员确认后生效。

# 3. 适用场景

目前可用于设备批量授权的场景。

# 4. 问题排查指引

# 4.1 为什么设备之前添加过设备组了,但是设备组里查不到?

  • 可能由其他逻辑调用了 removeIotGroupDevice 从设备组中将设备删除;
  • 可能由其他地方使用 addIotGroupDevice (force_add=true) 强制将设备转移到了其他设备组,也会导致设备从之前的组里移除。

# 4.2 用户授权设备组后,仍提示未授权设备(errCode = 9)如何排查?

使用设备组的设备,如果提示未授权,可能有以下几种可能

  • 用户未授权设备组,或曾经授权后用户清空或取消授权
    • 可以使用授权状态查询 接口,判断用户和设备/设备组直接是否存在授权关系
  • 用户授权了设备组,但是设备组内无此设备。

# 4.3 A、B 两名用户都授权了设备组 X,但是 A 能打通设备组内的设备 X1,B 却不行?

一般是由于用户 A 和设备之间其实已存在直接授权(未通过设备组)。假设设备 X1 存在于设备组 X 中。

  • 用户 A 同时授权设备组 X 和直接授权设备 X1。此时即使设备 X1 被移除出设备组 X,用户 A 仍能拨打给设备。
  • 用户 B 仅授权设备组 X。此时设备 X1 被移除设备组 X 后,用户 B 无法打给设备。