发送方的形式决定了回复是否有可用地址。符合条件的 SMS 号码可以接收消息;字母数字名称则不能。
这个区别听起来像是一个可以开关的功能。实际上它更接近发送方的物理属性,上层叠加了按国家划分的策略。
什么使发送方成为单向的?
背后没有地址。
回复是发送给上一条消息发送方的消息。如果发送方是号码,该地址存在,手机可以使用它。如果发送方是字母数字发送方 ID,则没有号码可以回复,而 Bird 自身的数据模型直接记录了这一缺失:此类发送方的国家代码为 null,描述为 "the country of the number this sender sends from",并且不携带号码 id,因为 "an alphanumeric sender has no number behind it"。
所以第一层区分是结构性的。长号码、免费电话号码和短号码可以接收消息。字母数字发送方不行,在任何国家、任何注册条件下都不行。
第二层划分是按国家/地区进行的。目的地支持的每种发送方类型都会报告一个 direction,值为 one_way 或 two_way,因此同一号码类型在一个目的地可以接收回复,在另一个目的地可能仅限发送。该国家/地区的 SMS 策略也有自己的 is_two_way_supported 标志。两者都是按目的地变化的值,因此发布在 SMS 目的地页面上,而非在此列出;每个目的地页面会说明是否支持双向消息。
回复如何到达我的应用?
以事件形式推送给你,消息已经存储好了。
当订阅者向你的某个号码发短信时,Bird 将消息与你的发送记录一起存储,并发出 sms.received。载荷中包含消息正文、分段明细、双方号码,以及运营商在运营商报告时提供的信息。无需轮询。
在该事件到达你之前会发生一件事,它会影响你在处理程序中应该做什么。Bird 会先根据该号码的关键词规则评估回复。如果匹配到受支持的 stop 关键词,会记录发送方与订阅者之间的屏蔽并发送退订确认,同时仍会发出 sms.received。因此,一条属于退订的入站消息到达你的端点时看起来与其他入站消息无异,但已经被处理过了。
这对你的代码意味着:不要将每个 sms.received 都当作对话回合。其中一些是 Bird 已经处理过的退订,对退订再回复任何内容正是这种模式容易导致的错误。什么是 STOP 关键词介绍了哪些关键词会被识别、在哪些地区生效,以及在目录之外的国家会发生什么。
我应该从哪个发送方回复?
如果对方联系过的号码仍然符合条件,就用该号码回复,以便回复看起来一致。你的应用通过公共 SMS 端点发送,照常执行发送方、目的地和接收方检查。
Bird 内置的关键词自动确认有一个独立的内部回复上下文。该上下文不是你的 API 请求可以使用的字段。它不允许对话式回复或营销活动绕过注册、目的地准入或用户的退订。
回复之前,先对收到的消息进行分类。STOP 或帮助请求应按照其适用的处理流程执行,而非触发无关的自动回复。发送方要求和关键词处理描述了相关检查。
双向消息比单向消息多出哪些成本?
四项,一旦你接受回复,每项都不可省略。
- 一个能可靠验证和处理事件的端点。 入站消息通过推送送达;需要处理重试和重复投递。Webhook 处理涵盖签名、重试和重放。事件的唯一标识位于
webhook-id请求头中,不在正文里。用该值作为去重键。 - 在每个需要号码的目的地拥有一个号码。 字母数字发送方不能参与双向方案,因此如果活动混合使用两类发送方,需要为仅有名称可用的目的地制定计划。选择单向也不能规避义务:授予退订权利的法规可以要求单向发送方声明回复不可用,并提供其他退订途径,什么是 TCPA 对此有详细说明。
- 处理你未预期的消息。 人们会回复通知。这些回复中有些是提问,有些是退订,还有一些两者都不是。
- 监控号码的入站端。 Bird 将入站量与出站量分开报告,因此双向方案有第二组需要关注的数据。
如果以上都不适用,单向并非降级。它是更小的承诺,而且字母数字发送方可以在支持它的目的地的发件人字段中显示可识别的名称。我应该使用哪种发送方类型提供了完整的对比,双向 SMS介绍了 Bird 为回复端提供的功能。
简而言之
单向是发送方的属性,不是一个设置项。
名称没有地址,因此无法向其回复消息。数字号码发送方仍需要 SMS 能力和入站路由;字母数字发送方无法接收回复。
一个目的地对其本身支持的某种类型可以是单向的。
一个国家支持的每种发送方类型各自报告其方向,因此同一号码类型在一个目的地可以是双向的,在另一个目的地却可以是单向的。
回复以事件形式到达,而非轮询。
Bird 存储入站消息并发出
sms.received,其中包含消息正文、分段明细、双方号码以及运营商在运营商报告时提供的信息。你通过 API 发送的回复是一次独立的发送,有其自身的检查。
使用符合条件的发送方,并尊重接收方的请求。内部关键词自动确认不会为你的应用授予注册豁免或退订豁免。