调用PublishMessage接口向指定的主题发布消息,消息发布到主题后随即会被推送给Endpoint消费。
请求头
该接口使用公共请求头,无特殊请求头。更多信息,请参见公共参数。
请求语法
POST /topics/$TopicName/messages HTTP/1.1
请求参数
参数 | 类型 | 是否必选 | 描述 |
---|---|---|---|
MessageBody | String | 是 | 消息内容。 |
MessageTag | String | 否 | 消息标签。 |
MessageAttributes | Object | 是 | 推送订阅类型。
取值说明如下:
|
MessageAttributes包含的参数说明如下:
- 如果需要推送到邮箱,MessageAttributes需要包含DirectMail属性。
DirectMail属性的Text内容是JSON格式,需要包含以下参数。更多信息,请参见SingleSendMail。
参数 类型 是否必选 示例值 说明 AccountName String 是 direct_mail_account_name@aliyun-inc.com 发信地址。 Subject String 是 TestMailSubject 邮件主题。 AddressType Number 是 0 地址类型。 取值说明如下:- 0:随机账号。
- 1:发信地址。
IsHtml Number 是 0 邮件内容是否为HTML格式。 取值说明如下:- 0:邮件内容不为HTML样式。
- 1:邮件内容为HTML样式。
ReplyToAddress Boolean 是 0 是否启用回信地址。 取值说明如下:- 0:不启用回信地址。
- 1:启用回信地址。
- 如果需要推送到阿里短信,MessageAttributes需要包含DirectSMS属性。
DirectSMS属性的Text内容是JSON格式,需要包含以下参数。
参数 类型 是否必选 示例值 说明 FreeSignName String 是 $value 短信签名。 TemplateCode String 是 $value 短信模板ID。 Type String 是 multiContent 是否批量发送短信。 取值说明如下:- singleContent:单独发送。
- multiContent:批量发送。
说明 如果将Type设置为multiContent,那么消息只能被Endpoint为sms:directsms:anonymous的订阅处理。
Receiver String 否 $num1,$num2 接收者。 如果将Type设置为singleContent且Subscription的Endpoint是sms:directsms:anonymous,则此参数生效且必填。填写接收人的手机号码,多个号码以半角逗号(,)分隔。
SmsParams String 是 {\"$num1\": {\"$key1\": \"$value1\", \"$key2\": \"$value2\"}, \"$num2\": {\"$key1\": \"$value1\", \"$key2\": \"$value2\"}}
短信模板键值对。JSON格式。 - 如果将Type设置为singleContent,此参数填写格式如下所示。
。{ "参数1":"Value1", "参数2":"Value2" }
- 如果将Type设置为multiContent,此参数填写格式如下所示。
{ "电话号码1":{ "参数1":"Value1", "参数2":"Value2" }, "电话号码2":{ "参数1":"Value3", "参数2":"Value4" } }
- 如果需要推送到移动推送,MessageAttributes需要包含Push属性。
Push属性的Text内容是JSON格式,需要包含以下参数。更多信息,请参见推送高级接口。
参数 类型 是否必选 示例值 说明 Target String 是 ALL 推送目标类型。 取值说明如下:- DEVICE:根据设备推送。
- ACCOUNT:根据账号推送。
- ALIAS:根据别名推送。
- TAG:根据标签推送。
- ALL:推送给全部设备(同一种设备类型的两次全部推送的间隔至少为1秒)。
TargetValue String 是 ALL 推送目标。 DeviceType String 是 ALL 设备类型。 取值说明如下:- iOS:iOS设备。
- ANDROID:安卓设备。
- ALL:全部设备。
PushType String 是 MESSAGE 推送类型。 取值说明如下:- MESSAGE:消息。
- NOTICE:通知。
Title String Android推送时通知或消息的标题以及iOS消息的标题,为必填;iOS 10以上通知显示标题,iOS 8.2-10替换通知应用名称,为选填。 JavaSDK 标题。 Body String 是 Hello From JavaSDK 消息内容。 PushTime String 否 无 定时发送。不设置时默认为立即发送。 StoreOffline Boolean 否 无 是否保存离线消息。默认为false。 取值说明如下:- true:保存离线消息。
- false:不保存离线消息。
返回数据
参数 | 类型 | 示例值 | 说明 |
---|---|---|---|
MessageId | String | D273CD6A89564E54-1-15180395A19-20000**** | 消息编号。在主题中唯一。 |
MessageBodyMD5 | String | 3AC6DD36D2D6B7283F2F490A0975**** | 消息正文的MD5值。 |
示例
邮件推送请求示例
POST /topics/MyTopic/messages HTTP/1.1
Host: 123456789098****.mns.cn-hangzhou.aliyuncs.com
Date: Tue, 08 Dec 2015 06:13:40 GMT
Content-Length:500
Content-Type:text/xml;charset=utf-8
Authorization: MNS 15B4D3461F177624****:aibzWu1iDEx9LwO56+kHgA3e****
x-mns-version: 2015-06-06
<?xml version="1.0" encoding="utf-8"?>
<Message xmlns="http://mns.aliyuncs.com/doc/v1/">
<MessageBody>Base64 Encoded Result</MessageBody>
<MessageTag>important</MessageTag>
<MessageAttributes>
<DirectMail>
{
"Subject":"TestMailSubject",
"AccountName":"direct_mail_account_name@aliyun-inc.com",
"ReplyToAddress":0,
"AddressType":0,
"IsHtml":0
}
</DirectMail>
</MessageAttributes>
</Message>
短信推送请求示例
POST /topics/MyTopic/messages HTTP/1.1
Host: 123456789098****.mns.cn-hangzhou.aliyuncs.com
Date: Tue, 08 Dec 2015 06:13:40 GMT
Content-Length:500
Content-Type:text/xml;charset=utf-8
Authorization: MNS 15B4D3461F177624****:aibzWu1iDEx9LwO56+kHgA3e****
x-mns-version: 2015-06-06
<?xml version="1.0" encoding="utf-8"?>
<Message xmlns="http://mns.aliyuncs.com/doc/v1/">
<MessageBody>content</MessageBody>
<MessageAttributes>
<DirectSMS>
{
"FreeSignName":"$value",
"TemplateCode":"$value",
"Type":"multiContent",
"Receiver":"$num1,$num2",
"SmsParams":"{\"$num1\": {\"$key1\": \"$value1\", \"$key2\": \"$value2\"}, \"$num2\": {\"$key1\": \"$value1\", \"$key2\": \"$value2\"}}"
}
</DirectSMS>
</MessageAttributes>
</Message>
移动推送请求示例
POST /topics/MyTopic/messages HTTP/1.1
Host: 123456789098****.mns.cn-hangzhou.aliyuncs.com
Date: Tue, 08 Dec 2015 06:13:40 GMT
Content-Length:500
Content-Type:text/xml;charset=utf-8
Authorization: MNS 15B4D3461F177624****:aibzWu1iDEx9LwO56+kHgA3e****
x-mns-version: 2015-06-06
<?xml version="1.0" encoding="UTF-8"?>
<Message xmlns="http://mns.aliyuncs.com/doc/v1">
<MessageBody>hello topic</MessageBody>
<MessageAttributes>
<Push>
{
"Target":"ALL",
"TargetValue":"ALL",
"DeviceType":"ALL",
"PushType":"MESSAGE",
"Title":"JavaSDK",
"Body":"Hello From JavaSDK",
"AndroidOpenType":"APPLICATION"
}
</Push>
</MessageAttributes>
</Message>
正常返回示例
HTTP/1.1 201 Created
Content-Length:120
Content-Type:text/xml;charset=utf-8
x-mns-request-id:56667514B2B71C9C1600****
x-mns-version:2015-06-06
<?xml version="1.0" encoding="utf-8"?>
<Message xmlns="http://mns.aliyuncs.com/doc/v1/">
<MessageId>D273CD6A89564E54-1-15180395A19-20000****</MessageId>
<MessageBodyMD5>3AC6DD36D2D6B7283F2F490A0975****</MessageBodyMD5>
</Message>
错误码
错误码 | 错误信息 | 状态码 |
---|---|---|
TopicNotExist | The topic you provided does not exist. | 404 |