“Zalo空号”往往把四件事混成一句话:号码格式不正确、电信网络中的号码状态、没有观察到Zalo开通、没有活动结果。它们的检测来源与结论完全不同。Zalo筛开通返回否定时,只能解释为任务定义下的平台观察,不能直接宣布手机号不存在。
先看诊断树
- 号码能否按国家规则解析?不能则是format_exception。
- 是否需要电信层状态?需要时使用独立、合适的来源。
- 问题是否为Zalo注册观察?选择筛开通。
- 是否还需活动时间?在用途成立时选择筛活跃。
每一步都保留unknown和error出口,不把故障挤进“空号”。
四种问题的边界
| 问题 | 正确含义 | 不能推出 |
|---|---|---|
| 格式异常 | 当前规则无法可靠解析 | 号码不存在 |
| 电信空号 | 特定电信来源的状态 | Zalo一定未开通 |
| Zalo未开通观察 | 任务未返回开通状态 | SIM失效 |
| 活动未知 | 没有可用活动观察 | 账号无人使用 |
为什么“号码格式通过”还不够
格式校验只说明号码符合结构规则,不说明已分配、当前可达或属于某人。保留phone_raw、country_evidence和normalization_version。国家证据不足时不要自动补+84,也不要用一个正则表达式承担电信检测。
Zalo筛开通的输出
爱普筛Zalo筛开通导出手机号与是否开通。该结果带task_id和checked_at进入platform_registration_observation。否定结果不覆盖电信表,未知和系统错误也必须保留为独立状态。
何时才需要筛活跃
Zalo筛活跃提供手机号、用户ID、活跃时间、昵称和活跃天数。只有活动观察会改变合法、明确的客服或运营决定时才运行。它不是空号检测的升级版,也不能证明消息将送达或用户愿意回复。
结果命名决定团队会不会误用
| 不建议字段 | 建议字段 | 理由 |
|---|---|---|
| is_valid | format_parse_state | 避免把格式等同有效 |
| is_empty | telecom_observation | 绑定来源与时间 |
| has_zalo | zalo_registration_observed | 强调观察性质 |
| active_user | zalo_activity_observed_at | 避免永久标签 |
TXT批次只执行一个问题
爱普筛上传TXT为一行一个手机号。不要在同一个文件名里混合“空号+开通+活跃”的含义。manifest写清task_type,Excel到达时按预期schema验收,并通过crosswalk回连,不按行序复制。
处理矛盾结果
可能出现电信层异常但Zalo有历史观察,或平台注册有结果但活动未知。这不一定是系统错误:号码迁移、时间差、缓存、账号变化和来源定义都可能造成差异。保存两层事实与时间,进入review,不强行选一个覆盖另一个。
业务规则应使用组合条件
客服名单可要求来源有效、许可存在、Zalo注册观察在有效期内,并允许活动未知;号码治理则可能只关心格式异常。不同用途使用不同层,绝不创建一个全公司共用的“有效号码=true”。
回答“空号怎么检测”的准确版本
先确定你问的是电信号码状态还是Zalo平台状态。电信空号需要电信层证据;Zalo筛开通只回答平台注册观察;筛活跃回答另一种带时间的账号观察。把问题说准确,才会选对任务、解释对结果,也避免错误删除客户。
