短信插件简介

发布版本:1.88

不同的客户的短信供应商可能都不同,DMHub支持通过插件形式发送短信。您可以通过插件满足系统现有所有功能,比如群发短信,自动流程发送短信,测试发送短信, 发送验证码,以及发送明细管理,发送量发送速率管控等等。做到这些您的插件需要提供两个接口: 1.群发短信接口 2.发送验证码接口 以及调用DMHub的 发送短信回执接口 以完成发送状态上报。

安全说明

由于DMHub可能是通过公网访问短信插件的接口,因此需要一定的安全校验。目前插件支持两种安全校验。

1.生成签名: DMHub在请求插件接口时会带有以下parameters

    POST ${url}/sms/batch?appId=${appId}&timestamp=${timestamp}&signature=${signature}

parameters说明

名称类型描述实例
urlString在短信插件平台中配置的插件服务地址http://localhost:1234/
appIdString在短信插件平台中配置的appIdcl001116d62
timestampString当前时间,格式为yyyyMMddHHmmss,时间为UTC时间20210308131501
signatureString用于权限校验的签名,计算方法 org.apache.commons.codec.digest.DigestUtils.md5Hex("${appId}${appSecret}${timestamp}"),appSecret是在短信插件平台设置的密钥。插件在验证签名是否正确的同时需要验证timestamp是否过期。832bf922568fdd7849b4dba6721973ee

2.阿里云api gateway:

该方式只需要在插件平台正确的配置阿里云网关的appKey和appSecret即可。详细请见阿里云网关

插件接口说明

1.群发短信接口

格式

POST ${url}/sms/batch

请求体

DMHub的短信有模版的概念,模版内以客户的属性或身份作为变量,通过模版+属性变量的方式来达到每个人收到的短信都可能不一样的效果。而有些客户认为的敏感信息是不会存储在DMHub 中,比如手机号码、家庭住址等等,而插件可以获取到这些敏感信息。这时候就需要在插件内部组装模版+变量。因此请求体分为两种:

1.当在插件平台勾选了 '在插件内拼装模版和变量'时:

{
 "templateId":5355,
 "templateText":"位于${attr.attr1@10!""}的客户${name@3!""}您好,欢迎体验DMHub! 回TD退订",
 "batchId":"s5355-4",
 "audienceIdType":"mobile",
 "data":[
     {
         "attr":{
             "attr1@10":"上海市,乐山路"
         },
         "name@3":"Convertlab",
         "_audienceId":"199xxxx6782"
     },
     {
         "attr":{
             "attr1@10":"上海市,龙耀路"
         },
         "name@3":"Convertwork",
         "_audienceId":"133xxxx0592"
     }
  ]
}

参数说明

名称类型描述
templateIdInt短信模版ID
templateTextString模版内容
batchIdString发送批次号
audienceIdTypeString触达ID类型,当为客户手机号时为mobile,当为手机号身份时为customerIdentity.mobile,诸如此类
dataList参数列表
_audienceIdString触达ID
attrMap客户自定义属性
name@3String客户姓名

2.未勾选 '在插件内拼装模版和变量'时

 {
  "templateId":5355,
  "templateText":"位于${attr.attr1@10!""}的客户${name@3!""}您好,欢迎体验DMHub! 回TD退订",
  "batchId":"s5355-4",
  "audienceIdType":"mobile",
  "data":[
      {
          "smsMessage":"上海市,乐山路的客户Convertlab您好,欢迎体验DMHub! 回TD退订",
          "_audienceId":"199xxxx6782"
      },
      {
          "smsMessage":"上海市,龙耀路的客户Convertwork您好,欢迎体验DMHub! 回TD退订",
          "_audienceId":"133xxxx0592"
      }
   ]
}

参数说明

名称类型描述
templateIdInt短信模版ID
templateTextString模版内容
batchIdString发送批次号
audienceIdTypeString触达ID类型,当为客户手机号时为mobile,当为手机号身份时为customerIdentity.mobile,诸如此类
smsMessageString每个客户的发送文本
_audienceIdString触达ID

接口返回

插件内部发送短信最好是异步发送,通过一些消息组件做到降低接口延迟,提高并行度。

在接口处理成功时需要返回

{"code":"SUCCESS"}

在接口处理失败后需要按照标准错误格式返回,例如:

{"error":{"code":"400001","message":"invalid signature"}}

2.发送验证码接口

格式

POST ${url}/sms/verifyCode

请求体

{"mobile":"199xxxx6782","code":"123456"}

参数说明

名称类型描述
mobileString手机号码
codeString验证码

发送状态回执

通常在发送短信时,接口调用成功并不意味着真的发送成功了,很可能由于退订、黑名单、手机关机、不在服务区等等因素导致一批中有部分手机号码发送失败。 这时就需要通过状态回执的方式来通知各个号码的发送结果,详见发送短信状态回执

系统通知

发布版本:2.5

系统通知短信可以支持通过插件发送,实现短信通道的定制。该功能的实现需要开启相应的功能开关。

短信通知接口

格式

POST ${url}/sms/plugin/send

请求体

发送系统通知需要您的插件具备模版类型。通知模版示例、模版类型和对应的变量请下载文件进行查看。模版下载

例如:租户即将到期通知 { "signature": "【Convertlab】" "name": "12", "tenantId": "10113", "dateEnd": "2022-03-10", "smsTemplateType": "TenantExpiring" }

参数说明

名称类型描述
signatureString签名
nameString租户名称
tenantIdint租户Id
dateEndString到期时间
smsTemplateTypeString模版类型