Kannel作为SMPP服务器

Sam*_*son 1 sms smpp kannel node.js

我已经创建了SMS网关应用程序,其中我使用kannel连接到MNO(移动网络运营商)SMSC.我有一组客户端连接到我的应用程序给定API(JSON API)和我的应用程序我基本上发送通过其http API请求kannel.我是如何拥有这样的新客户端,他的要求是他的请求应该通过SMPP协议,因为他觉得JSON API不那么安全,因为消息可以在发送给收件人的途中被更改.要创建SMPP服务器,我使用的是Node JS SMPP服务器和客户端模块 然后在收到请求后我基本上向kannel发出HTTP请求.我在这里面临的问题是如何将DLR发送给客户端.我明白的Kannel为我提供了做从SMSC取得交付报告所引用的能力在这里他们的文档中,我可以做,但我怎样才能从我的客户端消息的ID,而我会送的Kannel,使客户端会能够将交付报告映射到特定消息.这是我想知道的

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

任何有关更好的应用程序设计或资源的建议,我都能掌握必要的知识来解决这个问题,我们将不胜感激.

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

Wah*_*dik 8

问题中有一些有趣的部分.让我们一次看一个.

实体之间的连接

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

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

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

对于新客户,您使用以下连接流程:

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

替代连接1:消除Kannel

对于您的新客户,您还可以考虑此(简化)流程:

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

这里要问一个重要的问题 - 你为什么要在流程中使用Kannel.

替代连接2:为什么不使用JSON

我认为客户试图说的是:

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

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

  • JSON适用于HTTP.您始终可以通过HTTPS进行连接,从而消除了操作的可能性.
  • 通过VPN连接.

我不知道这个流程是否会解决您的其他问题,但它简化了您的流程.

注意:即使使用SMPP,也应使用VPN.

可以将kannel用作SMPP服务器

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

有点谷歌搜索透露 - Kannel不支持允许用它创建SMSC.虽然有点过时了.

messageId的映射

我完全不理解这个问题.无论如何,这是我试图回答它:

哪里可以找到messageId?

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

如何映射messageId?

作为中间应用程序提供者,您负责映射从/向两端接收/发送的messageId.有关相关讨论,请参阅此SO问题 - 短信提交和发送的消息ID不一样.