This SMPP Module implements "SMS Dialogs": when a CommuniGate Pro user sends an Instant Message to some SMPP endpoint (such as a mobile phone), the endpoint user can reply and the reply will be sent to the CommuniGate Pro user as an SMS. When an instant message sent from some user1@domain1 address is relayed as an SMS message to the phone number XXXXXXX, the SMPP module adds a prefix to the message text: @a=user1@domain1 message text
Subsequent instant messages from the same user1@domain1 address are relayed to the XXXXXXX phone number with the "short" prefix: @a message text
When an instant message sent from some other user2@domain2 address is relayed as an SMS message to the same phone number XXXXXXX, the SMPP module adds a different prefix to the message text: @b=user2@domain2 message text
Subsequent instant messages from the same user2@domain2 address are relayed to the XXXXXXX phone number with the "short" prefix: @b message text
The SMPP module remembers these "bindings", consisting of the sender address, the destination phone number, and the prefix (a low-case letter) assigned.
When a user of the XXXXXXX phone replies to a message, the SMPP module checks all bindings for the XXXXXXX phone number. If there is exactly one binding, the module relays the received SMS message as an instant message to the address from that binding. If no binding is found, or if there are two or more binding for this phone number, the SMS message is not accepted.
The user can reply with an SMS message starting with the @x: or @x_ prefix, where "_" is the space symbol. In this case the SMPP module tries to find a binding for the XXXXXXX phone number and the x prefix. If it is found, the SMS message is relayed to the address in the found binding, otherwise the SMS message is not accepted.
Example: single dialog as seen on the mobile phone screen:
Example: two dialogs as seen on the mobile phone screen:
The SMPP Module retires each "binding" if the there it was not used in either direction for the specified Binding Timeout time period. If the Binding Timeout value is too low, then a cell phone user may not be able to answer to a recenlty received SMS message, because by the time the user discovers the SMS, the binding could have expired. If the Binding Timeout value is too high, then cell phone users may have several active bindings too often, forcing them to use @x prefixes too often.