jk.*_*jk. 6 sms encoding gsm smpp
我正在与一家公司合作,该公司正尝试使用各种语言向世界各国的人们发送短信.
该公司有一个定制编写的应用程序,它使用SMPP协议与各种电信公司的SMSC进行通信.
不同的电信公司告诉我们,data_encoding用于向SMSC提交SMPP PDU.
目前我们使用的是7位GSM),Latin-1和UCS-2编码.我们正在使用每个Telco告诉我们使用的编码.对SMPP PDU的有效载荷进行编码,并相应地设置data_coding参数(GSM为0x00,Latin-1为0x03,UCS-2为0x08).
问题1:我们使用什么编码来提交SMPP PDU到SMSC真的很重要吗?SMSC是否应该能够根据data_coding参数的内容从提交的SMPP编码转换为适当的编码?我们不应该能够通过SMPP作为UCS-2提交所有消息,将data_coding参数设置为0x08,并让Telco负责为我们转换到SMS PDU吗?
目前,我们发送想要发送葡萄牙语的短信.电信公司告诉我们使用SMPP的"SMSC默认字母"来提交消息.进一步说,他们说这与GSM默认字母表相同这是有关的,因为葡萄牙语字母没有完全由GSM默认字母表示.电信公司似乎只是简单地将葡萄牙语字母音译为英语字母.电信公司通知我们,"如果您发送的SMS具有SMSC无法识别的特殊字符(例如,á,ó,ã),SMSC会将这些字符编码为最接近的字符." 我发现这有点不可能,因为GSM Default Alphabet首先不支持这样的字符.
问题2:如何提交特殊字符,如果使用GSM默认字母,则无法识别?是否所有作为GSM默认字母提交的字符都不符合GSM 03.38标准中定义的7位,128字母字母?
问题3:由于电信公司要求我们使用"GSM默认字母",我们应该提交编码为7位打包八位字节的SMPP有效负载,对吗?
我们的应用程序将文本存储为UTF-8.由于葡萄牙电信公司要求我们提交带有GSM默认字母的有效载荷的SMPP,我认为我们需要将UTF-8转换为7位GSM默认字母表.我当前的策略涉及映射每个具有GSM默认等效值(总共128个字符)的UTF-8字符,然后将其他UTF-8字符音译为最接近的GSM默认字母表等效字符,否则为问号.
问题4:这是处理从UTF-8到GSM默认字母表的转换的适当方式吗?似乎没有很多其他方法.有问题的应用程序在Unix环境中使用Ruby.没有现有的支持GSM的库似乎可用,因此自定义库似乎是唯一的方法.
我的研究发现了GSM锁定移位表的细节,以支持仅使用7位的其他语言.锁定移位表在SMS PDU的UDH部分中指定.
问题5:如何通过SMPP使用锁定移位表发送SMS消息?是否需要修改SMPP PDU有效负载以包含指定锁定移位表的UDH?data_coding参数应该设置为什么?
如果有人能够权威地回答这些问题,我会很激动.