我遇到了一个问题,使用ModemManager (mmcli1.14.2)以编程方式发送短信,其中包含一些特殊字符的组合,但我还没有识别。
我想发送的短信如下:
OK({ yRgK1DNXQKo4C7uK43WnHArW1XbNekn6JJ80qgMTRcPM8pgGTJMwYDgseRRYOEA6NdCgQNgiSoheRZnK0czZy5P0GTny3rRrSEE9HTiFepFnhDxM6B2J3bpbHnHJiYbSQt40rt0dwIoZYeiEYyo7glw1kswTrg7He5Ojl8ysyxF4X54SCQomZrKRPsrEHpT2vLjCLfGn9pDGHxodwXbbKADm8j4waiGVnZfRBJBDSx8VUO28Yit068aM32t9a91NC0eUVkyUEGkNsm75cVQ7KJ0rpzucTRSudO7DJLxrgetz })我在这里使用一个随机字符串来模拟一个大的有效载荷。实际上,大括号之间的有效载荷是一个更结构化的模型。
。
我使用下面的发送方法来面对这个问题。
使用MMCLI的
使用mmcli发送SMS:
mmcli -m 1 --messaging-create-sms="number=<NUMBER>,text='OK({yRgK1DNXQKo4C7uK43WnHArW1XbNekn6JJ80qgMTRcPM8pgGTJMwYDgseRRYOEA6NdCgQNgiSoheRZnK0czZy5P0GTny3rRrSEE9HTiFepFnhDxM6B2J3bpbHnHJiYbSQt40rt0dwIoZYeiEYyo7glw1kswTrg7He5Ojl8ysyxF4X54SCQomZrKRPsrEHpT2vLjCLfGn9pDGHxodwXbbKADm8j4waiGVnZfRBJBDSx8VUO28Yit068aM32t9a91NC0eUVkyUEGkNsm75cVQ7KJ0rpzucTRSudO7DJLxrgetz})'"然后
mmcli -m 1 --sms <id> --send其结果如下:
成功发送短信
使用DBUS的
Send()方法发送它。
我使用C#和Tmds.Dbus与总线交互。使用这两种方法,我都无法在收件人的电话上接收消息。如果我试图发送相同的信息,没有大括号,它将被传递,没有任何问题。如果我尝试用大括号发送另一条消息(类似于"OK({Test})“),那么它仍然没有任何问题。如果我试图将上述任何消息从手机发送到我正在使用的设备(与调制解调器管理器一起),它们就会毫无问题地被接收(无论是否有大括号,长和短版本)。
似乎有一种特殊的字符组合会给ModemManager带来问题,因此不会被发送。
事实上,同样的信息可以从手机发送到ModemManager,这让我觉得移动运营商方面没有任何问题。
不幸的是,由于实际有效载荷包含一个JSON编码模型,因此大括号非常重要。
发布于 2022-11-03 12:10:54
你在试图发送309个字符的缓冲区。SMS有一个限制( 104)。
https://unix.stackexchange.com/questions/652793
复制相似问题