带过滤规则的群发短信

一、📌 为什么需要过滤规则?

群发短信不能盲发:

  • 避免发送给非目标用户,提高命中率和用户体验;

  • 符合业务策略(如:只发给活跃用户 / VIP 用户);

  • 降低成本(短信单价高);

  • 合规性要求(不可群发骚扰短信)。


二、🧠 常见的过滤维度(用户画像)

维度示例
用户身份是否是 VIP 用户、是否是注册用户
活跃度最近 7 天登录、近 30 天购买
行为特征收藏数、加购数、最近浏览时间
地理位置城市、省份、是否境外
触达历史最近是否已接收短信、是否退订
业务状态是否已下单、是否完成认证、是否有投诉记录


三、🧱 实现方式对比:过滤规则 DSL vs SQL

方式描述优点缺点
SQL筛选直接拼接 SQL + 分页查数据库高效、灵活安全性需控制(防注入)
DSL方式使用类似 JSON/DSL 表达规则(转换成 SQL)前端可视化,安全性高实现稍复杂
人群圈选提前做用户画像打标签(如通过离线数仓生成人群标签)快速、复用性强依赖数据标签体系


四、🧩 示例:过滤规则 DSL 配置

{
  "logic": "AND",
  "rules": [
    { "field": "lastLoginTime", "operator": ">", "value": "2024-06-01" },
    { "field": "userLevel", "operator": "IN", "value": ["VIP", "SVIP"] },
    { "field": "city", "operator": "=", "value": "上海" }
  ]
}

👉 可视化界面通过 DSL 构建规则 → 后端转换为 SQL。

SELECT user_id, phone
FROM user_profile
WHERE last_login_time > '2024-06-01'
  AND user_level IN ('VIP', 'SVIP')
  AND city = '上海'
LIMIT 1000 OFFSET 0


五、⚙️ 过滤规则处理流程(结合系统架构)



1. 前端运营配置过滤规则(可视化 DSL 构建器)
         ↓
2. 后端转换规则 → SQL 语句或执行过滤引擎
         ↓
3. 批量分页查询用户(每批1000)→ 放入异步投递队列
         ↓
4. 消费端发送短信,失败自动重试 / 限流


六、📦 技术栈实现建议

功能技术实现补充说明
DSL 解析自定义规则引擎 / Aviator把 JSON 表达式转为 SQL 语句
查询执行MyBatis / JPA + 分页插件MySQL / ClickHouse 作为底表
人群缓存查询结果缓存 Redis / ES避免重复查询,提升效率
大人群处理数据分片 + 多线程 / 任务拆分减少单次查询压力


七、🧪 示例:完整过滤 + 群发投递流程(项目中常用)

活动主题:618大促VIP提前通知

  • 规则 DSL:

    {
      "logic": "AND",
      "rules": [
        { "field": "userLevel", "operator": "=", "value": "VIP" },
        { "field": "lastOrderTime", "operator": "<", "value": "2025-06-01" },
        { "field": "receiveSms", "operator": "=", "value": true }
      ]
    }
    

  • SQL 转换后:

    SELECT phone
    FROM user_profile
    WHERE user_level = 'VIP'
      AND last_order_time < '2025-06-01'
      AND receive_sms = true
    

  • 投递流程:

    1. 运营后台创建任务,配置规则

    2. 后端分页查询符合规则用户(分页拉取+放入MQ)

    3. 消费端调用短信网关发送短信

    4. 限流、失败重试机制保障发送质量


八、🎯 面试高频问答总结

面试问题推荐答题要点
如何实现短信用户筛选?配置 DSL/SQL 规则 → 转 SQL 查询用户画像库 → 分页处理
如何避免发送给不符合要求的用户?通过过滤规则系统,过滤行为特征/活跃度/黑名单用户
群发短信中如何应对超大人群?查询分页 + 分片处理 + MQ异步投递
如何让运营配置筛选更灵活?提供 DSL 可视化规则引擎,支持逻辑表达式组合
数据量大时查询性能如何优化?建立标签库 / 人群缓存 / 索引优化 / 异步处理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值