
# 向主题发布JSON消息
#### 操作场景
如果您需要向不同的订阅协议发送不同的内容，可以向主题发布JSON消息，它可以定义分别向短信、邮件、FunctionGraph（函数）、FunctionGraph（工作流）和HTTP(S)订阅协议发送不同内容。
#### 前提条件
所有的订阅终端必须确认订阅才能收到推送消息，未确认的订阅终端不会收到消息。
#### 操作步骤
1. 登录[SMN控制台](https://console.huaweicloud.com/smn/?#/dashboard)。
2. 在左侧导航栏，选择"主题管理" \> "主题"。 进入主题页面。
   
3. 在主题列表中，选择您要向其发布消息的主题，在右侧"操作"栏单击"发布消息"。 或者单击"主题名称"，在主题详情页中，单击右上角的"发布消息"按钮。
   
4. 在弹出的发布消息对话框中，主题名称为已选择的需要发布消息的主题名称，不可修改。其它参数根据界面提示填写。填写说明请参考[表1]。
    表1发布消息参数说明 
   | **参数** | **说明**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
   |:---|:---|
   | 消息标题   | 消息的标题，长度不超过512字节。可不填写。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
   | 消息类型   | 消息格式有三种，分别为"文本消息"、"JSON消息"和"模板消息"。每次发布消息只可选取其中一种。 - "文本消息"：按文本格式发送的消息。  - "JSON消息"：按JSON格式发送的消息。  - "模板消息"：按模板格式发送的消息。模板定义请参考[消息模板管理](https://support.huaweicloud.com/usermanual-smn/zh-cn_topic_0043394889.html)。   |
   | 消息内容   | 消息的内容。消息内容不能为空且大小不超过256KB。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
      
   此处"消息类型"选择"JSON消息"，"消息内容"可以手动输入JSON格式的消息，也可以通过工具自动生成JSON格式的消息。
   - 手动输入JSON格式的消息，JSON格式的规范请参考[JSON格式消息说明](https://support.huaweicloud.com/usermanual-smn/smn_ug_a1000.html)。
   
   - 通过工具自动生成JSON格式的消息，请参考步骤[5]\~[8]。
    
5. 单击"生成JSON消息"。
6. 在弹出的对话框中，在"消息"框中输入内容"This is a default message."，在"协议"处勾选所有协议。 选择不同的协议，生成的JSON格式消息的大小不同。此处输入消息内容后，系统会自动计算已输入内容的字节数、生成的JSON格式消息的字节数以及剩余可输入的字节数。生成的JSON格式消息的字节数包含消息框中显示的花括号、双引号、空格、回车、协议名称和消息内容累计字节数。JSON格式消息的计算方法，请参见[JSON格式消息说明](https://support.huaweicloud.com/usermanual-smn/smn_ug_a1000.html)的[JSON消息计算](https://support.huaweicloud.com/usermanual-smn/smn_ug_a1000.html#smn_ug_a1000__section11977745123756)部分。
   图1生成JSON消息   
   ![](https://support.huaweicloud.com/usermanual-smn/zh-cn_image_0084967944.png "点击放大") 
7. 单击"确定"，系统自动生成JSON消息并显示在消息内容框中。如[图2]所示。
   图2JSON消息   
   ![](https://support.huaweicloud.com/usermanual-smn/zh-cn_image_0095491613.png "点击放大") 
8. 您可以在生成的各个协议的消息内容中手动修改消息，这样就可以实现向不同协议发送不同的消息内容。系统生成JSON格式的消息时默认生成"default"，当匹配不到消息协议时，按"default"中的内容发送。关于JSON格式的消息描述，请参考[JSON格式消息说明](https://support.huaweicloud.com/usermanual-smn/smn_ug_a1000.html)。
9. （可选）根据界面提示，配置消息属性参数。消息属性用于限定消息发布范围，填写说明如[表2]所示。
    表2消息属性参数说明 
   | **参数** | **说明**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
   |:---|:---|
   | 类型     | 选择需要限定发布消息的类型。 - 协议  - string.array  - String                                                                                                                                                                                                                                                               |
   | 名称     | 名称只能由数字、小写英文字母或下划线（_）组成，下划线不能作为结尾且不能连续出现，必须由数字或小写英文字母开头，长度不能超过32个字符且不能为空。 - 当"类型"取值为"协议"时，"名称"默认为smn_protocol。  - 当"类型"取值为"string.array"时，输入限定发布消息的数组名称。  - 当"类型"取值为"String"时，输入限定发布消息的字符串名称。                                                                                                                   |
   | 值      | - 当"类型"取值为"协议"时，在下拉框中选择需要限定消息发布的协议类型，提供的选项为"短信"、"邮件"、"HTTP"、"HTTPS"、"FunctionGraph（函数）"、"FunctionGraph（工作流）。  - 当"类型"取值为"string.array"时，值必须为字符串数组，数组长度至少为1且不能超过10。 例如：\[ "email", "sms" \]。   - 当"类型"取值为"String"时，值只能由中文、数字、英文字母或下划线（_）组成，长度不能超过32个字符且不能为空。   |
      
   
10. 单击"确定"。 消息将推送至不同的订阅终端。各个终端接收到的消息内容说明请参考[不同协议消息说明](https://support.huaweicloud.com/usermanual-smn/smn_ug_a3000.html)。
    
 
