集成短信服务SMS

云工作流支持将消息通过短信服务 SMS(Short Message Service)对外发送到手机短信。本文介绍云工作流集成短信服务的示例代码、参数说明、返回值说明和支持的集成模式。

示例代码

以下为一个典型的云工作流集成短信服务的示例代码片段。

Type: StateMachine
Name: MyWorkflow
SpecVersion: v1
StartAt: SendSms
States:
  - Type: Task
    Name: SendSms
    Action: SMS:SendSms
    TaskMode: RequestComplete
    Parameters:
      phoneNumbers: "1505818****"
      signName: the****
      templateCode: SMS_463******
      templateParam:
        code: 12345678
    End: true

代码解析如下。

参数说明

参数名称

是否必选

参数说明

示例值

phoneNumbers

接收短信的手机号码。手机号码格式如下:

  • 国内短信:+/+86/0086/86或无任何前缀的11位手机号码,例如1390000\*\*\*\*。

  • 国际/港澳台:国际区号+号码,例如852000012\*\*\*\*。

支持对多个手机号码发送短信,手机号码之间以半角逗号(,)分隔。上限为1000个手机号码。批量调用相对于单条调用及时性稍有延迟。

1390000****

signName

短信签名名称。您可以登录短息服务控制台,在左侧导航栏,选择国内消息国际/港澳台消息,然后在签名管理页签获取。

说明

必须是已添加、并通过审核的短信签名。更多短信签名规范,请参见短信签名规范

阿里云

templateCode

短信模板Code。您可以登录短息服务控制台,在左侧导航栏,选择国内消息国际/港澳台消息,然后在模板管理页签查看。

说明

必须是已添加、并通过审核的短信模板,且发送国际/港澳台消息时,请使用国际/港澳台短信模板。

SMS_15305****

templateParam

短信模板变量对应的实际值。支持传入多个参数,例如{"name":"张*","number":"1390000\*\*\*\*"}。

  • 如果JSON中需要带换行符,请参照标准的JSON协议处理。

  • 模板变量规范,请参见短信模板规范

templateParam:
  key1: value1
  key2: value2

返回值说明

业务请求的返回结果,会被包装在一个JSON对象中,示例如下。

{
    "EntryList":{
        "BizId":"176920698********",
        "Code":"OK",
        "Message":"OK",
        "RequestId":"78FF8E83-E133-545F-8B02-********"
    },
    "Headers":{
        "access-control-allow-origin":"*",
        "access-control-expose-headers":"*",
        "connection":"keep-alive",
        "content-length":"110",
        "content-type":"application/json;charset=utf-8",
        "date":"Wed, 25 Oct 2024 02:45:10 GMT",
        "etag":"1t7zGBmxXHA2QlF2********",
        "keep-alive":"timeout=25",
        "x-acs-request-id":"78FF8E83-E133-545F-8B02-********"",
        "x-acs-trace-id":"a91f039d47eb8a7b8ffd68********""
    },
    "StatusCode":200
}

执行模式

云工作流集成短信服务时,支持请求响应(RequestComplete)等待用户自定义回调(WaitForCustomCallback)两种集成模式。

RequestComplete

云工作流短信服务发送消息后,即视为当前Task完成,并以短信服务平台的返回值作为当前节点的输出。

WaitForCustomCallback

发起SMS短信发送请求后,当前Task进入挂起状态。直到用户调用ReportTaskSucceeded - 汇报指定的任务执行成功ReportTaskFailed - 汇报指定的任务执行失败接口返回执行结果后,再推进流程的执行。

用户需要使用$Context.Current.TaskToken表达式,将其作为回调平台的Token,然后继续推进流程执行。