node.jssmssmppkannel

Kannel as SMPP server


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

  1. Can kannel be used as SMPP server i.e allow third parties to connect my my kannel based application and yet be able to monitor the messages going through?
  2. If that is not possible, how can a third party send a message ID and how do I receive the it in SMPP?

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


Solution

  • There are few interesting parts in the question. Let's look at them one at a time.

    Connectivity between entities

    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

    Alternative connectivity 1: Eliminate Kannel

    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.

    Alternative connectivity 2: Why not use JSON

    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.

    Can kannel be used as SMPP server

    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.

    Mapping of messageId

    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.