私有部署版集成【阿里云短信】(系列二),自主集成明道云验证码发送

集成 阿里云短信自主集成验证码  收藏
2 / 97

【注】:图片有点小,浏览器比例放大即可清楚查看

1、前提:自主集成,验证码发送将失效

由于私有部署,自主集成之后,明道云中【注册】【找回密码】验证码功能将失效。

见:https://docs.pd.mingdao.com/faq/sms.html

image.png

2、处理思路

分析:由于注册短信验证码,模板格式是固定的,也就是当发送验证码时,明道云会发送一个 JSON 给配置的 WebhookUrl,如下:

{
    "Type": 1,
    "Data": {
        "Mobiles": ["13480925821"], // 接收消息的手机号列表
        "Message": "您的验证码是XXXX,感谢您的使用!",
        "Signature": ""
    }
}

通过分析,

  1. 如果是签名为空
  2. 内容格式是这样:“您的验证码是 XXXX,感谢您的使用!”

则说明是明道云自带发送的验证码

处理思路:

  1. 阿里云创建模板,格式为:“您的验证码是 ${code},感谢您的使用!”
  2. 在 WebhookUrl 接收到消息之后,对验证码内容,进行模板匹配,匹配的条件为:(签名为空 and 格式是“您的验证码是 XXXX,感谢您的使用!”)
  3. 如果如上 2 满足,则调用阿里云指定模板的发送短信接口,否则调用其他自定义模板

3、实现步骤

  1. 阿里云上申请和明道云验证码内容一样的模板,如下:
    image.png
  2. 在 WebhookUrl 对应的工作流中接收参数,并处理成符合阿里云短信的参数格式

整体流程如下:
工作流编辑---工作流发送短信.png
详细步骤:

  • Webhook 触发:
    image.png
  • 分支:
    image.png
  • 从工作表获取:
    image.png
  • 根据短信内容提取模板参数:
    image.png
    代码块:
import re
import json

template=input['template_content']
str_reg = re.sub(r'\${(.*?)}','(?P<\\1>.*?)',template)

params_reg_match = re.match(str_reg, input['data_message'])
params_reg_groupdict = params_reg_match.groupdict()
json_str = json.dumps(params_reg_groupdict)

output = {'params_str': json_str}
  • 根据手机号码数组提取模板参数
    image.png
    代码块:
import json
mobiles_json = json.loads(input['data_mobiles'])
mobiles_str=','.join(mobiles_json)
output = {'mobiles_str': mobiles_str}
  • 【阿里云】发送短信
    image.png

最终效果:
image.png