手上有一份客户号码名单,要从中筛出已开通、仍在使用 Telegram 的客户,可以按这个顺序处理:
- 把号码统一成 E.164 国际格式,再按规范后的号码去重;
- 按国家代码拆成多个文件;
- 做号码基础检测,剔除空号等明显无效的号码;
- 做 Telegram 开通检测;
- 按 Last seen 活跃区间分层;
- 带着客户 ID 分组导出,或回写 CRM。
如果顺序反过来,比如拿原始名单直接跑平台检测,常见的问题有两个:同一个号码因为写法不同被当成几条分别检测、分别计费;格式残缺的号码查不到结果,被误判成「没注册 Telegram」。

先看清手上的名单
下面用一份常见的名单举例:从 CRM 导出的 csv,有客户 ID、姓名、手机号三列,号码来自几个国家,写法比较乱:
138 0013 8000:中间有空格,没有国家代码+44 7700-900123:有国家代码,中间夹着横杠0044 7700 900123:用 00 代替 +07700 900123:英国本地写法,带前导 0
后面三条可能是同一个号码。如果不先处理,它们会被当成三条分别提交,其中两条还可能因为格式问题查不出结果。
开始之前,先确认一件事:这份名单是你自己的客户数据,来源和用途合法。清洗过程只读取号码在平台上的状态并分组,不改变号码本身,也不应该尝试绕过平台的隐私设置。
第一步:统一成 E.164,再去重
E.164 的写法是 +国家代码+号码,中间不加任何分隔符,比如 +447700900123。具体处理如下:
- 去掉空格、横杠、括号、点号等符号;
- 开头的国际前缀
00换成+; - 本地写法补上国家代码。很多国家需要先去掉国内长途的前导 0,但各国规则不一样,不要对所有号码套用同一条规则;
- 判断不出国家的号码(比如没有国家代码、客户资料里也没有地区信息),单独放进「待确认」文件,不要猜着补国家代码。
格式统一后再去重,去重依据是规范后的号码,不是原始字符串。有一点要注意:一个号码可能对应 CRM 里的多条客户记录,比如同一个人注册过两次。去重之前先建一张映射表,记录「规范号码 → 客户 ID 列表」。检测只跑去重后的号码,回写时再按映射表把结果分发回每条记录。
检测通常按条计价,这一步做得干净,可以直接减少要付费检测的号码数量。
第二步:按国家拆分
去重后按国家代码拆分文件,每个国家单独提交。这样做有三个好处:
- 各国号码长度和格式规则不同,分开处理更容易发现格式异常;
- 看结果时,可以按市场比较开通率和活跃度;
- 有些市场的客户不一定主要使用 Telegram,拆分后可以针对不同市场选择检测平台。
某个国家的号码格式、当地主流平台,可以在 NexCheck 的 区域页 查到。
第三步:号码基础检测
基础检测针对号码本身,结果包括空号、设备类型、高风险号等。它和 Telegram 检测是两层不同的判断:前者看号码还能不能用,后者看号码有没有对应的 Telegram 账号。
要不要先做基础检测,取决于名单的新旧:
- 名单比较旧,比如几年前积累的线索,空号比例可能偏高。先做基础检测,后面的平台检测就只跑在可能有效的号码上;
- 名单比较新,比如近期表单收集的,可以直接做平台检测。
两种做法哪种更省钱,可以按价目表里两类检测的单价,结合你预估的空号比例算一下。
第四步:Telegram 开通检测,以及「未检出」的含义
这一步判断每个号码有没有对应的 Telegram 账号。在 NexCheck 里,可以在控制台上传整理好的 txt 或 csv,单批数量不限,然后选择 Telegram 检测项。结果按有效和无效分组返回。除了是否开通,Telegram 还能查哪些字段、每项多少钱,以 Telegram 平台页 当前列出的为准。检测项和单价会调整,不要拿别的平台的字段清单来套用。
解读结果时,最容易出错的是「未检出」。
Telegram 允许用户在「隐私与安全」中,把「谁可以看到我的手机号」设为「Nobody」,然后把「谁可以通过我的手机号找到我」设为「仅联系人(My Contacts)」。这样设置后,不在对方通讯录里的人,无法通过手机号找到这个账号。这是平台本身的隐私机制,任何通过手机号做的外部检测都会受到影响。
所以开通检测的结果建议分成三类,而不是简单的「是 / 否」:
- 已开通:能匹配到账号,进入下一步活跃分层;
- 未检出:可能确实没注册,也可能是用户开启了上述隐私限制。建议单独打标签,不要直接从 CRM 删除;
- 无效号码:基础检测判定为空号,或格式无法识别。
匹配原理和隐私限制的更多细节,可以看 Telegram号码是否注册怎么查。
第五步:按 Last seen 区间分层
已开通的号码,下一步是判断活跃度。Telegram 的「最后上线时间」可以由用户自己隐藏。隐藏后,平台不显示精确时间,只显示四档模糊状态:
| 显示状态 | 官方说明的时间范围 | 建议分层标签 |
|---|---|---|
| Last seen recently | 1 秒到 2~3 天内上线 | 高活跃 |
| Last seen within a week | 2~3 天到 7 天内 | 近期活跃 |
| Last seen within a month | 6~7 天到 30 天内 | 低活跃 |
| Last seen a long time ago | 超过一个月 | 沉睡 / 待观察 |
用这几档分层时,注意以下几点:
- 相邻两档有重叠。官方给的区间本身有交叉(比如 6~7 天可能落在 week 或 month),分层只能说明大致的活跃程度,不能换算成精确天数;
- 「a long time ago」不一定代表不活跃。根据 Telegram 的说明,被用户拉黑的一方看到的也是这个状态。所以这一档建议标成「沉睡 / 待观察」,不要当作确定失效;
- 可能拿不到活跃状态。受隐私设置影响,有些已开通的号码可能没有活跃信息。单独标成「活跃度未知」,不要并入沉睡;
- 活跃状态是检测当时的快照。它会随时间变化,回写时一定要带上检测日期。
Telegram 检测能否返回活跃相关字段,同样以平台页列出的检测项为准。
第六步:导出和回写 CRM
检测完成后,先用第一步的映射表,把结果还原到每一条客户记录上。回写 CRM 时,建议至少写入这几个字段:
- 规范后的号码(E.164);
- Telegram 状态:已开通 / 未检出 / 无效;
- 活跃分层:高活跃 / 近期活跃 / 低活跃 / 沉睡待观察 / 未知;
- 检测日期。
「未检出」和「沉睡」的记录保留标签就行,不建议删除。隐私设置和账号状态都会变化,下次重新检测时,这些记录可能有不同的结果。
网页端和 API 的选择,主要看名单是一次性的还是持续产生的:
- 一次性或不定期的名单(如活动后整理、历史名单盘点):在控制台上传 txt / csv,按有效和无效分组导出,再导入 CRM 即可;
- 持续进入的名单(如每天新增的注册客户),或需要和 CRM 自动同步的场景:通过 REST API 提交,用 Webhook 接收检测结果,由程序按客户 ID 回写标签。异步提交和回写的具体做法可以参考 Telegram筛号API怎么接,接口细节以站内文档为准。
开始前的检查清单
把名单交给检测之前,对照检查一遍:
- 号码是否全部为 E.164 格式,判断不出国家的号码是否已单独放出;
- 是否按规范号码去重,并保留了号码到客户 ID 的映射表;
- 是否已按国家拆分文件;
- 是否在平台页确认过 Telegram 当前的检测项和单价;
- 结果分类里,是否把「未检出」「沉睡待观察」「活跃度未知」和真正的无效号码区分开。
这几项都处理好之后,再到官网的「筛号工具」注册并进入控制台,提交第一批名单。
NexCheck-筛号平台
评论(0)