一条送达通知和客户的回复方向相反。同一个客户既是通知的接收者,也是回复的发送者。
SMS 从手机的视角来命名这些方向。
哪个方向是哪个?
你发给客户手机的通知是 MT,客户的回复是 MO。
发送到手机的验证码或营销活动是 mobile terminated。客户的 STOP 回复是 mobile originated。
这一区分关注的是短信从哪里发出或到达哪里,而不取决于你的业务将对话视为接收还是发送。
协议如何承载每个方向的短信?
SMPP 连接使用 submit_sm 发送短信,使用 deliver_sm 接收短信。
SMPP 在应用程序和运营商服务之间传输短信。SMPP 操作参考定义了这些操作。
网络对先前发送的送达报告也可以通过 deliver_sm 到达。这些报告称为送达回执,也可以使用 data_sm。SMPP 回执参考指出:
Message delivery receipts are returned in the deliver_sm and data_sm operations.
因此,一个入站传输操作不一定是客户回复。你的应用程序必须区分回执信息和接收到的短信。送达回执详细说明了网络报告。
方向是否影响计费?
发送和接收使用不同的费率,因此出站价格无法代表基于回复的对话的成本。
Bird 按分段对出站短信计费,每个分段是一个可计费的网络部分。其入站计费同样按分段计数,适用入站费率和运营商费用。请查看 SMS 定价了解相关方向和目的地的费用。
客户自身的手机套餐决定了发送回复时是否产生费用。在将回复描述为免费之前,请先确认该套餐。需要回复的流程既取决于客户发送回复的能力,也取决于你接收回复的能力。
哪些发送者可以接收回复?
配置为接收 SMS 的电话号码发送者可以接收回复。
字母数字发送者 ID 是一个显示名称而非电话号码,无法接收短信回复。因此,使用名称发送营销活动时,需要为收件人提供另一种受支持的退订方式。
在构建等待回复的工作流之前,请先选择接收能力。发送者类型介绍了可用的身份,STOP 关键词涵盖了退订回复的处理。
如何在 Bird 中区分方向?
读取消息的 direction 字段,其值为 outbound 和 inbound。
outbound 表示从 Bird 发送者发出的消息。inbound 表示从订阅者接收到的消息。Bird 通过 sms.received 事件公开入站客户消息,与送达事件分开。
例如,一条通知及其回复会产生两条独立的消息记录。重建对话时需要存储两个方向的记录;仅统计出站记录会遗漏回复。
简而言之
方向以手机的视角命名。
Mobile originated 从手机发出;mobile terminated 到达手机。
回复和回执可以共用同一个传输操作。
SMPP 通过 deliver_sm 同时承载两者,因此仅凭操作名称无法判断是否为客户回复。
发送和接收的费用各自独立。
在设计基于回复的流程之前,请检查各方向适用的费率。
回复需要一个可接收的号码。
字母数字发送者名称无法接收回复,因此对话需要使用其他发送者类型。