现在大家经常会看到非常多贷款相关的产品,比如度小满,蚂蚁花呗借呗。如果大家使用过这些金融产品,特别是使用的是android手机的话,那肯定会遇到这样一个情况,即你贷款的时候,app应用会让提示你上传你的所有短信记录(这里其实吐槽下,使用安卓的朋友,其实一般app应用都不会直接提示你要获取你的所有短信记录,这些app都是在后台偷偷的把你的所有短信上传到服务器里面进行的数据分析)。所以这里我们就有一个场景,根据用户上传的短信,逐条分析这些短信,并且给这些短信打上相关的标签,供后续的风控进行使用。以这样一个场景我们距离来说,他的流程主要是:
1、上传短信 2、触发webhook 3、查询所有短信内容 4、逐条给ai,让ai打标签 5、把打的标签插入到数据库
以上的流程就是这样子。那么我们使用n8n工作流怎么实现这个业务场景的自动化呢?下面看看我这里组织的n8n的工作流,如下图:
下面我们来逐个拆解下我制作的这个工作流教程。
一、webhook触发节点
这个流程自动化其实我们希望的是提供一个webhook,app这边如果上传了短信的话,我们直接调用下这个webhook就让他自动执行自动化。所以我们在第一步上添加一个webhook节点
这个webhook节点会自动提供一个http的接口,但是他不能指定接收的参数,这些参数都是可以自己自定义的,比如我们请求这个http接口,然后传递一个userid的参数
在webhook的节点上进行测试,会发现输出里面已经把userid给输出出去了:
这就代表这里的webhook是可以接收任何参数的,同时还会把接受到的所有参数都向后面的节点进行传递。
二、添加mysql节点
接下来我们需要添加一个mysql节点,他的逻辑是:根据前一个节点传递进来的userid,在数据库中查询这个人的所有短信,所以添加一个mysql查询节点即可,示例如下:
这个节点的核心就是查询数据库,然后把对应的字段给查询出来,这里我们选择的是excute a sql query,然后在sql里面使用了上一个节点输出的userid。经过测试,我们可以看到右侧是查询出来了数据。
三、添加ai agent 节点
这一步就是我们的核心了,即上一步我们拿到了所有的短信记录,这里我们需要把这些短信记录传递给ai,然后让ai帮我们打标签,所以这里我们添加一个ai agent节点,然后添加一个模型,这里我们模型还是使用qwen3-8b(因为免费,哈哈)。
这里我们添加了ai模型,我们肯定是不希望直接与他对话,这样他返回的内容其实不是我们想要的,因为我们只需要标签值,不要其他的废话,同时我们还希望他给我们拼接成相关的数据结构,方便后面进行解析和入库,所以这里我们需要修改下ai agent,需要给他一个提示词,比如我们现在的场景是金融风控,所以我们给的提示词是:
请根据这些短信解析出用户催收相关信息,如果存在还款金额和预期金额则解析出来,其中催收类型描述:
1、类型: REPAYMENT, 名称: 还款短信, 描述: 短信内容表示用户有成功支付还款的行为;
2、类型: REPAYMENT_TIPS, 名称: 还款提醒, 描述: 短信内容表示用户即将到期、当日到期,需要支付还款的短信。;
3、类型: COLLECTION, 名称: 催收短信, 描述: 短信内容提示用户未支付还款,且有逾期行为。短信用词偏严肃、警告或威胁,主要目的是催促客户尽快归还欠款。;
4、类型: OTHER, 名称: 其他, 描述:
以下是短信内容:{{ $json.content }} 要求你解析之后,查看当前短信对应上诉4个类型的哪一个,返回一个固定的json格式,把类型填充到collectionType值里面去
{
"userid": {{ $json.user_id }},
"smsid": {{ $json.id }},
"collectionType": 这里的值为你根据短信判断属于哪种类型
}
输出值只需要上诉的json结果具体如下图:
最后我们可以测试下,可以看到右侧的输出的图里面返回了对应的json字符串
以上说明我们现在已经利用ai,把标签给打上去了,同时还添加了对应的其他字段,比如userid,sms_id等。以上我们就完成了使用ai帮我们打标签的目的。
备注:
1、这里使用自定义提示词的话,需要把类型修改为:Define below
四、添加code节点解析数据
上一步的输出我们可以看到,ai agent返回数据的时候是返回的字符串,并且把这个字符串塞到了output下面,这里json字符串是没法直接使用的,需要给他转换成纯json,所以这里需要一个code节点,我们用javascript进行编写即可,这里的代码我也不会写,都是扔给ai来写的,我这里用的腾讯元宝,最后ai写出来的代码是:
// 获取所有输入项目
const inputItems = $input.all();
// 用于存储所有解析后的结果
const parsedResults = [];
// 遍历所有输入项目
for (const item of inputItems) {
try {
// 获取当前项目的output字符串
const jsonString = item.json.output;
// 解析JSON字符串
const parsedJson = JSON.parse(jsonString);
// 将解析结果添加到数组
parsedResults.push(parsedJson);
} catch (error) {
}
}
// 返回包含所有解析结果的数组
return [{
json: {
aisms_tags: parsedResults
}
}];我们把他粘贴进去,执行测试下,看看结果:
可以看到右侧的输出不再是json字符串,而是完全的json结构的。
备注:
在n8n里面,不能直接使用json字符串里面的数据进行解析,只能使用json结构的字段进行解析。所以一定要把他转换成json结构,这样n8n才能使用到。
五、添加split out节点
上一个节点可以看到组装出来的json结构里面的object节点不是在第一级的数据节点上,
所以无法实现后续的数据库插入操作(因为解析的话,选择变量,他会标注插入具体位置的值,比如第3个object的值,不是每一个object的值,最后无法实现插入所有的数据),所以这里我们需要split out 节点把这里的aisms_tags给他拆出来,把所有的object都放到一级数组节点下,如下图:
点击测试可以看到所有的object对象都在一级数组里面了,是不是很方便?
六、插入数据库
到这里我们前置操作就全部完成了,直接添加一个mysql的节点,然后选择insert rows in a table节点即可,然后进行字段的配置:
还是一样的拖拉拽就可以了,配置完记得测试一下并且保存。
七、测试
到此我们整个工作流就完成了,我们查看数据库的原始数据:
10130这个用户的短信内容比较多,我们使用10130来进行测试。
备注:
1、以上数据全是用程序模拟出来的数据,非用户个人隐私信息,请仔细甄别。
然后我们运行整个工作流
使用api post进行请求,传递的用户是10130,
然后可以看到工作流正在运转
最后等待他执行完成之后
我们查看数据库的内容:
已经成功实现了打标签。
以上就是利用n8n实现金融风控场景,对短信打标签的案例。最后这里提供对应的工作流json,登录即可查看。方便大家进行实战演示。




















还没有评论,来说两句吧...