首页 / 文档中心 / 宠物喂食器(ODM 案例) / 设备P2P对讲播放

设备P2P对讲播放

宠物喂食器(ODM 案例) · APP服务端接口

设备模块鉴权接口文档 - P2P 接口

概览

  • 基础路径: /api
  • 文档范围: 设备模块中的 P2P 代理接口
  • 鉴权方式: 请求头 X-Token
  • Content-Type: application/json

文档拆分

  • 本文档仅保留 P2P 代理接口
  • 设备基础接口见 device-auth.md
  • 直播地址与录像地址接口见 device-auth-address.md

鉴权头

字段 类型 必填 说明
X-Token string 是 用户登录后获得的 JWT Token

响应说明

  • 本文档中的接口由服务端直接代理到设备本地接口。
  • 这些接口不走统一 code/msg/data 包装。
  • 服务端会直接透传设备原始响应 body 和 HTTP 状态码。
  • 若服务端在参数校验阶段失败,则返回统一错误结构。

服务端统一错误格式

{
  "code": 400,
  "msg": "参数错误",
  "data": null
}

1. P2P 建立连接

  • 路径: /api/device/p2p/connect
  • 方法: POST
  • 是否鉴权: 是

Query 参数

字段 类型 必填 说明
deviceId string 是 设备唯一标识
onlyPlay string 否 是否只播放,默认 0
ringing string 否 设备响铃控制参数

Body 参数

当前服务端不校验 body 字段结构,会将原始请求体原样透传给设备。可传空 body 或设备协议要求的 JSON 数据。

请求示例

POST /api/device/p2p/connect?deviceId=dev_001&onlyPlay=0
X-Token: <token>
Content-Type: application/json


{}

返回参数说明

  • 服务端直接透传设备端 /xsw/api/p2p/connect 的响应。
  • 具体返回字段由设备协议决定,通常会包含会话信息、连接状态等字段。

服务端失败响应示例

{
  "code": 400,
  "msg": "deviceId 不能为空",
  "data": null
}

2. P2P 发送 SDP

  • 路径: /api/device/p2p/sdp
  • 方法: POST
  • 是否鉴权: 是

Query 参数

字段 类型 必填 说明
deviceId string 是 设备唯一标识
sessionId string 是 P2P 会话 ID
channelId string 否 通道 ID,默认 1
connectType string 否 连接类型,默认 1

Body 参数

当前服务端不校验 body 字段结构,会将原始请求体原样透传给设备。通常为设备端要求的 SDP JSON 数据。

请求示例

POST /api/device/p2p/sdp?deviceId=dev_001&sessionId=s123&channelId=1&connectType=1
X-Token: <token>
Content-Type: application/json


{
  "sdp": "offer-sdp-content"
}

返回参数说明

  • 服务端直接透传设备端 /xsw/api/p2p/sdp 的响应。
  • 具体返回字段由设备协议决定。

服务端失败响应示例

{
  "code": 400,
  "msg": "deviceId 和 sessionId 不能为空",
  "data": null
}

3. P2P 发送 Candidate

  • 路径: /api/device/p2p/candidate
  • 方法: POST
  • 是否鉴权: 是

Query 参数

字段 类型 必填 说明
deviceId string 是 设备唯一标识
sessionId string 是 P2P 会话 ID

Body 参数

当前服务端不校验 body 字段结构,会将原始请求体原样透传给设备。通常为 candidate 相关 JSON 数据。

请求示例

POST /api/device/p2p/candidate?deviceId=dev_001&sessionId=s123
X-Token: <token>
Content-Type: application/json


{
  "candidate": "candidate:..."
}

返回参数说明

  • 服务端直接透传设备端 /xsw/api/p2p/candidate 的响应。
  • 具体返回字段由设备协议决定。

服务端失败响应示例

{
  "code": 400,
  "msg": "deviceId 和 sessionId 不能为空",
  "data": null
}

4. P2P 保活

  • 路径: /api/device/p2p/keepalive
  • 方法: POST
  • 是否鉴权: 是

Query 参数

字段 类型 必填 说明
deviceId string 是 设备唯一标识
sessionId string 是 P2P 会话 ID

Body 参数

当前服务端不校验 body 字段结构,会将原始请求体原样透传给设备。可传空 body。

请求示例

POST /api/device/p2p/keepalive?deviceId=dev_001&sessionId=s123
X-Token: <token>
Content-Type: application/json


{}

返回参数说明

  • 服务端直接透传设备端 /xsw/api/p2p/keepalive 的响应。
  • 具体返回字段由设备协议决定。

服务端失败响应示例

{
  "code": 400,
  "msg": "deviceId 和 sessionId 不能为空",
  "data": null
}

5. P2P 断开连接

  • 路径: /api/device/p2p/disconnect
  • 方法: POST
  • 是否鉴权: 是

Query 参数

字段 类型 必填 说明
deviceId string 是 设备唯一标识
sessionId string 是 P2P 会话 ID

Body 参数

当前服务端不校验 body 字段结构,会将原始请求体原样透传给设备。可传空 body。

请求示例

POST /api/device/p2p/disconnect?deviceId=dev_001&sessionId=s123
X-Token: <token>
Content-Type: application/json


{}

返回参数说明

  • 服务端直接透传设备端 /xsw/api/p2p/disconnect 的响应。
  • 具体返回字段由设备协议决定。

服务端失败响应示例

{
  "code": 400,
  "msg": "deviceId 和 sessionId 不能为空",
  "data": null
}

6. P2P 播放提示音

  • 路径: /api/device/p2p/play
  • 方法: POST
  • 是否鉴权: 是

Query 参数

字段 类型 必填 说明
deviceId string 是 设备唯一标识
name string 否 播放文件名,默认 connected.wav
times string 否 播放次数,默认 1

Body 参数

当前服务端不校验 body 字段结构,会将原始请求体原样透传给设备。可传空 body。

请求示例

POST /api/device/p2p/play?deviceId=dev_001&name=connected.wav&times=1
X-Token: <token>
Content-Type: application/json


{}

返回参数说明

  • 服务端直接透传设备端 /xsw/api/p2p/play 的响应。
  • 具体返回字段由设备协议决定。

服务端失败响应示例

{
  "code": 400,
  "msg": "deviceId 不能为空",
  "data": null
}

附录

说明

  • P2P 相关接口当前仍通过 query 传递 deviceId、sessionId 等参数,并未改为 body 读取。
  • 请求 body 由服务端原样透传到设备本地接口。
  • 服务端内部转发目标分别为 /xsw/api/p2p/connect、/xsw/api/p2p/sdp、/xsw/api/p2p/candidate、/xsw/api/p2p/keepalive、/xsw/api/p2p/disconnect、/xsw/api/p2p/play。
  • 设备返回内容由服务端原样透传,字段结构取决于设备协议。
这份文档没解决你的问题?联系我们,技术工程师直接对接。

询价咨询

填写这几项,我们 1 个工作日内回传报价与方案

点「生成询价邮件」会打开你的邮件客户端,正文已自动填好;电脑没配邮件客户端,就点「复制内容」粘到网页邮箱发送,收件人 sunshiyang@xstrive.com。