什么是 E.164 格式
ITU-T E.164 建议书是国际编号方案,让全球每个电话号码都有唯一的表示形式。E.164 号码由国家代码(1 至 3 位)加国内有效号码组成,总长最多 15 位。面向机器书写时,它只带一个开头的加号,没有空格、括号、连字符,也没有你在本国拨号时用的国内长途前缀 0。
同一个阿联酋手机号,在 CRM 导出文件中可能写成 050 123 4567、+971 50 123 4567、00971501234567 或 971-50-1234567,其中只有 +971501234567 是 E.164。把所有号码都存成这种格式,号码才具有可比性,才能找出重复项,任何短信、WhatsApp 或语音 API 也都能接受。
- 国家代码:+971 阿联酋,+966 沙特,+974 卡塔尔,+965 科威特,+973 巴林,+968 阿曼,+20 埃及,+44 英国,+1 美国和加拿大。
- 去掉国内前缀:阿联酋的 050 在 +971 之后变为 50,英国的 07400 在 +44 之后变为 7400。
- 将国际长途前缀(多数国家为 00,美国和加拿大为 011)替换为 +。
- 最大长度为 15 位,不含加号。
GCC 与中东北非地区的手机号格式
海湾各国的编号方案看似相近,但长度以及是否使用国内前缀 0 各不相同。因此,混合了多个国家本地格式的名单,如果没有默认国家和完整的编号方案数据,就无法清洗。
- 阿联酋(+971):手机号为 9 位,以 5 开头(50、52、54、55、56、58),本地拨号为 05X XXX XXXX。固话为 8 位,例如迪拜为 04,阿布扎比为 02。
- 沙特(+966):手机号为 9 位,以 5 开头,本地写作 05X XXX XXXX。+966 50 123 4567 即 E.164 形式。
- 卡塔尔(+974)、科威特(+965)、巴林(+973)和阿曼(+968):8 位号码,没有国内前缀 0,所以本地号码就是国内号码。手机号开头:卡塔尔为 3、5、6 或 7,科威特为 5、6 或 9,巴林为 3,阿曼为 7 或 9。
- 埃及(+20):手机号为 10 位,以 10、11、12 或 15 开头,本地写作 01X XXXX XXXX。
- 在阿拉伯语键盘上填写的表单中,常出现阿拉伯-印度数字(٠١٢٣٤٥٦٧٨٩)和波斯数字(۰۱۲۳۴۵۶۷۸۹)。它们与普通数字表示同样的号码,必须先转换为 ASCII 数字,API 才会接受。
为什么干净的名单对送达率和成本很重要
营销名单中的每个无效、重复或固话号码,都是浪费的费用或浪费的消息。许多短信线路按提交的消息计费,所以少一位数字的号码照样要付费。重复号码意味着同一位客户会收到两次你的优惠,这会推高退订和垃圾短信举报,而失败消息占比过高,也会损害你的 Sender ID 在运营商处的信誉。
对于 WhatsApp,格式错误的号码会直接失败:Cloud API 要求完整的国际号码,不带国家代码的本地号码 050… 要么被拒,要么被发往错误的国家。导入前先清洗名单,也能让送达报告更有意义,因为失败会指向号码已停用等真实问题,而不是输入错误。
- 先标准化再去重,而不是反过来:0501234567 与 +971501234567 是同一个人。
- 把固话从短信和 WhatsApp 发送中剔除,改走语音。
- 将无效行单独标记保存在另一个文件,以便修正源系统。
- 格式校验只能证明号码可能存在,不能证明它仍在使用。要确认这一点,请使用 HLR 查询或送达报告。
本工具的工作原理
本工具使用 libphonenumber-js 及 Google 完整的 libphonenumber 元数据,与 Android 和大多数消息平台使用的是同一套编号方案数据。它会对照号码所属国家已分配的号段进行校验,并在方案有定义时给出号码类型:手机、固话、免费、VoIP、增值或分摊费用。在美国和加拿大,手机与固话共用号段,因此类型显示为固话或手机。
解析之前,工具会先转换阿拉伯-印度数字、波斯数字和全角数字,去掉阿拉伯语文本常带的不可见方向标记,剥离 tel: 和 wa.me 前缀,并把 00 转为 +。已带国家代码但缺少加号的号码(如 971501234567)也能被识别。所有处理都在你的浏览器中完成:最多 50,000 行的名单在你的设备上分块处理,不会被上传。
E.164 还是纯数字:该用哪种格式
在 CRM 或数据库中存储号码、在 tel: 链接中,以及对大多数短信和语音 API,请使用带加号的 E.164(+971501234567)。在不允许加号的场合使用纯数字(971501234567):wa.me 点击聊天链接、WhatsApp Cloud API 的 wa_id,以及以纯数字作为目的号码的短信 API,例如 OmniChannels.ai 短信 API。
无论选哪种,都要在各系统间保持一致。格式混用是同一联系人重复出现、导入名单校验失败的最常见原因。
