首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在jsmpp中将消息分离到第三方绑定程序

如何在jsmpp中将消息分离到第三方绑定程序
EN

Stack Overflow用户
提问于 2016-04-09 01:07:34
回答 1查看 240关注 0票数 1

我正在开发一个使用jsmpp库的sms网关。

这是我的场景。

我在两个连接上绑定到SMSC(电信公司),并通过SMSC分配给我的两个短代码(比如30002和30003 )接收消息。

然后,第三方绑定(参与批量短信推送的公司),该公司通常应该通过SMPP连接直接绑定到SMSC连接到我的SMPP服务器(该服务器是一个SMSCE 213)。

第三方绑定器向服务器发送消息,我捕获这些消息,将它们排队并发送给主要的公司)。

然后,电信公司用递送报告、和来自批量消息报告的消息以及我转发给第三方绑定的其他数据作为回应。

当我只有一个第三方绑定程序时,这个场景运行得很好。

但是现在我们想要处理一个更一般的情况,我们有许多第三方绑定程序

由于我只有两个短代码可供SMSC转发消息给我,我如何知道哪个第三方绑定拥有SMSC响应?

我有一个令人讨厌和低效的选择,将答复转发给所有相关的第三方。

除上述之外,唯一的其他选项是为每个第三方绑定器SMSC获取不同的短代码,这对我的场景来说并不符合成本效益。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-09 19:00:31

首先,您可以非常容易地将所有DLRs转发给正确的第三方。为了做到这一点,您必须将一些额外的数据存储在您选择的数据库中(如果您只有一个应用程序节点,并且流量很低,那么即使是SQLite也足够了;否则请考虑一些NoSQL解决方案):

  1. 每次从电信SMSC接收submit_sm_resp数据包时,就开始存储一对(实际上是键值) message_id -> third_party_id
  2. 每次从SMSC接收deliver_sm数据包时,从数据包中检索message_id,然后在DB中查找这个message_id,以找到要转发它的第三方。
  3. 在成功地为该message_id -> third_party_id转发了最终的message_id后,考虑删除该message_id对。

在MO消息中,情况要糟糕得多。为多个客户端(第三方)使用单个短代码的唯一可能(但也是非常糟糕)的方法是将TTL和超时脆弱地结合在一起。只有当您期望的每个MO都是对以前的MT消息的答复时,它才有意义。

  1. 使用TLV或额外的SMPP links将需要应答的传入MTs与接收方分开。让我们称其为MTs Questions
  2. 处理Questions如下所示:

  1. 处理MO消息(Answers)如下:

UPD。文本精化

为了知道MO消息的正确第三方(而不是交付报告),您需要一些关于消息发送给谁的附加信息。此信息可能来自第三方或订阅方(首先发起MO消息的用户)。我的图表正式描述了第三方提供这些信息的情况。

  1. 第三方向您发送MT消息,表示他们期望接收方为Answered
  2. 您在数据库中做了一个说明,如果收件人在下一个N分钟内向您发送MO消息,那么这个Answer应该被转发到前面提到的第三方。

我很抱歉,我的答案并不是专门针对jsmpp的,但是我对这个库知之甚少,然而,我也相信,一旦你理解了一个算法,不管你的仪器是什么,实现它应该是相当容易的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36511602

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档