我遇到了使用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 條)。