消息发布
功能介绍
将消息发送给Topic的所有订阅端点。当返回消息ID时,该消息已被保存并开始尝试将其推送给Topic的订阅者。三种消息发送方式
message
message_structure
message_template_name
只需要设置其中一个,如果同时设置,生效的优先级为 message_structure > message_template_name > message。
调用方法
请参见如何调用API。
URI
POST /v2/{project_id}/notifications/topics/{topic_urn}/publish
请求参数
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
X-Auth-Token |
是 |
String |
用户Token。 通过调用IAM服务获取用户Token接口获取(响应消息头中X-Subject-Token的值)。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
subject |
否 |
String |
消息标题,给邮箱订阅者发送邮件时作为邮件主题,长度不能超过512个字节。 |
message |
否 |
String |
发送的消息。消息体必须是UTF-8编码的字符串,大小至多256KB。如果订阅者是手机号码,长度不超过490个字符,超出部分系统自动截断。短信内容不能包含“[]”或者“【】”符号。对于移动推送订阅者推送消息,message消息必须符合移动推送平台的消息格式,消息格式请参见application消息体格式。否则移动app无法收到消息,目前支持的平台有HMS、APNS、APNS_SANDBOX。说明:三种消息发送方式messagemessage_structuremessage_template_name至少设置其中一个,如果同时设置,生效的优先级为message_structure > message_template_name > message。 |
message_structure |
否 |
String |
Json格式的字符串。支持“email”、“sms”、 “http”、“https”、“dms”、“functiongraph”、“functionstage”、“HMS”、“APNS”、“APNS_SANDBOX”、 "dingding", "wechat",”feishu“, "welink"。其中,“HMS”、“APNS”以及“APNS_SANDBOX”三种消息的格式请参见application消息体格式。必须设置默认的消息“default”,当匹配不到消息协议时,按“default”中的内容发送。其中,钉钉、微信、飞书、welink协议类型的消息需指定msgType字段;钉钉,微信和飞书机器人协议支持msgType为text(纯文本)和markdown(MD)格式消息,welink和红版welink机器人类型暂仅支持msgType为text的纯文本消息。 钉钉机器人协议支持通过at字段实现@群组成员。当您需要@群成员时,可以在isAtAll字段中传入布尔值,表示是否需要@群组内所有人。您可以在atMobiles字段中传入需要@的人的手机号列表,或在atUserIds字段中传入需要@的钉钉userID列表。当您使用atMobiles字段或atUserIds字段时,需要在消息内容中同时传入@对应手机号或userID的信息。展示效果请参考钉钉官方文档。说明:三种消息发送方式messagemessage_structuremessage_template_name至少设置其中一个,如果同时设置,生效的优先级为message_structure > message_template_name > message。华为透传消息{ "hps": { "msg": { "type": 1, "body": { "key": "value" } } }}华为系统通知栏消息{ "hps": { "msg": { "type": 3, "body": { "content": "Push message content", "title": "Push message content" }, "action": { "type": 1, "param": { "intent": "#Intent;compo=com.rvr/.Activity;S.W=U;end" } } }, "ext": { "biTag": "Trump", "icon": "http://upload.w.org/00/150pxsvg.png" } }}苹果平台消息格式{ "aps": { "alert": "hello world" }} |
message_template_name |
否 |
String |
消息模板名称,可通过查询消息模板列表获取名称。说明:三种消息发送方式:messagemessage_structuremessage_template_name至少设置其中一个,如果同时设置,生效的优先级为message_structure > message_template_name > message。 |
tags |
否 |
Map<String,String> |
tag以及替换tag的参数组成的字典。消息模板中的标签对应的值。使用消息模板方式的消息发布必须携带该参数。字典中的key为消息模板中的参数名称,不超过21个字符。字典中的value为消息模板中的参数被替换后的值,不超过1KB。 |
time_to_live |
否 |
String |
指消息在SMN系统内部的最长存留时间。超过该存留时间,系统将不再发送该消息。单位是s,变量默认值是3600s,即一小时。值为正整数且小于等于3600*24。 |
message_attributes |
否 |
Array of MessageAttribute objects |
消息属性列表 数组长度:0 - 10 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
name |
是 |
String |
属性名称。属性名称只能包含小写英文字母([a-z])、数字([0-9])、下划线(_),下划线不能出现在开始或结尾,下划线不能连续出现,长度为1到32个字符 最小长度:1 最大长度:32 |
type |
是 |
String |
属性类型 STRING:字符串(String)类型 STRING_ARRAY:字符串数组(String.Array)类型 PROTOCOL:协议类型 枚举值:
|
value |
是 |
Object |
属性值。 当属性类型为“STRING”时,属性值只能包含中英文、数字、下划线,长度为1到32个字符。 当属性类型为“STRING_ARRAY”时,属性值为字符串数组,数组长度为1到10,数组中的元素内容不能重复,数组中的每个字符串都只能包含中英文、数字、下划线,且长度为1到32个字符。 当属性类型为“PROTOCOL”时,属性值为支持协议类型的字符串数组。 |
响应参数
状态码: 200
参数 |
参数类型 |
描述 |
---|---|---|
request_id |
String |
请求的唯一标识ID。 |
message_id |
String |
唯一的消息ID。 |
状态码: 400
参数 |
参数类型 |
描述 |
---|---|---|
request_id |
String |
请求的唯一标识ID。 |
code |
String |
服务异常错误信息编码。 |
message |
String |
服务异常错误信息描述。 |
状态码: 403
参数 |
参数类型 |
描述 |
---|---|---|
request_id |
String |
请求的唯一标识ID。 |
code |
String |
服务异常错误信息编码。 |
message |
String |
服务异常错误信息描述。 |
状态码: 404
参数 |
参数类型 |
描述 |
---|---|---|
request_id |
String |
请求的唯一标识ID。 |
code |
String |
服务异常错误信息编码。 |
message |
String |
服务异常错误信息描述。 |
状态码: 429
参数 |
参数类型 |
描述 |
---|---|---|
request_id |
String |
请求的唯一标识ID。 |
code |
String |
服务异常错误信息编码。 |
message |
String |
服务异常错误信息描述。 |
状态码: 500
参数 |
参数类型 |
描述 |
---|---|---|
request_id |
String |
请求的唯一标识ID。 |
code |
String |
服务异常错误信息编码。 |
message |
String |
服务异常错误信息描述。 |
请求示例
-
消息发布
POST https://{SMN_Endpoint}/v2/{project_id}/notifications/topics/urn:smn:regionId:f96188c7ccaf4ffba0c9aa149ab2bd57:test_create_topic_v2/publish { "subject" : "test message v2", "message" : "Message test message v2", "time_to_live" : "3600", "message_attributes" : [ { "name" : "smn_protocol", "type" : "PROTOCOL", "value" : [ "email", "sms" ] } ] }
-
使用消息结构体方式的消息发布
POST https://{SMN_Endpoint}/v2/{project_id}/notifications/topics/urn:smn:regionId:f96188c7ccaf4ffba0c9aa149ab2bd57:test_create_topic_v2/publish { "subject" : "test message v2", "message_structure" : "{\n \"default\": \"xxx\",\n \"APNS\": \"{\\\"aps\\\":{\\\"alert\\\":{\\\"title\\\":\\\"xxx\\\",\\\"body\\\":\\\"xxx\\\"}}}\"\n}", "time_to_live" : "3600", "message_attributes" : [ { "name" : "smn_protocol", "type" : "PROTOCOL", "value" : [ "email", "sms" ] } ] }
-
使用消息模板方式的消息发布
POST https://{SMN_Endpoint}/v2/{project_id}/notifications/topics/urn:smn:regionId:f96188c7ccaf4ffba0c9aa149ab2bd57:test_create_topic_v2/publish { "subject" : "test message template v2", "message_template_name" : "confirm_message", "time_to_live" : "3600", "tags" : { "topic_urn" : "topic_urn3331", "topic_id" : "topic_id3332" }, "message_attributes" : [ { "name" : "smn_protocol", "type" : "PROTOCOL", "value" : [ "email", "sms" ] } ] }
响应示例
状态码: 200
OK
{ "request_id" : "6a63a18b8bab40ffb71ebd9cb80d0085", "message_id" : "bf94b63a5dfb475994d3ac34664e24f2" }
状态码
状态码 |
描述 |
---|---|
200 |
OK |
400 |
Bad Request |
403 |
Unauthorized |
404 |
Not Found |
429 |
Too Many Requests |
500 |
Internal Server Error |
错误码
请参见错误码。