
# 对接SMN发送短信
通过应用与消息通知服务SMN（Simple Message Notification）对接，实现短信发送功能。例如，给某手机号码发送条短信，短信内容为："Hi Lily!"。
 #### 前提条件
- 已在消息通知服务SMN注册账号，并获取"IAM用户名"、"账号名"、所用SMN资源对应的"项目ID"、"项目"。
  图1获取关键信息   
  ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001954832101.png "点击放大") 
- 已获取AK（Access Key ID）、SK（Secret Access Key），即访问密钥对，具体操作请参见[获取AK/SK](https://support.huaweicloud.com/devg-apisign/api-sign-provide-aksk.html)。
 
#### 费用说明
应用对接SMN连接器后，SMN服务需要单独付费，具体收费标准请参见[华为云定价](https://www.huaweicloud.com/pricing/index.html)。**应用停用后，SMN服务仍将按照既定的计费规则继续计费。如果不再使用该服务，请及时退订实例，避免产生额外的费用。**
#### 新建SMN连接器
1. 参考[登录华为云Astro轻应用应用设计器](https://support.huaweicloud.com/usermanual-astrozero/astrozero_05_9004.html)中操作，进入应用设计器。
2. 在左侧导航栏中，选择"集成"。
3. 单击"连接器"中的" 连接器实例"，进入连接器实例页面。
4. 在左侧导航栏中，选择"消息通知 \> 消息通知服务SMN"。
5. 在右侧页面单击"+"，设置消息通知服务SMN对接信息。 
   对接SMN有密钥模式和用户名密码模式两种，请根据实际业务需求进行选择。
   图2密钥模式   
   ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000002134638789.png "点击放大")
   表1创建SMN连接器参数说明（密钥模式） 
   | 参数     | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
   |:---|:---|
   | 名称     | 新建连接器的名称。命名要求如下： - 长度不能超过64个字符，包括前缀命名空间的长度。 名称前的内容为命名空间，在华为云Astro轻应用中为了避免不同租户间数据的重名，租户在首次创建应用时需要先定义一个命名空间。一个租户只能创建一个命名空间，创建后不支持修改。   - 必须以英文字母开头，只能由英文字母、数字或单下划线组成，且不能以下划线结尾。   |
   | 访问密钥ID | 用户的访问密钥ID（Access Key ID），配置为[前提条件]中获取的"AK"取值。                                                                                                                                                                                                                                                                                                                                                                               |
   | 访问密钥   | 用户的访问密钥（Secret Access Key），配置为[前提条件]中获取的"SK"取值。                                                                                                                                                                                                                                                                                                                                                                             |
   | 项目ID   | 项目的唯一标识，配置为[前提条件]中获取的"项目ID"取值。                                                                                                                                                                                                                                                                                                                                                                                              |
   | 区域     | SMN服务的区域。                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
   | 描述     | 根据实际需求，输入连接器的描述信息。 取值范围：1\~255个字符。                                                                                                                                                                                                                                                                                                                                                                                                |
   | 打包当前配置 | 选中该选项后，应用打包时会将当前配置的连接器信息一并打包。例如，如果应用包发布到运行环境，当前配置默认会被同步到运行环境中。如果不勾选，则内容不会打包发布到运行环境，此时需要您参考[管理应用中的连接器](https://support.huaweicloud.com/usermanual-astrozero/astrozero_06_2020.html)中操作，创建对应的连接器。 默认为选中，对信息敏感的场景，建议不勾选。                                                                                                                                                                                                             |
      
   图3用户名密码模式   
   ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000002099204844.png "点击放大")
   表2创建SMN连接器参数说明（用户名密码模式） 
   | 参数     | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
   |:---|:---|
   | 名称     | 新建连接器的名称。命名要求如下： - 长度不能超过64个字符，包括前缀命名空间的长度。 名称前的内容为命名空间，在华为云Astro轻应用中为了避免不同租户间数据的重名，租户在首次创建应用时需要先定义一个命名空间。一个租户只能创建一个命名空间，创建后不支持修改。   - 必须以英文字母开头，只能由英文字母、数字或单下划线组成，且不能以下划线结尾。   |
   | 帐号名    | 登录消息通知服务SMN的账号名。请与[前提条件]中获取的"账号名"取值保持一致。                                                                                                                                                                                                                                                                                                                                                                                      |
   | 项目名    | 所用SMN资源对应区域的项目名。请与[前提条件]中获取的"项目"取值保持一致。                                                                                                                                                                                                                                                                                                                                                                                       |
   | 用户名    | 使用消息通知服务SMN的用户名。请与[前提条件]中获取的"IAM用户名"取值保持一致。                                                                                                                                                                                                                                                                                                                                                                                   |
   | 密码     | 登录消息通知服务SMN的用户密码。                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
   | 项目ID   | 项目的唯一标识。请与[前提条件]中获取的"项目ID"取值保持一致。                                                                                                                                                                                                                                                                                                                                                                                             |
   | 用户类型   | 新建连接器所属的用户类型。                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
   | 签发ID   | 短信内容中，包含的短信签名对应的ID。当"用户类型"为"企业用户"时，该参数可见且需要配置。请从SMN获取，不填默认为华为云企业用户。                                                                                                                                                                                                                                                                                                                                                                                                    |
   | 区域     | SMN服务的区域。                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
   | 描述     | 根据实际需求，输入连接器的描述信息。 取值范围：1\~255个字符。                                                                                                                                                                                                                                                                                                                                                                                                |
   | 打包当前配置 | 选中该选项后，应用打包时会将当前配置的连接器信息一并打出。例如，如果应用包发布到运行环境，当前配置默认会被同步到运行环境中。 默认为选中，对信息敏感的场景，建议不勾选。                                                                                                                                                                                                                                                                                                                                               |
      
   
   
6. 设置完成后，单击"保存"。
7. （可选）测试是否能发送短信。 
   1. 在连接器详情页面，单击"发送测试"。
   
   2. 输入接收者手机号码和短信内容，单击"发送"。 接收者收到短信，表示测试成功。
      
   
   
   
   
 
#### 在服务编排中调用连接器
在服务编排中，调用连接器，实现与消息通知服务SMN的对接。
1. 参考[创建空白华为云Astro轻应用服务编排](https://support.huaweicloud.com/usermanual-astrozero/astrozero_05_9131.html)中操作，创建一个空白服务编排。
2. 在服务编排设计页面左侧，选择"连接器 \> 消息通知"，拖拽"SMN"图元至画布中。 
   SMN是系统预置的，与SMN对接的短信发送接口。
   图4拖拽SMN图元至画布中   
   ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000002188798752.png "点击放大")
   
   
3. 选中SMN图元，设置基本信息。 
   图5基本信息   
   ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001894301904.png "点击放大")
   - 标签：图元在页面显示的名称。
   
   - 名称：图元在系统中的唯一标识，不能和其他图元相同。
   
   - 连接器：该服务编排使用的连接器的名称。
   
   
   
   
4. 单击![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001894301928.png)，设置调用SMN参数。
   
   图6配置SMN   
   ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001936101573.png "点击放大")
   - 动作：设置为"SMSSendSMS"，是系统预置的短信发送接口。
   
   - 输入参数：设置接口的输入参数。
     - "目标"设置为"endPoint"时：请在"源"中，配置短信接收者手机号，可定义为一个输入型变量"{!Phone}"。
     
     - "目标"设置为"message"时：请在"源"中，配置短信内容，可定义为一个输入型变量"{!Message}"。
      
   
   - 输出参数：设置接口的输出参数。"源"设置为"result"，"目标"用于接收短信发送结果（是否成功发送），必须定义一个空实例的结构变量来进行接收。
   
   
   
   
