# Pub
调用该接口通过自定义Topic向设备发布消息,支持向指定产品下订阅了指定自定义Topic的离线设备发送消息。
# 使用说明
发送离线消息时:
- 设备连接平台时,需要设置Clean Session=false。
- 设备使用mqtt 3.x协议时,平台默认会话过期间隔为2小时(7200秒);使用mqtt 5.0协议时,设备连接时的会话过期间隔不能超过12小时(43200秒)。
- 设备订阅当前下发消息topic时,消息质量需要设置qos=1;调用本接口发送消息时,消息质量也需要设置qos=1。
- 在设备离线后,会话过期前,使用相同的ClientId连接平台,设备可接收到离线期间本接口下发的消息。
注意:离线消息仅支持小规模场景使用;不支持广泛业务或者是主业务场景使用。
# 请求参数
| 名称 | 类型 | 是否必选 | 示例值 | 描述 |
|---|---|---|---|---|
| Action | String | 是 | Pub | 系统规定参数。取值:Pub。 |
| ProductKey | String | 是 | a1Q5XoY**** | 要接收消息的设备所属产品的ProductKey。 |
| MessageContent | String | 是 | eyJ0ZXN0IjoidGFzayBwdWIgYnJvYWRjYXN0In0= | 要发送的消息内容。您需要将消息原文转换成二进制数据,并进行Base64编码,从而生成消息内容。说明物联网平台会先对消息内容进行Base64解码,再将解码后的对应消息发送给设备。设备端无需进行Base64解码。 |
| TopicFullName | String | 是 | /a1Q5XoY****/device1/user/get | 要接收消息的设备的自定义Topic。自定义Topic的格式支持为:/${productKey}/${deviceName}/user/${TopicShortName}:发送消息到指定ProductKey的指定设备。重要Topic的操作权限必须为订阅或发布和订阅。调用该接口前,设备必须已订阅该Topic且未取消,否则无法接收本次发布的消息。在物联网平台控制台产品详情页面的Topic类列表页签下,查询产品下的自定义Topic。在物联网平台控制台设备详情页面的Topic列表页签下,查看设备需要订阅的Topic。 |
| IotInstanceId | String | 是 | 6931522**** | 实例ID。您可在物联网平台控制台的实例概览页面,查看当前实例的ID。重要若有ID值,必须传入该ID值,否则调用会失败。 |
| Qos | Integer | 否 | 0 | 指定消息的发送方式。取值:0:最多发送一次。1:最少发送一次。如果不传入此参数,则使用默认值0。 |
# 返回数据
| 名称 | 类型 | 示例值 | 描述 |
|---|---|---|---|
| ErrorMessage | String | 系统异常 | 调用失败时,返回的出错信息。 |
| RequestId | String | cAMeAT6qyGYTD76DkJZHWj8ba0pWZWam | 平台为该请求生成的唯一标识符。 |
| Success | Boolean | true | 是否调用成功。true:调用成功。false:调用失败。 |
| Code | String | iot.system.SystemException | 调用失败时,返回的错误码。 |
# 示例
请求示例
http://open.${区域}.fenydata.com/fenydata-java-open/?Action=Pub
&ProductKey=a1Q5XoY****
&IotInstanceId=70255861902711****
&TopicFullName=/a1Q5XoY****/device1/user/get
&MessageContent=eyJ0ZXN0IjoidGFzayBwdWIgYnJvYWRjYXN0In0=
&Qos=0
&<公共请求参数>
正常返回示例
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<xml>
<RequestId>cAMeAT6qyGYTD76DkJZHWj8ba0pWZWam</RequestId>
<Success>true</Success>
</xml>
JSON格式
{
"RequestId": "IAIhJ0Tb8R2qdpL27L5YWWBMtFhJnMq8",
"Success": true
}
← 修改自定义Topic 批量推送 →