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