我接手这个需求的时候,第一反应是:客服机器人不是用来回答问题的吗?怎么还要主动发券?但实际业务场景里,这种“看似越权”的需求往往是增长团队最后捞人的一根稻草。电商平台积压了大量沉睡客户——买过几次、加过购物车、后来二三十天没动静,触达方式无非是短信和推送,已经麻木了。于是就有了这个项目:让客服机器人在识别到购买意图的那一刻,主动弹出一张优惠券,把人重新拉回成交路径。上线跑了一个季度,唤醒率从原来的百分之一点几提到接近百分之五,ROI算下来还不错。但过程远比想象中复杂,这里把我自己的思路、踩过的坑、最后沉淀下来的方案完整写出来。1. 从“被动接线员”到“主动销售员”:改造前先想清楚三件事1.1 唤醒沉睡客户,本质上是挽回流量,不是单纯发券很多人一听“唤醒沉睡客户”就默认等于“发券”,这其实是个误区。沉睡客户之所以沉睡,可能是商品价格没打动他,可能是竞品把他抢走了,也可能只是单纯忘了回来。券只是催化剂,不是原因。我做这个项目之前先拉了一批数据:过去一年有成交、最近30天无访问且无购买的用户,再按历史客单价和访问频次分了几个群体。结果发现,其中大概有将近四成的人还在持续访问商品页,只是没有加购、没有下单。这批人其实还在“犹豫区”,根本不是沉睡,只是缺少一个临门一脚的推力。所以与其把所有沉默用户都当成流失用户,不如先找出那些还在平台上露出动作、但没完成转化的人群,让客服机器人主动介入。回归到项目本质,就是想尽办法把已经花过的流量成本再榨出一轮价值,发券只是手段。1.2 主动发券这件事,难的不是发券,是“主动”两个字传统客服机器人是请求-响应的模式:用户发起对话,机器人回复。主动发券意味着机器人要在用户没有发起对话的时候,自己判断“现在是不是该开口”,然后找到合适的触达渠道,说出合适的话。这里涉及三个新能力:用户意图识别、营销策略判断、触达时机决策。这三个能力任何一个做不好,发出去的券要么石沉大海,要么变成骚扰。我见过不少团队直接把客服机器人改造成定时群发器,每天固定给所有沉睡用户发同一张券。结果用户不仅没回来,反而退订率上升。原因很简单:你没有考虑用户此刻的状态。一个正在逛竞品页面的用户、一个刚把商品加入购物车的用户、一个已经一个月没打开App的用户,他们需要的触达方式完全不同。所以改造的第一步不是写代码,而是建立一套“什么情况下可以触发主动营销”的规则框架。1.3 先判断你的场景适不适合做这件事,别为了技术而技术不是所有平台都适合让客服机器人主动发券。如果业务体量很小,用户总数不到一万,沉睡用户基数不够大,做这套系统的ROI可能很低。如果平台本身没有足够的用户行为数据,比如看不到浏览记录、库存记录、订单记录,那意图识别就无从谈起。还有一个关键前提:必须有可以承载优惠券发放的闭环系统,比如卡券系统、订单系统、用户标签系统。我当时之所以敢接这个项目,是因为平台已经有了完整的用户行为埋点和优惠券服务,客服机器人只是外挂了一个决策模块。如果你的基础系统连用户最近一次登录时间都拿不到,那先把数据管道补齐再谈智能Agent。2. 智能Agent识别购买意图的核心拆解2.1 购买意图到底怎么定义?别只看聊天记录所谓“购买意图”,我在这里的定义不是用户嘴上说“我要买”,而是综合行为数据和会话数据之后,判断用户“在近期成交的可能性是否显著高于随机水平”。单纯依靠客服机器人的聊天记录会漏掉大量用户,因为大部分沉睡客户根本不会主动来找客服。他们可能只是在商品详情页反复滑,把所有SKU都看了一遍,然后把页面关了。这些动作都是意图信号,但不会出现在会话里。所以我在项目里把意图信号分成了两类:显性信号和隐性信号。显性信号包括用户主动向客服询问优惠活动、询问是否能便宜一点、询问发货时间,还包括用户手动输入“券”“折扣”“满减”这类关键词。隐性信号包括连续三次查看同一商品、加入购物车后一天内没付款、收藏夹里新增商品、从分享链接进入页面等等。这些信号全部可以通过行为埋点获取,和客服机器人的会话内容一拼,才是完整的意图画像。2.2 意图识别模型的基本路径:先规则后模型,别上来就上深度学习做意图识别的时候,团队里有人提议直接上大模型,把用户会话扔进去做语义理解。但我坚持先搭一套规则加简单机器学习的系统。原因很实际:项目排期只有两周,大模型的结果不可解释,业务方不敢直接用它来决定“要不要给用户送钱”。我最后采用的是三层判断:第一层是规则层,把显性信号快速命中,例如用户对话中出现“优惠”“券”等词,或者行为上触发“加购未支付”事件,直接给一个较高的意图分。第二层是特征层,把用户最近7天的访问天数、访问深度、加购数量、收藏数量、历史成交客单价等特征拼接成一个向量,用一个轻量级的梯度提升树模型打分。第三层是策略层,把规则命中的信号和模型打出的意图分做加权,得到一个最终意图分,只有超过阈值才触发发券动作。这个方案的好处是每一层都可以单独调整。规则层负责召回,模型层负责排序,策略层负责兜底。2.3 识别之后还要看时机:什么时间“开口”成功率最高同样的用户,同样的优惠券,上午十点发和晚上十点发的效果完全不一样。我翻过后台数据,发现这个平台的沉睡用户活跃高峰是晚上八点到十一点,恰好是刷手机放松的时间。如果客服机器人选择在上午九点半主动弹窗,用户正在上班,大概率直接划掉,甚至会觉得被打扰。所以我在决策引擎里加了一个“可触达时段”字段,默认只在用户最近7天的活跃时段发起主动对话。另外还有一个时机判断是围绕“生命周期节点”做的:用户加入购物车后6小时、用户浏览同一商品超过5次、用户领取过优惠券但过了24小时仍未使用。这些节点对应的意图强度不同,券的面额和话术也应该不同。我后面专门建了一张配置表,每个节点对应不同的动作,而不是见到一个疑似意图就发券。3. 从识别到发券:实操中的完整流程与关键参数3.1 第一步:给客服机器人加上“主动发起对话”的通道原来的客服机器人只在用户进入客服会话界面时才响应,这是被动模式。要主动发券,首先得有一个主动触达用户的渠道。我的实现方式是给机器人的前端SDK加了一个“主动消息”的接口。当决策引擎输出“可以发券”的结论时,机器人会在用户正在浏览的页面右下角弹出一个气泡,气泡文案是一句简短的引导语,比如“检测到您购物车里有商品还没结算,这里有一张券也许用得上”。用户点击气泡后,会话自动切入客服机器人,机器人再根据用户的具体状态发送优惠券卡片。这里要注意,不是所有页面都适合弹气泡。用户在结算页弹出气泡会显得非常碍事;而在商品详情页弹出,用户接受度会高很多。所以我在配置里设置了页面维度的白名单,只允许在商品详情页、购物车页、首页信息流刷到第三屏以后触发。3.2 第二步:设计一套不发错券的规则引擎发错券是这种系统最容易翻车的环节。什么叫发错券?给一个客单价很高的用户发一张满10减5的券,他根本看不上;给一个只浏览过低价商品的用户发满300减50的券,他用了也凑不到门槛。为了避免这种情况,我设计了一个最小可用的规则引擎,核心逻辑可以用一段伪代码表示:def decide_coupon(user_profile, intent_signals, product_ctx): # 1. 判断用户是否在可触达名单内 if user_profile["status"] != "sleep" and user_profile["status"] != "pending": return None if user_profile["in_blacklist"] or user_profile["recent_coupon_sent"]: return None # 2. 计算意图分 intent_score = 0 if intent_signals["ask_coupon"]: intent_score += 0.4 if intent_signals["cart_without_pay"]: intent_score += 0.3 if intent_signals["repeat_view"] >= 5: intent_score += 0.2 if user_profile["days_since_last_order"] > 30: intent_score += 0.1 if intent_score < 0.6: return None # 3. 基于用户历史客单价匹配券模板 avg_order = user_profile["avg_order_value"] if avg_order >= 300: template = "full_300_minus_50" elif avg_order >= 100: template = "full_100_minus_20" else: template = "full_50_minus_8" # 4. 判断库存/预算 if not coupon_service.in_budget(template): return None return coupon_service.create_coupon(template, scene="intent_wake_up")这段逻辑看起来简单,但实际落地时要注意几个细节。recent_coupon_sent这个字段必须设置时间窗口,比如3天内发过券就不再发送,否则用户可能一天收到四五张券,立刻产生警惕。ask_coupon这类信号要设置有效期,比如会话结束后30分钟内有效,过期不算。券模板的字段需要绑定到具体商品品类,如果一个用户历史只买数码产品,就不能给他发护肤品的券。3.3 第三步:优惠券的“剂量”与“话术”设计发券不是把券丢出去就完了,要像医生开药一样考虑剂量。我重点调过三个参数:券面门槛、有效期限、使用限制。面额方面,通过A/B测试发现,对于沉睡客户,面额比历史客单价高出10%-20%的券,转化率提升明显;但再往上就进入边际递减区间。比如历史客单价120元,发满120减30效果最好,发满120减60反而会带来大量垃圾订单,很多人专门为了套券买一些不必要的东西,退货率也上升。有效期限方面,7天之内核销率最高,超过14天用户基本遗忘。使用限制方面,一开始我们没有做品类限制,结果很多人用券去买纸巾等低毛利商品,导致活动亏损。后来加了“仅限用户最近加购的同类目商品”限制,亏损立刻降下来了。话术上,我用的是“简洁+利益点+低压迫感”的模板,比如“您购物车里的商品还在等您,这里有张专属券,今天用掉刚好合适”,比“亲,您有一张优惠券即将过期,快来使用吧”这种催促进攻式话术点击率高出不少。3.4 第四步:效果评估指标与闭环优化项目上线后,不能只看唤醒率。我构建了一套指标体系,核心关注四个数字:唤醒率、券核销率、活动ROI、用户打扰率。唤醒率指主动触达后7天内产生下单行为的用户占触达用户的比例;券核销率指触达用户中实际使用优惠券完成订单的比例;ROI计算方式是(唤醒用户带来的GMV - 优惠券成本 - 触达成本)/优惠券成本;打扰率则通过用户主动关闭客服会话、删除App、退订消息的比例来间接衡量。刚开始跑的时候,唤醒率只有1.8%,ROI不到2,看起来不太行。后来把整个漏斗拆开才发现,问题出在触达之后的第一句话:机器人发出气泡文案,用户点击了,但进入会话后的开场白不够自然,很多人看完就退了。换了一版更口语化的开场白之后,唤醒率直接翻倍。这个闭环优化的核心是:不能只看算法模型,还要看触达链路里每一个文案、页面、按钮是否顺滑。4. 实测中踩过的坑与问题排查实录4.1 为什么识别到意图却不敢发券?策略和风控的权衡上线第一周,决策引擎识别出大量“高意图”用户,但发券成功率很低。查了一圈发现,是风控系统在拦。用户被识别为“疑似羊毛党”,比如同一个设备号关联了多个账号、历史订单大量使用优惠券、频繁退货等。风控系统把这些用户直接列入黑名单,我的规则引擎拿到的用户画像里in_blacklist为真,自然不发券。这其实是对的,但从运营角度看有点可惜,因为部分高意图用户可能是正常消费者,却被误杀。解决方案是我和风控团队协商,增加了一个灰度标签:对于“疑似羊毛党”但历史客单价较高、距上次下单超过60天的用户,允许发送小额低门槛券,同时设置单用户仅可领取一次。这样既控制了风险,又保留了唤回的机会。踩过这个坑之后我明白了:智能Agent的“智能”不止在于发券,还在于知道哪些券不该发。4.2 发券后用户更沉默?触达时机和频次限制没有做好项目进行到第二个月,我们发现一个奇怪现象:部分用户收到券后不仅没用,反而近7天访问时长下降了。对比用户反馈才明白,他们觉得平台是在“监视自己”——明明是刚说完想买一个东西,隔天机器人就来发券,这种巧合让人不适。这个问题的根源是触达时机太“精准”,完全没有留给用户缓冲。解决办法有两个:一是把“主动触达”和“用户当前会话”绑定,只在用户当前正在平台上浏览时触发,不在用户离线时通过App推送发券(因为离线推送会让人感觉被监控)。二是增加冷静期,用户主动表达购买意图后,至少等2小时再触发,给用户一个自然决策的时间。调整之后,打扰率明显下降,核销率反而上升,因为那些真正有需求的人最终还是会把券用掉。4.3 意图识别模型频繁误判?数据标注与阈值调整模型上线后,每周都会收到运营反馈:“这个用户明明就是来问退货的,怎么给他发券了?”我分析了一批误判样本,发现主要原因是用户会话里的“优惠”相关的词被过度召回。比如用户说“你们这个产品质量有没有什么保障”里面没有优惠词,但用户说“我想退了这个再买,有没有优惠”其实是有购买意图的。但模型分出错了,因为它没有结合上下文。对此,我不追求模型层面完美解决,而是增加了一个兜底策略:在触发发券前,先判断用户在本会话内是否表达了明确的不满或售后意图。如果会话分类器判断为“售后投诉”类,直接跳过发券。这样一来误判率降低了70%。这个经验是:意图识别模型做得再强,也需要和业务规则的兜底配合,不能用单一模型扛下所有判断。4.4 效果不好是模型的问题吗?先检查数据口径还有一个常见坑:明明意图分很高,发券量也上去了,GMV却没有明显变化。排查后发现是数据统计口径出了问题。我们把“唤醒用户”定义为“点击气泡进入会话的用户”,但很多用户点击气泡只是为了关掉弹窗,根本没有产生有效互动。于是把定义改成“进入会话后至少停留30秒,或点击了优惠券卡片的用户”,数据立刻真实了很多。另外一个口径问题出现在“券核销率”上,我们一开始分母是“发券总数”,但其中有大量券还没来得及被用户看到就过期了,因为有效期只有48小时,而很多人根本没有打开App。后来调整有效期到7天,核销率才回升到正常水平。如果发现指标异常,先别急着调模型,先看数据和业务定义是否一致。问题现象可能原因排查思路建议解法发券量大但核销率低券面门槛与用户购买能力不匹配检查用户历史客单价分布分客单档位配置券模板用户关闭会话比例高触达文案像广告查看会话前3句的用户流失路径改文案,降低攻击性唤醒率数据虚高统计口径把点击弹窗当成有效触达核对漏斗各环节埋点重新定义有效触达标准模型误判多训练样本里售后意图没被区分抽样误判样本增加业务兜底规则4.5 系统上线后如何持续优化?我用的是周度复盘机制唤醒客户这件事不是一次性的。我每周都要拉一次数据看板,主要看三个维度:哪些意图信号带来的转化质量最高、哪些券模板的核销率在下滑、哪些时间段的触达效果在变差。实际操作中,我发现“加购未支付”这个信号的转化质量远比“询问优惠”要高,因为前者说明用户已经做出了选择,只是因为价格或犹豫没有下手;后者可能是随便问问。所以后来我把模型权重也调整了,加购信号的权重从0.3提到0.4,询问优惠信号的权重从0.4降到0.3。另外券模板也需要定期更新,同一张券用久了,用户会产生“这个平台永远在发券”的认知,阈值就被拉高了。我每两到三周就会和运营团队一起复盘一次,根据核销率淘汰掉表现最差的20%券模板,再从备选池里补充新的。5. 写在最后:一些真实体会如果你也想做类似的事情,我个人的体会是:别把“智能Agent”想得太玄乎,它的本质是把“怎么判断用户想买”这件事拆成可执行的规则和模型,然后把动作做得比人工客服更及时、更精准。发券不是目的,唤醒后的使用体验才是留存关键。我自己在这套系统上线后,最常做的一件事就是反复问自己:用户看到这个弹窗的第一反应是什么?如果是我,我会不会觉得被打扰?这个视角能帮你挡掉很多无效配置。另外,一定要给系统留一个“关闭开关”。业务方、运营方、用户都可能会有不想主动打扰的时候,比如大促后需要静默期,或者部分用户明确选择不再接收营销消息。我的规则引擎里就加了一个全局开关,一键暂停所有主动触达。这个开关在平时看起来不起眼,但一旦遇到客诉风暴,能帮你保住整个项目的命。希望这篇实操记录能让你少踩几个坑,把客服机器人从“接线员”真正变成有业绩贡献的销售员。
我接手这个需求的时候,第一反应是:客服机器人不是用来回答问题的吗?怎么还要主动发券?但实际业务场景里,这种“看似越权”的需求往往是增长团队最后捞人的一根稻草。电商平台积压了大量沉睡客户——买过几次、加过购物车、后来二三十天没动静,触达方式无非是短信和推送,已经麻木了。于是就有了这个项目:让客服机器人在识别到购买意图的那一刻,主动弹出一张优惠券,把人重新拉回成交路径。上线跑了一个季度,唤醒率从原来的百分之一点几提到接近百分之五,ROI算下来还不错。但过程远比想象中复杂,这里把我自己的思路、踩过的坑、最后沉淀下来的方案完整写出来。1. 从“被动接线员”到“主动销售员”:改造前先想清楚三件事1.1 唤醒沉睡客户,本质上是挽回流量,不是单纯发券很多人一听“唤醒沉睡客户”就默认等于“发券”,这其实是个误区。沉睡客户之所以沉睡,可能是商品价格没打动他,可能是竞品把他抢走了,也可能只是单纯忘了回来。券只是催化剂,不是原因。我做这个项目之前先拉了一批数据:过去一年有成交、最近30天无访问且无购买的用户,再按历史客单价和访问频次分了几个群体。结果发现,其中大概有将近四成的人还在持续访问商品页,只是没有加购、没有下单。这批人其实还在“犹豫区”,根本不是沉睡,只是缺少一个临门一脚的推力。所以与其把所有沉默用户都当成流失用户,不如先找出那些还在平台上露出动作、但没完成转化的人群,让客服机器人主动介入。回归到项目本质,就是想尽办法把已经花过的流量成本再榨出一轮价值,发券只是手段。1.2 主动发券这件事,难的不是发券,是“主动”两个字传统客服机器人是请求-响应的模式:用户发起对话,机器人回复。主动发券意味着机器人要在用户没有发起对话的时候,自己判断“现在是不是该开口”,然后找到合适的触达渠道,说出合适的话。这里涉及三个新能力:用户意图识别、营销策略判断、触达时机决策。这三个能力任何一个做不好,发出去的券要么石沉大海,要么变成骚扰。我见过不少团队直接把客服机器人改造成定时群发器,每天固定给所有沉睡用户发同一张券。结果用户不仅没回来,反而退订率上升。原因很简单:你没有考虑用户此刻的状态。一个正在逛竞品页面的用户、一个刚把商品加入购物车的用户、一个已经一个月没打开App的用户,他们需要的触达方式完全不同。所以改造的第一步不是写代码,而是建立一套“什么情况下可以触发主动营销”的规则框架。1.3 先判断你的场景适不适合做这件事,别为了技术而技术不是所有平台都适合让客服机器人主动发券。如果业务体量很小,用户总数不到一万,沉睡用户基数不够大,做这套系统的ROI可能很低。如果平台本身没有足够的用户行为数据,比如看不到浏览记录、库存记录、订单记录,那意图识别就无从谈起。还有一个关键前提:必须有可以承载优惠券发放的闭环系统,比如卡券系统、订单系统、用户标签系统。我当时之所以敢接这个项目,是因为平台已经有了完整的用户行为埋点和优惠券服务,客服机器人只是外挂了一个决策模块。如果你的基础系统连用户最近一次登录时间都拿不到,那先把数据管道补齐再谈智能Agent。2. 智能Agent识别购买意图的核心拆解2.1 购买意图到底怎么定义?别只看聊天记录所谓“购买意图”,我在这里的定义不是用户嘴上说“我要买”,而是综合行为数据和会话数据之后,判断用户“在近期成交的可能性是否显著高于随机水平”。单纯依靠客服机器人的聊天记录会漏掉大量用户,因为大部分沉睡客户根本不会主动来找客服。他们可能只是在商品详情页反复滑,把所有SKU都看了一遍,然后把页面关了。这些动作都是意图信号,但不会出现在会话里。所以我在项目里把意图信号分成了两类:显性信号和隐性信号。显性信号包括用户主动向客服询问优惠活动、询问是否能便宜一点、询问发货时间,还包括用户手动输入“券”“折扣”“满减”这类关键词。隐性信号包括连续三次查看同一商品、加入购物车后一天内没付款、收藏夹里新增商品、从分享链接进入页面等等。这些信号全部可以通过行为埋点获取,和客服机器人的会话内容一拼,才是完整的意图画像。2.2 意图识别模型的基本路径:先规则后模型,别上来就上深度学习做意图识别的时候,团队里有人提议直接上大模型,把用户会话扔进去做语义理解。但我坚持先搭一套规则加简单机器学习的系统。原因很实际:项目排期只有两周,大模型的结果不可解释,业务方不敢直接用它来决定“要不要给用户送钱”。我最后采用的是三层判断:第一层是规则层,把显性信号快速命中,例如用户对话中出现“优惠”“券”等词,或者行为上触发“加购未支付”事件,直接给一个较高的意图分。第二层是特征层,把用户最近7天的访问天数、访问深度、加购数量、收藏数量、历史成交客单价等特征拼接成一个向量,用一个轻量级的梯度提升树模型打分。第三层是策略层,把规则命中的信号和模型打出的意图分做加权,得到一个最终意图分,只有超过阈值才触发发券动作。这个方案的好处是每一层都可以单独调整。规则层负责召回,模型层负责排序,策略层负责兜底。2.3 识别之后还要看时机:什么时间“开口”成功率最高同样的用户,同样的优惠券,上午十点发和晚上十点发的效果完全不一样。我翻过后台数据,发现这个平台的沉睡用户活跃高峰是晚上八点到十一点,恰好是刷手机放松的时间。如果客服机器人选择在上午九点半主动弹窗,用户正在上班,大概率直接划掉,甚至会觉得被打扰。所以我在决策引擎里加了一个“可触达时段”字段,默认只在用户最近7天的活跃时段发起主动对话。另外还有一个时机判断是围绕“生命周期节点”做的:用户加入购物车后6小时、用户浏览同一商品超过5次、用户领取过优惠券但过了24小时仍未使用。这些节点对应的意图强度不同,券的面额和话术也应该不同。我后面专门建了一张配置表,每个节点对应不同的动作,而不是见到一个疑似意图就发券。3. 从识别到发券:实操中的完整流程与关键参数3.1 第一步:给客服机器人加上“主动发起对话”的通道原来的客服机器人只在用户进入客服会话界面时才响应,这是被动模式。要主动发券,首先得有一个主动触达用户的渠道。我的实现方式是给机器人的前端SDK加了一个“主动消息”的接口。当决策引擎输出“可以发券”的结论时,机器人会在用户正在浏览的页面右下角弹出一个气泡,气泡文案是一句简短的引导语,比如“检测到您购物车里有商品还没结算,这里有一张券也许用得上”。用户点击气泡后,会话自动切入客服机器人,机器人再根据用户的具体状态发送优惠券卡片。这里要注意,不是所有页面都适合弹气泡。用户在结算页弹出气泡会显得非常碍事;而在商品详情页弹出,用户接受度会高很多。所以我在配置里设置了页面维度的白名单,只允许在商品详情页、购物车页、首页信息流刷到第三屏以后触发。3.2 第二步:设计一套不发错券的规则引擎发错券是这种系统最容易翻车的环节。什么叫发错券?给一个客单价很高的用户发一张满10减5的券,他根本看不上;给一个只浏览过低价商品的用户发满300减50的券,他用了也凑不到门槛。为了避免这种情况,我设计了一个最小可用的规则引擎,核心逻辑可以用一段伪代码表示:def decide_coupon(user_profile, intent_signals, product_ctx): # 1. 判断用户是否在可触达名单内 if user_profile["status"] != "sleep" and user_profile["status"] != "pending": return None if user_profile["in_blacklist"] or user_profile["recent_coupon_sent"]: return None # 2. 计算意图分 intent_score = 0 if intent_signals["ask_coupon"]: intent_score += 0.4 if intent_signals["cart_without_pay"]: intent_score += 0.3 if intent_signals["repeat_view"] >= 5: intent_score += 0.2 if user_profile["days_since_last_order"] > 30: intent_score += 0.1 if intent_score < 0.6: return None # 3. 基于用户历史客单价匹配券模板 avg_order = user_profile["avg_order_value"] if avg_order >= 300: template = "full_300_minus_50" elif avg_order >= 100: template = "full_100_minus_20" else: template = "full_50_minus_8" # 4. 判断库存/预算 if not coupon_service.in_budget(template): return None return coupon_service.create_coupon(template, scene="intent_wake_up")这段逻辑看起来简单,但实际落地时要注意几个细节。recent_coupon_sent这个字段必须设置时间窗口,比如3天内发过券就不再发送,否则用户可能一天收到四五张券,立刻产生警惕。ask_coupon这类信号要设置有效期,比如会话结束后30分钟内有效,过期不算。券模板的字段需要绑定到具体商品品类,如果一个用户历史只买数码产品,就不能给他发护肤品的券。3.3 第三步:优惠券的“剂量”与“话术”设计发券不是把券丢出去就完了,要像医生开药一样考虑剂量。我重点调过三个参数:券面门槛、有效期限、使用限制。面额方面,通过A/B测试发现,对于沉睡客户,面额比历史客单价高出10%-20%的券,转化率提升明显;但再往上就进入边际递减区间。比如历史客单价120元,发满120减30效果最好,发满120减60反而会带来大量垃圾订单,很多人专门为了套券买一些不必要的东西,退货率也上升。有效期限方面,7天之内核销率最高,超过14天用户基本遗忘。使用限制方面,一开始我们没有做品类限制,结果很多人用券去买纸巾等低毛利商品,导致活动亏损。后来加了“仅限用户最近加购的同类目商品”限制,亏损立刻降下来了。话术上,我用的是“简洁+利益点+低压迫感”的模板,比如“您购物车里的商品还在等您,这里有张专属券,今天用掉刚好合适”,比“亲,您有一张优惠券即将过期,快来使用吧”这种催促进攻式话术点击率高出不少。3.4 第四步:效果评估指标与闭环优化项目上线后,不能只看唤醒率。我构建了一套指标体系,核心关注四个数字:唤醒率、券核销率、活动ROI、用户打扰率。唤醒率指主动触达后7天内产生下单行为的用户占触达用户的比例;券核销率指触达用户中实际使用优惠券完成订单的比例;ROI计算方式是(唤醒用户带来的GMV - 优惠券成本 - 触达成本)/优惠券成本;打扰率则通过用户主动关闭客服会话、删除App、退订消息的比例来间接衡量。刚开始跑的时候,唤醒率只有1.8%,ROI不到2,看起来不太行。后来把整个漏斗拆开才发现,问题出在触达之后的第一句话:机器人发出气泡文案,用户点击了,但进入会话后的开场白不够自然,很多人看完就退了。换了一版更口语化的开场白之后,唤醒率直接翻倍。这个闭环优化的核心是:不能只看算法模型,还要看触达链路里每一个文案、页面、按钮是否顺滑。4. 实测中踩过的坑与问题排查实录4.1 为什么识别到意图却不敢发券?策略和风控的权衡上线第一周,决策引擎识别出大量“高意图”用户,但发券成功率很低。查了一圈发现,是风控系统在拦。用户被识别为“疑似羊毛党”,比如同一个设备号关联了多个账号、历史订单大量使用优惠券、频繁退货等。风控系统把这些用户直接列入黑名单,我的规则引擎拿到的用户画像里in_blacklist为真,自然不发券。这其实是对的,但从运营角度看有点可惜,因为部分高意图用户可能是正常消费者,却被误杀。解决方案是我和风控团队协商,增加了一个灰度标签:对于“疑似羊毛党”但历史客单价较高、距上次下单超过60天的用户,允许发送小额低门槛券,同时设置单用户仅可领取一次。这样既控制了风险,又保留了唤回的机会。踩过这个坑之后我明白了:智能Agent的“智能”不止在于发券,还在于知道哪些券不该发。4.2 发券后用户更沉默?触达时机和频次限制没有做好项目进行到第二个月,我们发现一个奇怪现象:部分用户收到券后不仅没用,反而近7天访问时长下降了。对比用户反馈才明白,他们觉得平台是在“监视自己”——明明是刚说完想买一个东西,隔天机器人就来发券,这种巧合让人不适。这个问题的根源是触达时机太“精准”,完全没有留给用户缓冲。解决办法有两个:一是把“主动触达”和“用户当前会话”绑定,只在用户当前正在平台上浏览时触发,不在用户离线时通过App推送发券(因为离线推送会让人感觉被监控)。二是增加冷静期,用户主动表达购买意图后,至少等2小时再触发,给用户一个自然决策的时间。调整之后,打扰率明显下降,核销率反而上升,因为那些真正有需求的人最终还是会把券用掉。4.3 意图识别模型频繁误判?数据标注与阈值调整模型上线后,每周都会收到运营反馈:“这个用户明明就是来问退货的,怎么给他发券了?”我分析了一批误判样本,发现主要原因是用户会话里的“优惠”相关的词被过度召回。比如用户说“你们这个产品质量有没有什么保障”里面没有优惠词,但用户说“我想退了这个再买,有没有优惠”其实是有购买意图的。但模型分出错了,因为它没有结合上下文。对此,我不追求模型层面完美解决,而是增加了一个兜底策略:在触发发券前,先判断用户在本会话内是否表达了明确的不满或售后意图。如果会话分类器判断为“售后投诉”类,直接跳过发券。这样一来误判率降低了70%。这个经验是:意图识别模型做得再强,也需要和业务规则的兜底配合,不能用单一模型扛下所有判断。4.4 效果不好是模型的问题吗?先检查数据口径还有一个常见坑:明明意图分很高,发券量也上去了,GMV却没有明显变化。排查后发现是数据统计口径出了问题。我们把“唤醒用户”定义为“点击气泡进入会话的用户”,但很多用户点击气泡只是为了关掉弹窗,根本没有产生有效互动。于是把定义改成“进入会话后至少停留30秒,或点击了优惠券卡片的用户”,数据立刻真实了很多。另外一个口径问题出现在“券核销率”上,我们一开始分母是“发券总数”,但其中有大量券还没来得及被用户看到就过期了,因为有效期只有48小时,而很多人根本没有打开App。后来调整有效期到7天,核销率才回升到正常水平。如果发现指标异常,先别急着调模型,先看数据和业务定义是否一致。问题现象可能原因排查思路建议解法发券量大但核销率低券面门槛与用户购买能力不匹配检查用户历史客单价分布分客单档位配置券模板用户关闭会话比例高触达文案像广告查看会话前3句的用户流失路径改文案,降低攻击性唤醒率数据虚高统计口径把点击弹窗当成有效触达核对漏斗各环节埋点重新定义有效触达标准模型误判多训练样本里售后意图没被区分抽样误判样本增加业务兜底规则4.5 系统上线后如何持续优化?我用的是周度复盘机制唤醒客户这件事不是一次性的。我每周都要拉一次数据看板,主要看三个维度:哪些意图信号带来的转化质量最高、哪些券模板的核销率在下滑、哪些时间段的触达效果在变差。实际操作中,我发现“加购未支付”这个信号的转化质量远比“询问优惠”要高,因为前者说明用户已经做出了选择,只是因为价格或犹豫没有下手;后者可能是随便问问。所以后来我把模型权重也调整了,加购信号的权重从0.3提到0.4,询问优惠信号的权重从0.4降到0.3。另外券模板也需要定期更新,同一张券用久了,用户会产生“这个平台永远在发券”的认知,阈值就被拉高了。我每两到三周就会和运营团队一起复盘一次,根据核销率淘汰掉表现最差的20%券模板,再从备选池里补充新的。5. 写在最后:一些真实体会如果你也想做类似的事情,我个人的体会是:别把“智能Agent”想得太玄乎,它的本质是把“怎么判断用户想买”这件事拆成可执行的规则和模型,然后把动作做得比人工客服更及时、更精准。发券不是目的,唤醒后的使用体验才是留存关键。我自己在这套系统上线后,最常做的一件事就是反复问自己:用户看到这个弹窗的第一反应是什么?如果是我,我会不会觉得被打扰?这个视角能帮你挡掉很多无效配置。另外,一定要给系统留一个“关闭开关”。业务方、运营方、用户都可能会有不想主动打扰的时候,比如大促后需要静默期,或者部分用户明确选择不再接收营销消息。我的规则引擎里就加了一个全局开关,一键暂停所有主动触达。这个开关在平时看起来不起眼,但一旦遇到客诉风暴,能帮你保住整个项目的命。希望这篇实操记录能让你少踩几个坑,把客服机器人从“接线员”真正变成有业绩贡献的销售员。