SMS

为什么我的字母数字发件人 ID 被替换成了号码?

模板选择、另一条发送路径或下游网络的处理,都可能导致手机上显示数字号码。

应用程序提供了品牌名称后,消息记录中仍可能显示数字号码作为发件地址。当应用程序提供 textfrom 时,Bird 会验证请求中的发件人,并拒绝不符合要求的发件人。即使 API 接受了请求,也不能保证手机上如何显示发件人。此验证不会替换请求中的发件人。

Bird 会将我的发件人换成号码吗?

对于通过 textfrom 提交的消息,Bird 会拒绝不受支持的发件人,不会替换它。系统模板请求提供来自 Bird 目录的 template 引用,以代替自定义消息正文。Bird 会为该模板请求选择发件人。请求本身及返回的 from 字段表明了发送形式和实际使用的发件人。

在消息发出前,Bird 会根据接收地策略检查发件人。如果接收地不支持字母数字类型,该调用会被拒绝。如果接收地要求注册,而该发件人没有相应注册,该调用同样会被拒绝。错误会指出发件人,便于查询其要求。

对于包含 textfrom 的请求,这些检查会拒绝不符合要求的发送,不会改写发件人。被拒绝的发送不会生成消息、投递尝试或投递事件。如果已有消息的 from 不同,应对照原始请求、模板选择和下游路由进行排查。

实际会返回哪个拒绝代码?

这类情况涉及三个常被提及的代码,它们不能互换。

代码来源
E12021发送流程:接收地不支持你的发件人类型或发件人的来源地
E12018注册流程:尝试为不支持字母数字类型的国家注册该类型发件人
E12019已在目录中定义,但没有任何逻辑会触发

前两个代码需要区分。发送返回的 E12021 的错误文本为 This sender is not available for the destination country;注册返回的 E12018 的错误文本为 Alphanumeric senders are not available for the destination country。它们从两个不同入口描述同一项国家策略,因此发送失败后,搜索专用于字母数字发件人的措辞可能找不到结果。

第三个代码的问题与运营商过滤页面介绍的投递代码类似。E12019 已发布并记录在文档中,但没有任何代码路径会发出它。如果缺少必需的注册,会出现指出相应发件人的错误,而不是 E12019。可以为该代码添加处理逻辑,但日志中没有它,不能证明注册状态正常。

这是 numeric 注册计划导致的吗?

不是,这个名称容易引起混淆。

Bird 的注册计划中包含 numeric。单看名称,可能以为它会将名称变成数字,但实际并非如此。numeric 用于注册长码:这是某个国家针对号码发件人类型实施的计划,适用于你已经持有的号码。这个过程不会将字母数字发件人转换为数字号码发件人。

如果接收国家实施 numeric,说明该国要求注册长码。这有助于选择发件人类型,但无法说明你的字母数字发件人的情况。发件人 ID 注册列出了五种计划及各自适用的发件人类型。

那么,号码是从哪里来的?

它来自发件人类型检查之外的环节,可以依次检查三个位置。

  1. 回查实际使用的发件人。 消息记录保存了自己的发件人。工作区配置了多个发件人时,消息可能使用了与你预期不同的一个。按发件人筛选消息,确认实际使用了哪个身份。
  2. 确认消息是否确实来自 Bird。 如果同一发送计划还使用其他服务提供商,或使用你自己代码中的备用路径,该号码可能是那条路径的默认发件人,而不是被改写后的发件人。
  3. 针对具体消息咨询。 消息离开 Bird 后会经过运营商。移交后网络如何处理发件人,取决于该网络的行为,而不是你能配置的设置。向支持团队提供消息 ID、接收地及预期的发件人。

有两种情况无法解释号码变化,可以先排除。注册仍在等待处理时,发送会被拒绝,不会降级发件人类型。工作区未启用该接收地时,发送同样会被拒绝,并返回 E12020

如何防止再次发生?

按接收地选择发件人,不要仅按活动选择。

发送前确认每个接收地支持哪些发件人类型,以及各类型的要求。这样才能持续避免同类问题。SMS 接收地按国家提供这些信息,也可以在终端查询你自己的某个发件人:

bird sms senders requirements <sender-id>

如果接收地完全不支持字母数字类型,就无法通过购买注册获得资格,必须选择其他发件人类型。应该使用哪种发件人类型比较了四种类型。如果接收地支持该类型,但要求先注册,SMS 发件人 ID说明了注册方法。

简而言之

  1. Bird 会拒绝请求,不会替换发件人。

    如果接收地不支持字母数字发件人,发送会在 API 处被阻止并返回错误。此准入检查不会将不符合要求的自由文本发件人替换为号码。如果手机上的显示不同,应检查实际消息及下游路由。

  2. 发送返回的拒绝代码是 E12021,并非专用于字母数字发件人的代码。

    发送时,如果发件人类型不可用,会返回 E12021。专用于字母数字发件人的 E12018 属于注册流程。

  3. 有一个已记录在文档中的代码实际不会被发出。

    E12019 已在错误目录中定义,但没有任何逻辑会触发它。以它为条件编写分支,该分支就不会执行。

  4. numeric 注册计划不会替换发件人。

    在 Bird 的注册术语中,numeric 指注册长码。注册的是另一种发件人类型,而不是将你的字母数字发件人转换为号码。

基于同一网络构建。

测试 API 密钥即刻获取。添加付款方式并验证发送者身份后,即可解锁生产环境。

你的下一个创意。
随时连接。