我正在开发一个使用jsmpp库的sms网关。
这是我的场景。
我在两个连接上绑定到SMSC(电信公司),并通过SMSC分配给我的两个短代码(比如30002和30003 )接收消息。
然后,第三方绑定(参与批量短信推送的公司),该公司通常应该通过SMPP连接直接绑定到SMSC连接到我的SMPP服务器(该服务器是一个SMSCE 213)。
第三方绑定器向服务器发送消息,我捕获这些消息,将它们排队并发送给主要的公司)。
然后,电信公司用递送报告、和来自批量消息报告的消息以及我转发给第三方绑定的其他数据作为回应。
当我只有一个第三方绑定程序时,这个场景运行得很好。
但是现在我们想要处理一个更一般的情况,我们有许多第三方绑定程序。
由于我只有两个短代码可供SMSC转发消息给我,我如何知道哪个第三方绑定拥有SMSC响应?
我有一个令人讨厌和低效的选择,将答复转发给所有相关的第三方。
除上述之外,唯一的其他选项是为每个第三方绑定器从SMSC获取不同的短代码,这对我的场景来说并不符合成本效益。
发布于 2016-04-09 19:00:31
首先,您可以非常容易地将所有DLRs转发给正确的第三方。为了做到这一点,您必须将一些额外的数据存储在您选择的数据库中(如果您只有一个应用程序节点,并且流量很低,那么即使是SQLite也足够了;否则请考虑一些NoSQL解决方案):
message_id -> third_party_id。message_id,然后在DB中查找这个message_id,以找到要转发它的第三方。message_id -> third_party_id转发了最终的message_id后,考虑删除该message_id对。在MO消息中,情况要糟糕得多。为多个客户端(第三方)使用单个短代码的唯一可能(但也是非常糟糕)的方法是将TTL和超时脆弱地结合在一起。只有当您期望的每个MO都是对以前的MT消息的答复时,它才有意义。
TLV或额外的SMPP links将需要应答的传入MTs与接收方分开。让我们称其为MTs Questions。Questions如下所示:
Answers)如下:
UPD。文本精化
为了知道MO消息的正确第三方(而不是交付报告),您需要一些关于消息发送给谁的附加信息。此信息可能来自第三方或订阅方(首先发起MO消息的用户)。我的图表正式描述了第三方提供这些信息的情况。
Answered。Answer应该被转发到前面提到的第三方。我很抱歉,我的答案并不是专门针对jsmpp的,但是我对这个库知之甚少,然而,我也相信,一旦你理解了一个算法,不管你的仪器是什么,实现它应该是相当容易的。
https://stackoverflow.com/questions/36511602
复制相似问题