1. 接口描述
接口请求域名: iotexplorer.tencentcloudapi.com 。
平台向设备发起一次同步 RRPC(Reverse RPC)调用——下行下发请求,同步阻塞等待设备回包,超时未回则返回 Timeout。
适用场景:
默认模式:使用平台保留 topic $iotrrpc/down 和 $iotrrpc/up。
自定义模式:业务自带下行 topic;Reply topic 可选 —— 不传时平台仅依赖 clientToken 关联上行 ack。
设备侧实现指引
默认模式
- 订阅
$iotrrpc/down/{ProductId}/{DeviceName}/+; - 收到下行后,从 topic 末段解析
{mid}; - 向
$iotrrpc/up/{ProductId}/{DeviceName}/{mid}发送回包,payload 任意字节(推荐 JSON)。
自定义模式
订阅业务
Topic;解析 payload JSON,保留
clientToken字段;处理业务后,构造 envelope JSON:
{ "method": "rrpc_sync_reply", "clientToken": "<原样回填>", "payload": "<base64 of 业务字节>" }publish 到与平台
ReplyTopic通配符匹配的具体 topic(推荐使用与下行同 topic)。
⚠️
clientToken必填且必须原样回填,否则平台无法关联,调用方将收到Status=Timeout。
⚠️method必须为rrpc_sync_reply,否则会直接 skip。
默认接口请求频率限制:20次/秒。
2. 输入参数
以下请求参数列表仅列出了接口请求参数和部分公共参数,完整公共参数列表见 公共请求参数。
| 参数名称 | 必选 | 类型 | 描述 |
|---|---|---|---|
| Action | 是 | String | 公共参数,本接口取值:CallDeviceRRPCSync。 |
| Version | 是 | String | 公共参数,本接口取值:2019-04-23。 |
| Region | 否 | String | 公共参数,此参数为可选参数。 |
| ProductId | 是 | String | 产品 ID 示例值:N5DBOST040 |
| DeviceName | 是 | String | 设备名 示例值:nandy_dev1 |
| Payload | 否 | String | 业务原始 payload,透传给设备 示例值:{"a":"b"} |
| Encoding | 否 | String | 下行传输层编码标识;base64 时下发到 broker 的 payload 会做一次 base64 编码 示例值:base64 |
| Topic | 否 | String | 自定义下行 topic;为空则用 示例值:N5DBOST040/nandy_dev1/evc/param/a |
| ReplyTopic | 否 | String | 自定义上行 topic 模板(支持通配符);可留空,留空时仅依赖 clientToken 关联 ack 示例值:N5DBOST040/nandy_dev1/evc/param/a |
3. 输出参数
| 参数名称 | 类型 | 描述 |
|---|---|---|
| ClientToken | String | 平台为本次调用分配的关联 token(v2{instanceId}::{reqId} 形式) 示例值:v221.90.233.213aHiQo::1d17f100-cc9e-4458-8199-f22ba6d4ae14 |
| Status | String | 调用状态 示例值:Replied |
| MessageId | Integer | 平台分配的 messageID 示例值:52 |
| PayloadBase64 | String | 设备回包原始字节的 base64 编码(仅 Status=Replied 有值) 示例值:eyJyc3AiOiJvayJ9 |
| ReplyTopic | String | 实际生效的 reply topic 模板(默认模式由平台生成,自定义模式为入参原值) 示例值:$iotrrpc/up/N5DBOST040/nandy_dev1/52 |
| RequestId | String | 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。 |
4. 示例
示例1 自定义topic模式
输入示例
POST / HTTP/1.1
Host: iotexplorer.tencentcloudapi.com
Content-Type: application/json
X-TC-Action: CallDeviceRRPCSync
<公共请求参数>
{
"ProductId": "N5DBOST040",
"DeviceName": "nandy_dev1",
"Payload": "{\"a\":\"b\"}",
"Topic": "N5DBOST040/nandy_dev1/evc/param/a"
}
输出示例
{
"Response": {
"ClientToken": "v221.215.133.103MEjCE::79afc8bc-12bf-429b-a48d-e8596c4e918a",
"MessageId": 54,
"PayloadBase64": "eyJyc3AiOiJvayJ9",
"ReplyTopic": "",
"Status": "Replied",
"RequestId": "79afc8bc-12bf-429b-a48d-e8596c4e918a"
}
}
示例2 默认topic模式
输入示例
POST / HTTP/1.1
Host: iotexplorer.tencentcloudapi.com
Content-Type: application/json
X-TC-Action: CallDeviceRRPCSync
<公共请求参数>
{
"ProductId": "N5DBOST040",
"DeviceName": "nandy_dev1",
"Payload": "{\"a\":\"b\"}"
}
输出示例
{
"Response": {
"ClientToken": "v221.90.233.213aHiQo::1d17f100-cc9e-4458-8199-f22ba6d4ae14",
"MessageId": 52,
"PayloadBase64": "eyJyc3AiOiJvayJ9",
"ReplyTopic": "$iotrrpc/up/N5DBOST040/nandy_dev1/52",
"Status": "Replied",
"RequestId": "1d17f100-cc9e-4458-8199-f22ba6d4ae14"
}
}
5. 开发者资源
腾讯云 API 平台
腾讯云 API 平台 是综合 API 文档、错误码、API Explorer 及 SDK 等资源的统一查询平台,方便您从同一入口查询及使用腾讯云提供的所有 API 服务。
API Inspector
用户可通过 API Inspector 查看控制台每一步操作关联的 API 调用情况,并自动生成各语言版本的 API 代码,也可前往 API Explorer 进行在线调试。
SDK
云 API 3.0 提供了配套的开发工具集(SDK),支持多种编程语言,能更方便的调用 API。
- Tencent Cloud SDK 3.0 for Python: CNB, GitHub, Gitee
- Tencent Cloud SDK 3.0 for Java: CNB, GitHub, Gitee
- Tencent Cloud SDK 3.0 for PHP: CNB, GitHub, Gitee
- Tencent Cloud SDK 3.0 for Go: CNB, GitHub, Gitee
- Tencent Cloud SDK 3.0 for Node.js: CNB, GitHub, Gitee
- Tencent Cloud SDK 3.0 for .NET: CNB, GitHub, Gitee
- Tencent Cloud SDK 3.0 for C++: CNB, GitHub, Gitee
- Tencent Cloud SDK 3.0 for Ruby: CNB, GitHub, Gitee
命令行工具
6. 错误码
以下仅列出了接口业务逻辑相关的错误码,其他错误码详见 公共错误码。
| 错误码 | 描述 |
|---|---|
| FailedOperation.DeviceNoSubscription | 返回:消息发送失败,设备未订阅Topic。 |
| FailedOperation.RRPCTimeout | RRPC接口未收到设备端响应。 |
| InternalError | 内部错误。 |
| InvalidParameterValue | 参数取值错误。 |
| InvalidParameterValue.TopicMismatch | Topic与replyTopic必须同时设置或同时为空 |
| ResourceNotFound.DeviceNotExist | 设备不存在。 |
| ResourceNotFound.ProductNotExist | 产品不存在。 |