2

我创建了 SMS 网关应用程序,在其中我使用kannel连接到 MNO(移动网络运营商)SMSCs。我有一组客户端连接到我的应用程序给定 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 中接收它?

任何关于更好的应用程序设计或资源的建议,我都可以为自己配备必要的知识来解决这个问题,我们将不胜感激。

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

4

3 回答 3

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 连接。

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

注意: VPN 应与 SMPP 一起使用。

kannel 可以用作 SMPP 服务器吗

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

有点谷歌搜索显示-Kannel 不支持允许使用它创建 SMSC。虽然有点过时了。

messageId的映射

我没有完全理解这个问题。无论如何,这是我尝试回答的问题:

在哪里可以找到 messageId?

  • messageId 字段始终存在于 submit_sm 和 data_sm(由 ESME 发送)上。
  • 根据协议,deliver_sm(由 SMSC 发送)上存在 messageId 字段但为空白。

如何映射messageId?

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

于 2013-11-06T17:07:31.183 回答
1

要使用 kannel 和 nodejs 创建短信网关,您可以使用kannel.js

但是 kannel 不支持 smsc 作为服务器,使用 nodejs 你可以使用 shorty构建 smpp 服务器。

于 2014-04-18T23:13:08.797 回答
0

要处理高流量的短信事务,您必须使用Vsmppbox或 Opensmppbox SMPP 服务器和Kannel SMPP 网关,另外还可以使用 Sqlbox 从 Web 应用程序插入短信。在 kannel 最新 svn 的 addons 目录中找到 sqlbox 和 opensmppbox,Vsmppbox 是具有更多功能的许可 SMPP 服务器

于 2016-09-01T05:30:22.210 回答