我正在使用jsmpp库开发一个sms网关。
这是我的情景。
我通过2个连接绑定到 SMSC (电信公司),并通过 SMSC 分配给我的2个短代码(例如30002和30003)接收消息。
然后,第三方活页夹(参与批量短信推送的公司)通常应该直接绑定到 SMSC 通过 SMPP绑定到我的网关与我的 SMPP 服务器的连接(作为 SMSC 对他们进行排序)
第三方活页夹向 SMPP 服务器发送消息,我捕获此消息,排队并将其发送到主 SMSC (电信公司)。
然后,电信公司以递送报告和来自批量邮件报告的消息以及我转发给第三方活页夹的其他数据进行回复。
当我只有1个第三方活页夹时,此方案效果很好。
但现在我们想处理一个更常见的情况,即我们有很多第三方活页夹。
由于 SMSC 只有2个短代码可以向我发送消息,我怎么知道哪个第三方活页夹拥有 SMSC 响应?
我有一个令人讨厌的低效选项,可以将回复转发给所有连接的第三方。
除上述内容外,唯一的另一个选择是为每个第三方活页夹从 SMSC 获取不同的短代码,这是我的方案不符合成本效益。
答案 0 :(得分:1)
首先,您可以轻松地将所有DLR转发给正确的第三方。为了做到这一点,你必须在你选择的数据库中存储一些额外的数据(如果你只有1个应用程序节点和低流量,甚至SQLite就足够了;否则看一些NoSQL解决方案):
message_id -> third_party_id
。message_id
,然后在数据库中查找message_id
,找到要将其转发到的第三方。message_id -> third_party_id
的最终DLR后,请考虑删除message_id
对。MO消息的情况要糟糕得多。对多个客户端(第三方)使用单个短代码的唯一可能(但仍然非常糟糕)的方法是在数据上使用TTL和超时的脆弱组合。只有当您期望的每个MO都是对先前MT消息的回复时,它才有意义。
TLV
或额外SMPP links
分隔需要接收方回复的传入MT。我们打电话给那些MT Questions
。Questions
这样的事情:
Answers
),如下所示:
为了了解MO消息的正确第三方(不是发送报告),您需要一些关于消息发送给谁的其他信息。此信息可能来自第三方或订户(首先发起MO消息的用户)。我的图表正式描述了第三方为您提供此信息的情况。
Answered
的MT邮件。Answer
转发给上述第三方。我很抱歉我的答案并非针对jsmpp
,但我对这个库知之甚少,但是,我也相信,无论你的乐器如何,一旦你理解了算法,它应该相当容易。< / p>