Skip to content

MDD Sim Gateway v1.3.14

Choose a tag to compare

@github-actions github-actions released this 20 Aug 05:58
· 44 commits to main since this release
v1.3.14
1be7750

新增:超长短信自动合并

超过一条短信长度的文本,现在会作为一条完整消息收到,不再是散开的好几条。

运营商的短信中心会把长文本拆成多条独立的 SMS-DELIVER,每条带一个说明"我是第几段"的头部(UDH)。引擎里的 Asterisk 其实已经解出了这个头部,却直接丢弃,于是每一段都变成了独立的一条消息——而且顺序还是乱的(分段不保证按顺序送达),每一段各推送一次通知。

现在引擎会把分段的 编号/总数/序号 暴露出来,控制面据此缓冲并拼回原文,只入库一次、只通知一次。

其他行为:

  • 重复推送会被吸收:运营商没收到确认时会重推分段,不会因此产生重复消息,也不会让同一条消息被拼装两次。
  • 缺段不会丢:某一段始终没到的话,三分钟后仍会把已收到的内容入库,缺口用 […] 标出,而不是无限期扣住。
  • 单条短信不受影响:普通短信不带分段头部,走的还是原来的代码路径。

升级提示:此功能需要重新构建引擎镜像。控制面可以先单独升级——旧引擎不发送分段字段,控制面会按单条处理,行为与升级前一致,两边可以分开部署。


Added: multi-part SMS reassembly

A text longer than one SMS now arrives as one message instead of several.

The SMSC splits such a text into separate SMS-DELIVER PDUs, each carrying a User Data Header saying which part it is. Asterisk already unpacked that header and then discarded it, so every part surfaced as its own message — out of order, since parts are not delivered in sequence, each raising its own notification.

The engine now exposes each part's reference/total/sequence, and the control plane buffers the parts until the whole text can be assembled, then stores and notifies once.

  • Re-pushed parts are absorbed. Parts a carrier re-sends when an acknowledgement is missed cannot duplicate a message or complete a group twice.
  • A missing part does not lose the message. After three minutes the rest is stored with the gap marked […] rather than held indefinitely.
  • Single-part SMS is untouched. An ordinary message carries no concatenation header and takes exactly the previous code path.

Upgrade note: this requires a rebuilt engine image. The control plane can be updated on its own — an older engine sends no segment fields and is treated as single-part, so the two halves deploy independently.


Full Changelog: v1.3.13...v1.3.14