调用接口BatchPub通过自定义Topic,向指定产品下的多个设备,批量发送消息。
使用说明
- 单批次最多向同一产品下的100个设备发送消息。
- 调用本接口时,请求参数中TopicShortName与TopicTemplateName必须二选一使用。如果同时传入TopicShortName和TopicTemplateName,则以TopicTemplateName为准。
- 不支持使用BatchPub接口下发设置属性和调用服务的指令。设置属性,请使用接口SetDeviceProperty或SetDevicesProperty;调用服务,请使用接口InvokeThingService或InvokeThingsService。
QPS限制
单个阿里云账号调用该接口的每秒请求数(QPS)最大限制为50。
调试
您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。
请求参数
名称 |
类型 |
是否必选 |
示例值 |
描述 |
Action | String | 是 | BatchPub | 系统规定参数。取值:BatchPub。 |
DeviceName.N | RepeatList | 是 | newdevice1 | 要接收消息的设备名称。 说明
|
MessageContent | String | 是 | eyJ0ZXN0IjoidGFzayBiYXRjaHB1YiBicm9hZGNhc3QifQ== | 要发送的消息内容。最大报文256 KB。 您需要将消息原文转换成二进制数据,并进行Base64编码,从而生成消息内容。 说明 物联网平台会先对消息内容进行Base64解码,再将解码后的对应消息发送给设备。设备端无需进行Base64解码。 |
ProductKey | String | 是 | a1BwAGV**** | 要发送消息的产品ProductKey。 |
IotInstanceId | String | 否 | iot-cn-0pp1n8t**** | 实例ID。您可在物联网平台控制台的实例概览页面,查看当前实例的ID。 重要
实例的更多信息,请参见实例概述。 |
Qos | Integer | 否 | 0 | 指定消息的发送方式。取值:
说明 QoS=1的消息在物联网平台中最多可以保存7天。物联网平台不保存QoS=0的消息。 通信消息的更多使用说明,请参见使用限制的连接通信。 |
TopicShortName | String | 否 | get | 要发送消息的自定义Topic的后缀。自定义Topic的格式为 该参数与TopicTemplateName二选一使用。如果同时传入TopicShortName和TopicTemplateName,则以TopicTemplateName为准。 说明 指定Topic的操作权限须为订阅,或发布和订阅,且所有设备已订阅该Topic。 您可通过以下途径查看自定义Topic:
|
TopicTemplateName | String | 否 | /a1BwAGV****/${deviceName}/user/test | 要发送消息的自定义Topic的模板,自定义Topic的格式为 传入该参数时 该参数与TopicShortName二选一使用。如果同时传入TopicShortName和TopicTemplateName,则以TopicTemplateName为准。 说明 指定Topic的操作权限须为订阅,或发布和订阅,且所有设备已订阅该Topic。 您可通过以下途径查看自定义Topic:
|
ResponseTopicTemplateName | String | 否 | /a1BwAGV****/${deviceName}/user/update | 如果需要设备接收消息返回响应消息,需设置返回响应消息的自定义Topic模板。Topic的格式为 传入该参数时 说明 指定Topic的操作权限须为发布,或发布和订阅。 |
UserProp.N.Key | String | 否 | key1 | 使用MQTT 5.0版本通信协议时,用户自定义属性的Key。 需要与UserProp.N.Value成对使用。 |
UserProp.N.Value | String | 否 | key1 | 使用MQTT 5.0版本通信协议时,用户自定义属性的Value。 需要与UserProp.N.Key成对使用。 |
CorrelationData | String | 否 | aGVsbG8%3D**** | 使用MQTT 5.0版本通信协议时,请求和响应模式中的相关数据,用户可自定义。 消息接收方可根据相关数据处理请求。 说明 您需要将相关数据转换为二进制数据,并进行Base64编码,从而生成String类型数据。 |
PayloadFormatIndicator | Integer | 否 | 1 | 使用MQTT 5.0版本通信协议时,发布消息的有效载荷标识,可取值:
|
ContentType | String | 否 | text | 使用MQTT 5.0版本通信协议时,发布消息的内容类型。 应用于存放MIME类型文件,例如,文本文件类型:text、plain。 |
MessageExpiryInterval | Long | 否 | 2 | 使用MQTT 5.0版本通信协议时,消息的过期时间,单位是秒。
|
Retained | Boolean | 否 | true | 使用MQTT 5.0版本通信协议时,该字段用于标识是否是保留消息。
|
调用API时,除了本文介绍的该API的特有请求参数,还需传入公共请求参数。公共请求参数说明,请参见公共参数文档。
返回数据
名称 |
类型 |
示例值 |
描述 |
Code | String | iot.system.SystemException | 调用失败时,返回的错误码。更多信息,请参见错误码。 |
ErrorMessage | String | 系统异常 | 调用失败时,返回的出错信息。 |
RequestId | String | E55E50B7-40EE-4B6B-8BBE-D3ED55CCF565 | 阿里云为该请求生成的唯一标识符。 |
Success | Boolean | true | 表示是否调用成功。
|
示例
请求示例
http(s)://iot.cn-shanghai.aliyuncs.com/?Action=BatchPub
&DeviceName.1=newdevice1
&MessageContent=eyJ0ZXN0IjoidGFzayBiYXRjaHB1YiBicm9hZGNhc3QifQ==
&ProductKey=a1BwAGV****
&TopicShortName=get
&<公共请求参数>
正常返回示例
XML
格式
<BatchPubResponse>
<RequestId>9E76053E-26ED-4AB4-AE58-8AFC3F1E7E8E</RequestId>
<Success>true</Success>
</BatchPubResponse>
JSON
格式
{
"RequestId": "9E76053E-26ED-4AB4-AE58-8AFC3F1E7E8E",
"Success": true
}