Kannel作为SMPP服务器

我已经创build了短信网关应用程序,其中我使用kannel连接到MNO(移动networking运营商)SMSC。我有一套客户端连接到我的应用程序API(JSON API),在我的应用程序中,我基本上发送请求通过其http API访问。 我有这样的新客户,他的要求是他的请求应该通过SMPP协议,因为他不觉得JSON API是非常安全的,因为消息可以在接收者的路上被改变。 要创buildSMPP服务器,我使用Node JS SMPP服务器和客户端模块 ,然后在收到请求后,我基本上向通道发出HTTP请求。 我在这里面临的问题是如何将DLR发送到客户端。 据我所知,kannel为我提供了从SMSC获得递送报告的能力,正如他们的文档中所引用的那样,我可以这样做,但是我怎样才能从我的客户端获得消息ID,然后发送给客户端以便客户端能够将传送报告映射到特定的消息。 这是我想知道的

  1. 是否可以使用KANnel作为SMPP服务器,即允许第三方连接我的基于kannel的应用程序,但是却能够监控消息?
  2. 如果这是不可能的,第三方如何发送消息ID,以及如何在SMPP中接收消息ID?

任何build议更好的应用程序devise或资源,我可以装备自己必要的知识来解决这个问题将不胜感激。

免责声明:我是SMPP协议的新手

这个问题中有几个有趣的部分。 让我们一次一个地看他们。

实体之间的连接

您描述了实体之间的以下连接。 为了方便讨论,我现在在这里铺设。

您现有的客户使用以下连接stream程:

Client <== JSON ==> Kannel <== SMPP ==> MNO SMSC

对于新客户,您正在使用以下连接stream程:

Client ESME <== SMPP ==> Nodejs SMPP+JSON SMS Client <== ==> Kannel <== SMPP ==> MNO SMSC

备选连接1:消除Kannel

对于你的新客户,你也可以考虑这个(简化)stream程:

Client ESME <== SMPP ==> Nodejs SMPP/Nodejs ESME <== SMPP ==> MNO SMSC

在这里问一个重要的问题 – 为什么你需要在stream动Kannel。

备选连接2:为什么不使用JSON

我想客户想说的是:

  • JSON是基于文本的协议,可以在飞行中轻松操作。
  • SMPP是基于二进制的,不能在飞行中轻松操纵它。

您可以通过提供一个/两个以下选项来帮助客户:

  • JSON通过HTTP工作。 您始终可以通过HTTPS进行连接,消除了操作的可能性。
  • 通过VPN连接。

我不知道这个stream程是否会解决你的其他问题,但它简化了你的stream程。

注意:即使使用SMPP也应该使用VPN。

可以使用KANnel作为SMPP服务器

免责声明:我没有Kannel的经验。

有点Googlesearch – Kannel不支持允许创buildSMSC 。 这有点过时了。

messageId的映射

我完全不明白这个问题。 无论如何,这是我的回答:

在哪里可以findmessageId?

  • messageId字段始终存在于submit_sm和data_sm(由ESME发送)。
  • messageId字段存在,但按照协议在deliver_sm上发送(由SMSC发送)。

如何映射messageId?

作为中间应用程序提供者,您负责将messageId映射到/从两端收发。 看到这个问题的一些相关的讨论 – 短信提交和交付的消息ID不一样 。

为了用kannel和nodejs创build一个短信网关,你可以使用kannel.js

但kannel不支持smsc作为服务器,使用nodejs可以使用shorty来构buildsmpp服务器。

要处理高stream量的短信交易,您必须使用Vsmppbox或Opensmppbox SMPP服务器和Kannel SMPP网关,并从Web应用程序插入短信另外,您可以使用Sqlbox。 在kannel最新svn中findsqlbox和opensmppbox里面的addons目录,Vsmppbox是一个拥有更多function的授权SMPP服务器