mao

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

maoLv.2入道 发布于 最后回复 集成 阿里云短信自主集成验证码
2 回复2734 浏览
【注】:图片有点小,浏览器比例放大即可清楚查看 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} 【阿里云】发送短信 [图片] 最终效果: [图片]