调用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 |