热爱技术,追求卓越
不断求索,精益求精

客户信息不是「抓」来的:我给企业搭获客智能体时,架构上的五个取舍

前几天有朋友问我,能不能做个智能体,把各个渠道的客户信息”获取”过来。

我问他,”获取”是什么意思。

他说,就是抖音的评论、私信,还有公众号后台那些人,能不能都自动收进来。

我说这活我接不了。他挺意外,觉得我是不是技术不行。

跟技术没关系。是这件事从架构的第一层开始,方向就是错的。

后来这单还是做了,但做法跟他想的不一样。我把过程记下来,给同样在做企业智能体的人参考。

一、第一层取舍:数据是”推”进来的,不是”拉”过来的

新手做这类系统,第一反应是写爬虫或者逆向接口,去各个平台把数据拉回来。

这条路我一开始就没考虑。原因不是怕,是它的技术债太高了。

逆向接口的问题在于,你写的每一个解析逻辑,都绑死在对方当时的页面结构上。对方改一次前端,你的采集器就全废。这种系统你交付出去,就得承诺长期维护,而且你还不知道人家什么时候改。这不是工程问题,这是个必然烂尾的结构。

所以我用的方式是反过来的,叫”收口”。

不去”拉”数据,而是让数据自己”推”进来。

具体做法是每个渠道都用平台官方的、允许的那条路,让用户主动把信息交出来。抖音走企业号私信和开放平台事件,公众号走官方的关注和互动事件,线下走扫码。这些入口各自独立,但它们推过来的事件格式是统一的。

我的程序只干一件事,就是接住这些事件,落进一个统一的客户档案库。

抖音私信 ┐
公众号   ├→ Webhook 收口 → 客户档案库 → 后续处理
线下扫码 ┘

这么做的代价是,你拿到的字段比爬取少。但换来的是这套东西三年后还能跑,不用天天跟着对方改版。

做企业交付,稳定比字段多重要。

二、第二层取舍:不要试图”合并”同一个人

统一收口之后,你会立刻遇到一个看起来必须解决的问题。

同一个人在抖音咨询过,又在公众号留言过,还在线下扫过码。这三条记录要不要合并成一个人?

我一开始写了一套合并逻辑,用手机号做 key,然后老老实实删掉了。

原因有两个。

第一,合并是不可逆操作。你把三条记录并成一条,后来发现判断错了,这数据就找不回来了。企业客户对”客户档案”的准确度要求极高,一次错误合并就可能把两个客户的记录搅在一起,后面所有跟进都是错的。

第二,你没有可靠的合并依据。平台之间不互通,你能拿到的只有昵称、头像这些随时会变的东西。用这种东西做身份判断,出错是常态。

所以我最后保留的是关联,不是合并。原记录一条不动,只在上面加一个”可能指向同一人”的标记。

这个标记是软判断,可以推翻,可以撤销。系统给你一个提示,人来决定。这比让程序自信地做错事要好得多。

三、第三层取舍:分层要能”解释”

客户分层是这个系统最值钱的部分,但也是最容易做废的部分。

第一版我用了很直接的做法,让模型读一遍对话,”输出 A/B/C 三个等级之一”。跑起来效果看着挺好,但我把它废了。

因为老板会问一个问题,”为什么这个客户是 A 类”。

如果模型答不上来,或者给的理由每次都不一样,那这个分层就不会被信任。一个没人信的分层系统,等于没有。

改版之后,我不让模型直接输出等级,而是让它输出判断依据,等级是后面用规则算出来的:

依据项 取值 权重
是否问过具体型号 / 规格是 / 否高
是否主动留下联系方式是 / 否高
是否问过价格和交期是 / 否中
对话轮次数字低

最后那个”为什么是 A 类”,答案是现成的。老板不信,可以自己调权重。

给人一个能调的旋钮,比给一个准确率更高的黑盒有用。

四、第四层取舍:提醒不是定时任务,是状态机

“客户加了微信就没人管了”,这个需求听起来很简单,我一开始也这么以为。

我写了个定时任务,每天扫一遍,超过七天没互动的发个提醒。上线之后基本没人看。

问题不在提醒本身,在它没有上下文。一条”张三七天没联系了”,老板看了没什么可做的。

后来我把它改成了状态机。每个客户身上挂一个当前状态,状态之间有明确的迁移条件:

新线索 → 已首次回复 → 已报价 → 待跟进 → 已成交 / 已流失

提醒的内容不再是”七天没联系”,而是”张三停在『已报价』已经五天,下一步该做的动作是确认交期”。

系统要说的不是有人被忘了,而是这个人卡在哪一步,下一步该干什么。

这个改动的代码量很小,但它是这个系统里客户感知最明显的一块,因为老板第一次觉得是系统在帮他记事,而不是多了一个要看的通知。

五、第五层取舍:数据归属必须写进合同

最后这条不是技术问题,但它影响架构。

客户的数据存在哪里,能不能导出,合作终止之后怎么处理,这几件事必须在动工之前就定下来,而且写进合同。

我见过不少人先做系统,数据顺手存在自己服务器上,出了问题再去跟客户扯。这不是能力问题,是给自己留了个随时会爆的雷。

我现在的做法是,默认部署在客户自己可控的环境里。如果客户要求托管,那托管协议里单独写清数据条款。

这一条不写代码,但它决定了你后面系统长什么样。

最后

这五个取舍加起来,其实说的是同一件事。

不要试图去”获取”数据,要想办法让数据自己流进来。

这句话听着像是绕,但它是这行里少有的、既省事又不出事的做法。爬来的数据你心里没底,主动来的用户,本来就比爬来的准十倍。

我现在给企业做这类系统,入口加分层两块先落地,三五天能演示,客户看一眼就明白这玩意能干嘛。

至于那些听起来更刺激的功能,先等等。它们大多数不是技术难,是根本不成立。


本文涉及的所有渠道对接方式,均基于各平台官方开放接口。

赞(0)
未经允许不得转载:LoveCTO-技术天天练,程序员的 AI 实战笔记 » 客户信息不是「抓」来的:我给企业搭获客智能体时,架构上的五个取舍

热爱技术 追求卓越 精益求精

登录

找回密码

注册