SMPP TLV optional parameters - smpp

I'm new to SMPP protocol. I'm using it for sending SMS via SMSC.
I found in docs that it is possible to send optional TLV parameters.
I want to send additional_status_info_text in submit_sm and receve it back in deliver_sm. Is it by spec of SMPP or not?

Not entirely sure, but I don't think it is by spec. I remember additional_status_info_text being used mostly to send extra information, like for debugging purposes.
You want to receive in the deliver_sm with the delivery receipt for your submit_sm the info you sent in the TLV or ?
Maybe if you could give more details about what you are trying to achieve exactly with the return of that parameter, I could be of more help.

Related

ISO 8583 response when client not previously initialize with 0800

My question mainly will be related to ISO8583 for MTI "0800" regarding "logon request".
The question is, what if the client did not initialize with "0800" previously? So he just sends a message with MTI other than "0800".
For instance, if the client sent "0200", but not yet send "0800" previously, how we should tell him that he must do "0800" first:
Should it be using the same ISO8583 message class from the request?. For instance, when user send a message with MTI "0200", but because he did not logon previously with "0800", we give response "0220"
Or should it use "08xx" MTI response for every request sent by the user when they did not initialize a "logon request"?. For instance, even user sent MTI "0200", we will still give them "0820" instead "0210" because he did not login yet.
I am sorry if maybe my question does not make sense, I just a few days working with ISO8583. I hope someone can help me answer my question with a general practice or even best practice of ISO8583, or just please correcting me :).
Thanks in advance.
Regards.
When you send a 0800, you should expect a 0810 in response.
If, on the other hand, you receive a 0800, you should reply with a 0810.

MessageBird API : How can I know that the message I have sent has been read by the receiver or not?

I am using WhatsApp Business API and in conversation, I want to know the message I have sent has been read or not by the receiver.
I have got response as 'sent', 'delivered' and other but not the 'read'.
I also have checked on my number (WhatsApp Privacy Setting) where I have set "Read receipts" enabled, if this was the case.
Could any one please help me to sort it out?

Spiking a message in OpenFire

I wanted to write a plugin in OpenFire to inspect incoming messages between users and possibly stop this message from ongoing to the target recipient.
I can write a plugin that implement PacketInterceptor, but is there an api that supports blocking this packet from being sent or possibly modifying the body.
The rational for this is possibly offensive or illegal content. The times we live in :(
I found a packet filter created to do exactly this.
It can be found at https://www.igniterealtime.org/projects/openfire/plugins/packetfilter/readme.html

Process SMS when notified via websocket

So I managed to connect to the websocket with my API token and I do get notifications. For incoming calls, I do get a push with all info like so:
{"type":"push","targets":["stream"],"push":{"type":"mirror","source_device_iden":"XXXXXXX","source_user_iden":"ujC7S24sQxw","client_version":206,"dismissible":true,"title":"5555551212","body":"Incoming call","application_name":"Pushbullet","package_name":"com.pushbullet.android","notification_id":"6","icon"
"Big value here"}}
So I can see that call came from 555-1212 (I changed number for privacy) and it all makes sense. However, for SMSs, all I get is a notification that SMS changed. No body field so I can't see where it came from and what the message is. All it says is sms_changed for type:
{"type":"push","targets":["stream"],"push":{"type":"sms_changed","source_device_iden":"XXXXXXXXX"}}
What am I doing wrong? I would like to get the SMS message and sender info so that I can publish it. Any and all help will be greatly appreciated.
This is not publicly documented yet and we might be changing the implementation in the near future so I'm hesitant to make it public. Also I don't know the specifics of the current implementation.
You can view how it works right now by using www.pushbullet.com and looking at the network traffic (in chrome inspector) when you do SMS stuff on the website.

Receiving SMS over SMPP

I have a project coming up where I need to send and receive messages through a specific mobile operator, which only provides an SMPP interface. The whole project will be a hosted website. I have already read quite a lot, but I do not yet quite understand what is actually needed from my side to use the protocol.
Should my application try to maintain a constant connection to the smpp?
Can I simply connect, send a message and then disconnect?
Are receiving messages based on push or pull?
Thanks for the help.
SMPP is a peer-to-peer protocol. That should mean that SMS Gateway (your side) and SMSC (your mobile operator) need to have a proper bind/connection established. Even when there are no SMS or DLRs to send/receive, there is a continous exchange of smpp PDU (enquire_link/enquire-link_resp) that ensure that the bind is established.
In detail, if you send an enquire_link PDU and you get no response (enquire_link_resp) the bind is broken. Your sms won't be delivered (will remain enqueued in your gateway store), and you won't receive MOs (incoming sms) or DLRs (delivery report). To re-establish the connection you should re-initiate the connection.
So, my answer would be that you need a constant connection to SMSC.
You are stating you want to receive messages, as a result at least a bind_receiver is needed. Because you don't know when messages are going to come in, you will have to be constantly connected, rather than disconnecting after each event.
With regards to your question about "push or pull" this depends on how you solve the first problem. If you can build a solution that is constantly connected, the result will be a push (the carrier will push it to you as soon as they receive the message). If (for some reason) you cannot maintain a constant connection, you'll end up building a pull mechanism. You'll connect to the carrier ever X seconds to see if they have a message waiting for you.
I do need to highlight 2 pitfalls though:
A number of carriers in the world, do not store or even accept messages if you are not connected, therefore, depending on which carrier you interact with, you might be forced to use a continuous connection.
Most carriers do not allow you to open and close connections in quick succession. Once you disconnect, you can not reconnect for a time frame of X seconds.
Therefore a constant connection is really the way to go. Alternatively, you can look into a company like Nexmo, which will provide you with a HTTP Call every time a message arrives.
I'm not sure which language your developing your application in, but if you use any of the popular languages (Java, PHP, Perl) there are modules out there that handle basic SMPP Connectivity for you. A quick google search for your language and "SMPP Client" will give you a list of references.