SMPP, SMS, GSM, data encoding and lock shift tables

I work with a corporation that is trying to send SMS messages to people in different countries of the world in different languages.

The corporation has a custom application that communicates with the SMPP protocol with SMSC of various Telcos.

We were told by various telecommunications companies that use data_encoding to send SMPP PDUs to SMSC.

We currently use 7-bit GSM), Latin-1, and UCS-2 encodings. We use the encoding that every Telco told us to use. The SMPP PDU payload appears to be encoded, and the data_coding parameter is set accordingly (0x00 for GSM, 0x03 for Latin-1 and 0x08 for UCS-2).

Question 1 . Should it really matter what we encode that we use to send the SMPP PDUs to the SMSC? Can't SMSC convert from the presented SMPP encoding to the appropriate encoding based on the contents of the data_coding parameter? Can't we send all messages via SMPP like UCS-2, set the data_coding parameter to 0x08 and make Telco take care of converting SMS PDUs for us?

We are currently sending you the desire to send SMS messages in Portuguese. The broadcaster told us to use "SMSC Default Alphabet" for SMPP to send messages. Clicking on, they said that it was the same as the default GSM alphabet. This is because the Portuguese alphabet is not completely represented by the default GSM alphabet. It seems that telco just translates the Portuguese letters into English equivalents. The phone told us that "if you send an SMS with a special character that the SMSC does not recognize (for example, Γ‘, Γ³, Γ£), the SMSC will encode these characters to the nearest character." I find this somewhat impossible, since the GSM default alphabet does not support such characters in the first place.

Question 2 : how can special characters be represented and then not be recognized if you use the default GSM alphabet? Should all characters represented as the default GSM alphabet correspond to the 7-bit 128-letter alphabet that is defined in the GSM 03.38 standard?

Question 3 . Since telco requested to use the "GSM Default Alphabet", we need to send our SMPP payload encoded as 7-bit packed octets, right?

Our application stores text as UTF-8. Since the Portuguese telecommunications company asks for SMPP with a payload containing the GSM default alphabet, I assume that we will need to convert from UTF-8 to the 7-bit default GSM alphabet. My current strategy involves matching each UTF-8 character that has the default GSM equivalent (128 characters in total) by value, and then transliterating the other UTF-8 characters to the nearest equivalent of the default GSM alphabet and a question mark otherwise.

Question 4 . Is this a suitable way to handle the conversion from UTF-8 to GSM default alphabet? It seems that there are not many other approaches. In this application, Ruby is used in a Unix environment. Apparently, there are no libraries available that support GSM, so such a library is apparently the only approach.

In my research, details of GSM shift tables were found to support other languages ​​using only 7 bits. Shear tables are indicated in the UDH portion of the SMS PDU.

Question 5 . How to send SMS messages using shift lock tables via SMPP? Does the SMPP PDU need to be modified to contain a UDH that indicates a shift lock table? How should the data_coding parameter be set?

I would be delighted if someone could answer any of these questions authoritatively.

+6
source share

Source: https://habr.com/ru/post/892170/


All Articles