SuperAPI AI 工具集

seam-access-codes

安全与审计

查看项目

更新于 10-16 02:09

技能介绍

用途

Seam Access Codes(底层 API)用于在开发者已有的代码库中直接集成 Seam 的访问码能力,实现对智能锁访问码的手动、精细控制。它面向需要按时间窗口为特定设备创建、更新和删除访问码的场景,例如为预订的房间、会议室或短租单元自动下发限时门锁密码。

主要能力

  • 在指定设备上创建带 starts_at 和 ends_at 时间窗口的访问码。
  • 更新已有访问码的时间窗口。
  • 删除访问码(例如预订取消时)。
  • 通过 webhook 接收访问码设置成功、设置失败、设备离线等事件。
  • 支持 Node.js、Python、Ruby 三种语言的 SDK 集成。

使用方式

  1. 安装 SDK:npm install seam(Node.js)、pip install seam(Python)、bundle add seam(Ruby)。不要固定到特定版本。
  2. 初始化 Seam 客户端。Next.js 中需使用惰性 getter,避免在模块作用域直接 new Seam() 导致 next build 失败;Express/标准 Node.js 可直接在模块作用域初始化。
  3. 获取设备 ID:访问码针对具体 device_id,每个房间/门必须映射到自己的设备 ID,可从环境变量(如 SEAM_DEVICE_ROOM_A1)或应用数据模型(如 room.seamDeviceId)中获取。若映射缺失,应让操作失败,不得回退到全局设备。
  4. 在预订创建时创建访问码:在 createBooking() 等创建函数中调用 seam.accessCodes.create,传入 device_id、name、starts_at、ends_at,并将返回的 access_code_id 和 code 保存到预订对象上。
  5. 在预订变更时更新访问码:若已保存 access_code_id,调用 seam.accessCodes.update 更新 starts_at 和 ends_at。
  6. 在预订取消时删除访问码:调用 seam.accessCodes.delete。
  7. 添加 webhook 端点:按代码库现有 webhook 模式处理 access_code.set_on_device、access_code.failed_to_set_on_device、device.disconnected 等事件。
  8. 将相关服务函数改为 async,并更新调用方使用 await。

适用场景

  • 短租、酒店、共享办公等需要按预订时间自动下发和回收门锁密码的系统。
  • 需要为不同房间/门独立管理访问码,而非使用统一全局设备的应用。
  • 需要在预订创建、修改、取消时同步管理智能锁访问码的业务流程。

限制与注意事项

  • 必须保存 access_code_id,否则无法更新或删除;若为 null/undefined 表示创建失败,需要重试。
  • 禁止使用全局设备回退,每个房间必须映射到其特定设备。
  • device_id 是单个字符串(每个访问码对应一个设备),不是数组。
  • 默认由 Seam 生成随机访问码,除非需要特定 PIN,否则不要硬编码 code 值。
  • name 为可选但建议填写,用于在 Seam Console 中识别。
  • 部分锁具有最大访问码数量限制,可检查 device.properties.max_active_codes_supported。
  • 需要根据业务决定失败模式:若房间预订必须依赖访问权限,Seam 调用失败时应抛出异常;若访问权限可选,则记录日志并继续。
  • 遇到问题可参考 references/troubleshooting.md,生产环境准备可参考 references/production-checklist.md。