Submit SM提交消息截断问题咨询:ESME内容被SMSC截断
Submit SM消息截断问题的排查方案
可能的根因及对应排查动作
- 字符编码不匹配:若ESME采用
UCS-2编码(每个字符占2字节)发送259字符,实际字节数为518,但如果SMSC默认按GSM-7bit(单字节)解析,会将UCS-2字节流误判为GSM字符,导致可承载字符数减半(和你遇到的130左右的截断长度吻合)。需确认ESME与SMSC的data_coding参数是否一致——比如ESME设为0x08(UCS-2),SMSC不能按0x00(GSM-7bit)处理。 sm_length字段填写错误:ESME提交请求时,若sm_length字段的数值错误(比如填了130而非实际消息的字节数),SMSC会直接按该长度截断内容。通过TCP dump重点核对该字段值与消息实际字节数是否匹配。- SMSC单条消息字节限制未调整:部分SMSC的单条原始消息字节上限独立于分片数配置,比如限制单条为130字节(GSM-7bit的160字符对应140字节,可能预留了头部字节),即使开启分片,也会先截断单条内容再分片,导致丢失。需检查SMSC的
max_message_size(单条消息字节数)配置,而非仅调整分片数。 - 中间节点截断:若ESME与SMSC之间存在第三方网关/代理,该节点可能有自身的消息长度限制且未配置适配,直接截断了内容。通过TCP dump对比ESME发出的包与SMSC接收的包,定位截断发生的环节。
验证步骤
- 对比TCP dump中ESME发出的Submit SM包与SMSC收到的包,重点校验
short_message内容长度、sm_length值、data_coding值是否一致。 - 临时发送纯GSM-7bit字符组成的259字符消息(如全英文、数字),若未出现截断,即可确认是编码不匹配问题。
- 核查SMSC的
data_coding默认处理规则,以及单条消息的字节上限配置。
内容的提问来源于stack exchange,提问作者Paul Kisira
相关产品推荐
相关产品推荐