5. 在服务编排页面左侧，选择"逻辑"，拖拽"决策"图元至画布中。 
   决策是对当前条件进行判断，根据判断的结果决定执行何种操作，类似if语句的判断。
   当短信发送成功时，系统会将"resCode"赋值为"0"，这里创建Decision判断"resCode"是否为"0"，来输出发送是否成功的标识（例如"sendFlag"），从而进行后续操作。
   1. 单击![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001936101601.png)，单击公式后的![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001936101597.png)，增加"GetResultCode"公式变量，表达式为"GET({!result},"resCode")"，用于接收短信发送结果。
      图7配置"GetResultCode"公式变量   
      ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001988516426.png "点击放大") 
   
   2. 配置"决策"的成功分支，即success表示"resCode"为""0""，短信发送成功分支。
      图8配置"决策"成功分支   
      ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001894301936.png "点击放大") 
   
   3. 配置"决策"的失败分支，即error表示其他分支，即短信发送失败。
      图9配置"error"分支   
      ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001894142020.png "点击放大") 
   
   
   
   
6. 在服务编排页面左侧，选择"逻辑"，拖拽"赋值"图元至画布中，并进行配置。 
   创建一个普通变量"sendFlag"。赋值是创建变量的图元，主要作用是给变量赋值。这里增加符合"success"分支的操作，短信发送成功，输出成功标识。
   1. 单击![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001936101605.png)，单击变量后的![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001894142008.png)，新建一个普通变量"sendFlag"。
   
   2. 单击![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001894142032.png)，配置符合"success"的赋值操作，值为""Message sent successful""。
   
   
   图10赋值   
   ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001936101609.png "点击放大")
   
   
7. 单击![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001894301924.png)，配置符合"error"的赋值操作，值为""Message sent Failed""。
   
   图11配置赋值操作   
   ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001894142004.png "点击放大")
   
   
8. 如[图12]所示，连接所有图元。
   
   图12连接元素   
   ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001894301900.png "点击放大")
   
   
9. 单击服务编排设计页面空白区域，单击![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001936101529.png)，设置服务编排入参和出参。
   
   图13设置服务编排入参和出参   
   ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001894301880.png "点击放大")
   
   
10. 单击页面上方的![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001936101549.png)，保存服务编排。
11. 保存成功后，单击![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001894301860.png)，运行服务编排。
12. 设置输入参数（接受者号码和短信内容），单击"运行"。 
    ```
    {
        "Phone": "186***76",
        "Message": "HI, Lily!"
    }
    ```
    如[图14]所示，表示发送成功。
    图14发送成功   
    ![](https://support.huaweicloud.com/usermanual-astrozero/zh-cn_image_0000001936101521.png "点击放大")
    
    
 
#### 相关文档
- 如果无法正常接收到消息，请参考[向主题推送消息后，订阅者为什么没有收到消息？](https://support.huaweicloud.com/smn_faq/smn_faq_0016.html)进行排查。
- 为避免个别客户大量发送消息，影响消息通知服务对整体客户的服务能力，消息通知服务对消息发送有下列限制，超过限制将不可发送消息。关于消息发送限制的具体内容，请参见[服务韧性](https://support.huaweicloud.com/productdesc-smn/smn_pd_25005.html)。
 
