AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


【附案例源码】把阿里云验证码短信接入到dify中
发布日期:2024-11-05 10:42:59 浏览次数: 1791 来源:提示日记


 dify默认是不可以直接使用验证码短信服务的,如果你想要用短信服务,你就得用云函数写一个api服务进行调用。



本文教程目录:

用阿里云FC云函数手搓一个验证码短信api服务;

讲解短信api在工作流中使用思路。



01



手搓一个验证码短信api服务


首先你得用阿里云账号去购买短信资源包,然后申请签名并通过。


第一步:创建一个云函数



第二步:为函数安装阿里云短信官方依赖包


点击“terminal”,再点击“new terminal”,输入pip安装指令,如下所示:



pip install -t . alibabacloud_dysmsapi20170525==3.0.0


第三步:输入源码


本文示例为了方便大家快速体验,提供一个我个人手搓的源码给大家(编程水准有限,大家不要笑话我)


from flask import Flask, request, jsonifyimport osimport jsonfrom typing import List
from alibabacloud_dysmsapi20170525.client import Client as Dysmsapi20170525Clientfrom alibabacloud_tea_openapi import models as open_api_modelsfrom alibabacloud_dysmsapi20170525 import models as dysmsapi_20170525_modelsfrom alibabacloud_tea_util import models as util_modelsfrom alibabacloud_tea_util.client import Client as UtilClient
REQUEST_ID_HEADER = 'x-fc-request-id'app = Flask(__name__)
class Sample:@staticmethoddef create_client() -> Dysmsapi20170525Client:config = open_api_models.Config(access_key_id=os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'],access_key_secret=os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET'])config.endpoint = 'dysmsapi.aliyuncs.com'return Dysmsapi20170525Client(config)
@app.route('/send-sms', methods=['POST'])def send_sms():try:data = request.get_json()phone_numbers = data.get('phone_numbers')sign_name = data.get('sign_name')template_code = data.get('template_code')template_param_code = data.get('template_param_code')if not all([phone_numbers, sign_name, template_code, template_param_code]):return jsonify({"error": "All fields are required"}), 400
client = Sample.create_client()send_sms_request = dysmsapi_20170525_models.SendSmsRequest(phone_numbers=phone_numbers,sign_name=sign_name,template_code=template_code,template_param=f'{{"code":"{template_param_code}"}}')runtime = util_models.RuntimeOptions()response = client.send_sms_with_options(send_sms_request, runtime)return jsonify({"message": "SMS sent successfully", "response": response.to_map()}), 200
except Exception as error:print(error)return jsonify({"error": str(error)}), 500
if __name__ == '__main__':app.run(host='0.0.0.0', port=9000)


删除掉系统自带的示例代码,复制上述源码并粘贴进去,点击“部署代码”等待完成。


第四步:按照上次的教程,设置好虚拟环境变量和http触发器即可。


【附案例】阿里云FC云函数做成api服务接入到dify中



02


短信验证码在dify中的应用思路


在谈应用之前,我必须要给大家普及一下验证码服务必需的参数都是干什么的:

phone_numbers:接收验证码短信的手机号码,一般是用户的手机号码
sign_name:你在阿里云申请通过的短信签名
template_code:短信内容模版,阿里云有系统默认的验证码模版,如SMS_153660285
template_param_code:验证码,4~6位长度的随机整数,这个整数可以在工作流中用代码节点随机生成


接下来就是工作流中使用http节点了:


发送之后,短信收到的就是这样的。

注意事项:

验证码的随机数生成之后,建议大家用会话变量临时存储起来,当用户输入收到的验证码,再用代码节点写个简单的对比脚本进行验证,验证通过了,才可以执行另外的工作流。

核心逻辑:

创建两个会话变量,分别是state、code。

state变量:默认值为0,表示当前未通过验证
code变量:存储生成的验证码

先用条件判断读取state变量,如果为0,就要求用户输入手机号码,执行http节点,将随机生成的验证码存到code变量中;

再要求用户输入收到的验证码,用代码节点比较code,如果一致,就用变量赋值节点修改state变量值为1,表示已经通过了验证。只有验证通过的会话才能执行另外的工作流分支。

好了,就讲这么多吧,其实很简单,关键是短信验证码的api服务,你需要通过阿里云FC云函数部署好,然后用dify调用就行。


53AI,企业落地应用大模型首选服务商

产品:大模型应用平台+智能体定制开发+落地咨询服务

承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询