免费注册,立即获得 100 次免费检测。免费注册
WA Lookup 工作流示意图:用于 WhatsApp API 检测的 E.164 格式:本地格式如何导致查询失败
本文所述工作流的示意图(WA Lookup)。

本文定义了 E.164 格式,展示了导致 WhatsApp 检测结果错误的本地格式误区,并制定了适用于 API 和文件工作流的标准化流程。

E.164 是 ITU 国际编号格式:即国家代码后接国家内部号码,最多 15 位数字,以规范形式书写,开头带有加号,且不包含空格、连字符或主干前缀。WhatsApp API 检测要求号码采用这种国际形式,因为像 07700 900123 这样的本地格式无法表明其所属国家。在检测前将每个号码标准化为 E.164,可确保检测结果与您预期的号码准确对应。

什么是 E.164 格式

ITU-T Recommendation E.164 定义了国际公共电信编号计划。在实际数据处理中,E.164 号码具有三个属性:

  • 以一到三位数字的国家/地区代码开头,例如 1、44、55 或 971。
  • 紧随其后的是国家有效号码,不包含国内主干前缀(通常为开头的 0)。
  • 总长度不超过 15 位数字,规范书写形式为加号后仅跟数字,例如 +447700900123。

E.164 不包含的内容同样重要:没有国际拨号前缀(如 00 或 011)、没有括号、没有空格、没有分机号。

本地格式如何导致 WhatsApp API 检测失败

大多数讨论此主题的页面仅停留在定义层面。实际问题在于普通的 CRM 数据如何演变成错误的查询。以下是导致问题的模式:

存储值 问题 E.164 结果
07700 900123 (英国记录) 保留了主干 0,缺少国家代码 +447700900123
0044 7700 900123 使用了国际前缀 00 而非 + +447700900123
(631) 555-1234 缺少国家代码;在美国境外具有歧义 若记录为美国,则为 +16315551234
+44 (0) 7700 900123 在国际形式中保留了可选的主干 0 +447700900123
5511987654321 (文本列) 电子表格将值存储为数字时丢失了开头的 + +5511987654321

Meta 的 WhatsApp user phone number format guidance 清楚地展示了发送端的风险:如果没有加号和国家代码,业务号码本身所属的国家代码可能会被预置,因此从印度业务号码发送的 "(631) 555-1234" 可能会被解析为 +916315551234,而不是预期的美国号码。同样的歧义也适用于任何检测。如果检测针对的是错误的号码,其结果描述的将是其他人。

检测号码前的标准化流程

在进行任何 WhatsApp 检测之前,无论号码是通过 API 提交还是通过文件提交,请执行以下步骤。

  1. 将号码存储为文本。 电子表格的数字单元格会去除加号和前导零,长数值可能会变成科学计数法。
  2. 将国家/地区信息与记录保持一致。 对于以本地格式输入的号码,标准化需要一个默认区域;请从联系人的国家/地区字段中获取,而不是从销售团队的位置获取。
  3. 使用维护良好的库进行解析。 Google 的 libphonenumber 可将原始字符串和区域解析为国家代码和国家有效号码,并将其格式化为 E.164。其 isPossibleNumber 是仅针对长度的检查,而 isValidNumber 还会使用该区域的前缀信息。
  4. 隔离失败项。 无法解析或未通过验证的值应进入审核队列,而不是直接提交给检测器。
  5. 标准化后去重。 "07700 900123" 和 "+44 7700 900123" 只有在执行此步骤后才会成为同一个号码。

这些步骤回答了一个狭义问题:该字符串是否为其所属区域内合理的国际号码?该号码是否拥有 WhatsApp 账号是另一个问题,只有通过注册检测才能得出答案。

在 WA Lookup API 和文件中使用 E.164

WA Lookup 实时 API 接受一个以 E.164 格式提交的电话号码,用于 POST /api/v1/check,同时需要 X-API-Key 请求头和用于选择 WhatsApp 注册检测、WhatsApp 头像检测或 WhatsApp 商业账号检测的 service_type。POST /api/v1/batch-check 每个请求最多接受 100 个号码,且每个号码均需执行相同的标准化处理。请遵循当前的 API 文档以获取准确的请求体。

批量文件任务有其特定的格式要求:

  • 仅限 TXT 或 CSV 格式,每行一个带有国家代码的号码。
  • 文件应主要包含一个选定国家/地区的号码。当 10% 或更多的号码来自其他国家/地区时,预检将拒绝该文件,因此请在标准化后按国家代码进行拆分。
  • 批量文件不接受中国大陆 (+86)、香港 (+852) 和澳门 (+853) 的号码;这些地区仅支持有限的实时单次检测。

常见的 E.164 审查误区

  • 假设每个号码都是国内号码。 默认区域是本地格式输入的后备方案,而非针对每一行的规则。
  • 为了存储而去除加号。 在 CRM 中保留规范形式;仅在特定系统要求其他表示形式时才进行转换。
  • 保留分机号。 在检测前删除 "ext. 204" 等分机文本;E.164 不包含分机号的位置。
  • 将标准化视为许可。 根据 WhatsApp Business Messaging Policy,即使是格式正确且已注册的号码,在进行外联前仍需获得用户许可。
  • 在同一列中混合格式。 使用一列标准化数据进行检测和发送,可避免结果与所属记录脱节。

常见问题解答

团队如何判断存储的号码是否已是 E.164 格式?

该值以加号开头,其后仅包含数字,国家代码后没有主干 0,且总长度不超过 15 位。使用 libphonenumber 等库对其进行解析并格式化回 E.164,应返回相同的字符串。

开头的加号对 WhatsApp 检测和消息发送重要吗?

它将号码标记为国际号码。Meta 的指南建议同时包含加号和国家代码,因为没有它们的号码可能会被解释为发送者的国家代码。对于 WA Lookup,请遵循当前的 API 文档以获取请求中预期的准确字符串。

未通过标准化的号码应该如何处理?

将其连同原始值和记录的国家/地区信息一起发送到审核队列。检测有歧义或格式错误的字符串会消耗余额,并可能将结果关联到错误的号码上。

为什么批量文件需要来自同一个国家的号码?

批量任务是针对选定国家/地区提交的,如果 10% 或更多的号码来自其他国家/地区,预检将拒绝该文件。先标准化为 E.164 可以轻松地按国家代码拆分混合导出的数据。

了解更多

选择适合您工作流下一步的产品信息。

参考来源