I have created SMS gateway application in which I'm using kannel to connect to MNO(Mobile Network Operators) SMSCs.I have set of clients who are connected to my application given the API (JSON API) and in my application I basically send the request to kannel via its http API. How I have this new clients whose requirement is that his request should go via SMPP protocol as he doesn't feel that JSON API is that much secure as messages can be altered on its way to the recipient. To create SMPP server I'm using Node JS SMPP server and client module and then after receiving the request I basically make HTTP request to kannel. The problem I'm facing here is how do I send DLR to the client. I understand that kannel provides me with the capability to do get delivery reports from SMSC as cited here in their documentation,that I can do but how can I get message id from my client to which I would send to kannel so that the client would be able to map a delivery report to the particular message. Here is what I would like to know
Any suggestion of a better application design or resources where I can equip myself with necessary knowledge to tackle the issue will be much appreciated.
Disclaimer : I'm a newbie to SMPP protocol
There are few interesting parts in the question. Let's look at them one at a time.
You described the following connectivity between entities. I am laying out here now for convenience of discussion.
Your existing customers use the following connectivity flow:
Client <== JSON ==> Kannel <== SMPP ==> MNO SMSC
For your new customer, you are using the following connectivity flow:
Client ESME <== SMPP ==> Nodejs SMPP+JSON SMS Client <== ==> Kannel <== SMPP ==> MNO SMSC
For your new customer, you can also consider this (simplified) flow:
Client ESME <== SMPP ==> Nodejs SMPP/Nodejs ESME <== SMPP ==> MNO SMSC
An important question to ask here - why do you need Kannel in the flow.
I think the customer is trying to say is:
You can help the customer by offering one/both the following options:
I don't know if this flow will solve your other problems, but it simplifies your flow.
Note: VPN should be used even with SMPP.
Disclaimer: I do not have experience with Kannel.
A bit googling revealed - Kannel does not support allowing creating SMSC with it. It is a bit dated though.
I did not understand the question completely. Anyway, here is my attempt to answer it:
Where to find messageId?
How to map messageId?
As intermediate application provider, you are responsible for mapping messageId received/sent from/to both ends. See this SO question for some relevant discussion - Message ID for SMS submission and delivery not the same.