更新时间:2024-10-23 GMT+08:00
分享

对接SMN实现短信发送功能

背景信息

通过应用与华为云的消息通知服务SMN(Simple Message Notification)对接,实现短信发送功能。

场景描述

给某手机号码发送条短信,短信内容为:“Hi Lily!”。

前提条件

  • 已在华为云的消息通知服务SMN注册账号,并获取“IAM用户名”、“账号名”、所用SMN资源对应的“项目ID”、“项目”。
    图1 获取关键信息
  • 已获取AK(Access Key ID)、SK(Secret Access Key),即访问密钥对,具体操作请参见获取AK/SK

新建SMN连接器

  1. 参考创建连接器入口中操作,进入创建连接器页面。
  2. 在左侧列表中,选择“消息通知 > 消息通知服务SMN”,单击“+”。

    图2 新建SMN连接器

  3. 设置SMN对接参数,单击“保存”。

    对接SMN有密钥模式和用户名密码模式两种,请根据实际业务需求进行选择。

    图3 密钥模式
    • 名称:连接器的名称,在服务编排中选用连接器时的一个标识。
    • 访问密钥:用户的访问密钥ID(Access Key ID),配置为前提条件中获取的“AK”取值。
    • 密钥:用户的访问密钥(Secret Access Key),配置为前提条件中获取的“SK”取值。
    • 项目ID:项目的唯一标识,配置为前提条件中获取的“项目ID”取值。
    • 区域:SMN服务的区域。
    • 描述:连接器的描述信息。
    • 打包当前配置:默认为选中,对信息敏感的场景,建议不勾选。

      选中该选项后,应用打包时会将当前配置的连接器信息一并打出。例如,如果应用包发布到运行环境,当前配置默认会被同步到运行环境中。

    图4 用户名密码模式
    • 名称:连接器的名称,在服务编排中选用连接器时的一个标识。
    • 账号名:登录消息通知服务SMN的账号名。请与前提条件中获取的“账号名”取值保持一致。
    • 项目名:所用SMN资源对应区域的项目名。请与前提条件中获取的“项目”取值保持一致。
    • 用户名:使用消息通知服务SMN的用户名。请与前提条件中获取的“IAM用户名”取值保持一致。
    • 密码:登录消息通知服务SMN的用户密码。
    • 项目ID:项目的唯一标识。请与前提条件中获取的“项目ID”取值保持一致。
    • 用户类型:新建连接器所属的用户类型。
    • 签发ID:短信内容中,包含的短信签名对应的ID。当“用户类型”为“企业用户”时,该参数可见且需要配置。请从SMN获取,不填默认为华为云企业用户。
    • 区域:SMN服务的区域。
    • 描述:连接器的描述信息。
    • 打包当前配置:默认为选中,对信息敏感的场景,建议不勾选。

      选中该选项后,应用打包时会将当前配置的连接器信息一并打出。例如,如果应用包发布到运行环境,当前配置默认会被同步到运行环境中。

  4. (可选)测试是否能发送短信。

    1. 在连接器详情页面,单击“发送测试”。
    2. 输入接收者手机号码和短信内容,单击“发送”。

      接收者收到短信,表示测试成功。

在服务编排中调用连接器

在服务编排中,调用连接器,实现与华为云的消息通知服务SMN的对接。

  1. 参考如何开发服务编排中操作,创建一个空白服务编排。

    图5 添加服务编排

  2. 在服务编排设计页面左侧,选择“连接器 > 消息通知”,拖拽“SMN”图元至画布中。

    SMN是系统预置的,与SMN对接的短信发送接口。

    图6 拖拽SMN图元至画布中

  3. 选中SMN图元,设置基本信息。

    图7 基本信息
    • 标签:图元在页面显示的名称。
    • 名称:图元在系统中的唯一标识,不能和其他图元相同。
    • 连接器:该服务编排使用的连接器的名称。

  4. 单击,设置调用SMN参数。

    图8 配置SMN
    • 动作:设置为“SMSSendSMS”,是系统预置的短信发送接口。
    • 输入参数:设置接口的输入参数。
      • “目标”设置为“endPoint”时:请在“源”中,配置短信接收者手机号,可定义为一个输入型变量“{!Phone}”。
      • “目标”设置为“message”时:请在“源”中,配置短信内容,可定义为一个输入型变量“{!Message}”。
    • 输出参数:设置接口的输出参数。“源”设置为“result”,“目标”用于接收短信发送结果(是否成功发送),必须定义一个空实例的结构变量来进行接收。

  5. 在服务编排页面左侧,选择“逻辑”,拖拽“决策”图元至画布中。

    决策是对当前条件进行判断,根据判断的结果决定执行何种操作,类似if语句的判断。

    当短信发送成功时,系统会将“resCode”赋值为“0”,这里创建Decision判断“resCode”是否为“0”,来输出发送是否成功的标识(例如“sendFlag”)从而进行后续操作。

    1. 单击,单击公式后的,增加“GetResultCode”公式变量,表达式为“GET({!result},"resCode")”,用于接收短信发送结果。
      图9 配置“GetResultCode”公式变量
    2. 配置“决策”的成功分支,即success表示“resCode”为“0”,短信发送成功分支。
      图10 配置“决策”成功分支
    3. 配置“决策”的失败分支,即error表示其他分支,即短信发送失败。
      图11 配置“error”分支

  6. 在服务编排页面左侧,选择“逻辑”,拖拽“赋值”图元至画布中,并进行配置。

    创建一个普通变量“sendFlag”。赋值是创建变量的图元,主要作用是给变量赋值。这里增加符合“success”分支的操作,短信发送成功,输出成功标识。

    1. 单击,单击变量后的,新建一个普通变量“sendFlag”。
    2. 单击,配置符合“success”的赋值操作。
    图12 赋值

  7. 单击,配置符合“error”的赋值操作。

    图13 配置赋值操作

  8. 图14所示,连接所有图元。

    图14 连接元素

  9. 单击服务编排设计页面空白区域,选择,设置服务编排入参和出参。

    图15 设置服务编排入参和出参

  10. 单击页面上方的,保存服务编排。
  11. 保存成功后,单击,运行服务编排。
  12. 设置输入参数(接受者号码和短信内容),单击“运行”

    图16 运行服务编排
    图17所示,表示发送成功。
    图17 发送成功

相关文档