【注】:图片有点小,浏览器比例放大即可清楚查看
1、前提:自主集成,验证码发送将失效
由于私有部署,自主集成之后,明道云中【注册】【找回密码】验证码功能将失效。
见:https://docs.pd.mingdao.com/faq/sms.html
2、处理思路
分析:由于注册短信验证码,模板格式是固定的,也就是当发送验证码时,明道云会发送一个 JSON 给配置的 WebhookUrl,如下:
{
"Type": 1,
"Data": {
"Mobiles": ["13480925821"], // 接收消息的手机号列表
"Message": "您的验证码是XXXX,感谢您的使用!",
"Signature": ""
}
}
通过分析,
- 如果是签名为空
- 内容格式是这样:“您的验证码是 XXXX,感谢您的使用!”
则说明是明道云自带发送的验证码
处理思路:
- 阿里云创建模板,格式为:“您的验证码是 ${code},感谢您的使用!”
- 在 WebhookUrl 接收到消息之后,对验证码内容,进行模板匹配,匹配的条件为:(签名为空 and 格式是“您的验证码是 XXXX,感谢您的使用!”)
- 如果如上 2 满足,则调用阿里云指定模板的发送短信接口,否则调用其他自定义模板
3、实现步骤
- 阿里云上申请和明道云验证码内容一样的模板,如下:
- 在 WebhookUrl 对应的工作流中接收参数,并处理成符合阿里云短信的参数格式
整体流程如下:
详细步骤:
- Webhook 触发:
- 分支:
- 从工作表获取:
- 根据短信内容提取模板参数:
代码块:
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}
- 根据手机号码数组提取模板参数
代码块:
import json
mobiles_json = json.loads(input['data_mobiles'])
mobiles_str=','.join(mobiles_json)
output = {'mobiles_str': mobiles_str}
- 【阿里云】发送短信
最终效果: