ModemManager - 无法发送带有花括号的短信

ModemManager - 无法发送带有花括号的短信

我遇到了使用ModemManager(mmcli 1.14.2)以编程方式发送短信的问题,其中包含我尚未识别的特殊字符的特定组合。

我尝试发送的短信如下:

OK({ yRgK1DNXQKo4C7uK43WnHArW1XbNekn6JJ80qgMTRcPM8pgGTJMwYDgseRRYOEA6NdCgQNgiSoheRZnK0czZy5P0GTny3rRrSEE9HTiFepFnhDxM6B2J3bpbHnHJiYbSQt40rt0dwIoZYeiEYyo7glw1kswTrg7He5Ojl8ysyxF4X54SCQomZrKRPsrEHpT2vLjCLfGn9pDGHxodwXbbKADm8j4waiGVnZfRBJBDSx8VUO28Yit068aM32t9a91NC0eUVkyUEGkNsm75cVQ7KJ0rpzucTRSudO7DJLxrgetz })

我在这里使用随机字符串只是为了模拟大的有效负载。实际上,花括号之间的有效负载是一个更加结构化的模型

问题是,每当我使用花括号封装有效负载时,消息都不会传递给收件人。

我使用以下发送方法面临这个问题。

使用MMCLI

使用 mmcli 发送短信:

mmcli -m 1 --messaging-create-sms="number=<NUMBER>,text='OK({yRgK1DNXQKo4C7uK43WnHArW1XbNekn6JJ80qgMTRcPM8pgGTJMwYDgseRRYOEA6NdCgQNgiSoheRZnK0czZy5P0GTny3rRrSEE9HTiFepFnhDxM6B2J3bpbHnHJiYbSQt40rt0dwIoZYeiEYyo7glw1kswTrg7He5Ojl8ysyxF4X54SCQomZrKRPsrEHpT2vLjCLfGn9pDGHxodwXbbKADm8j4waiGVnZfRBJBDSx8VUO28Yit068aM32t9a91NC0eUVkyUEGkNsm75cVQ7KJ0rpzucTRSudO7DJLxrgetz})'"

进而

mmcli -m 1 --sms <id> --send

给出以下结果:

短信发送成功

使用DBUS

我用消息传递创建新的DBUS接口短信Send(),设置其“number”和“text”(UTF8字符串)属性,然后使用其方法发送。

我使用 C# 和TMDS.Dbus与总线交互。

问题

使用这两种方法,我都无法在收件人的手机上接收消息。如果我尝试发送相同的消息没有大括号,它可以毫无问题地交付。如果我尝试发送另一条消息大括号(类似于“好的({测试})“它仍然可以毫无问题地交付。如果我尝试将上述任何消息从手机发送到我正在使用的设备(使用调制解调器管理器),它们就会毫无问题地收到(带或不带花括号,长或短)版本)。

似乎有一种特殊的字符组合会导致 ModemManager 出现问题,因此不会被发送。

事实上,相同的消息可以从手机发送到 ModemManager,这让我认为移动运营商方面没有任何问题。

不幸的是,由于实际有效负载包含 JSON 编码模型,因此花括号很重要。

答案1

您正在尝试发送 309 个字符的缓冲区。 SMS 有限制(最多 104 条)。

相关内容