ModemManager (mmcli 1.14.2) を使用して、まだ特定していない特殊文字の特定の組み合わせを含む SMS をプログラムで送信しようとすると問題が発生します。
送信しようとしている SMS は次のとおりです。
OK({ yRgK1DNXQKo4C7uK43WnHArW1XbNekn6JJ80qgMTRcPM8pgGTJMwYDgseRRYOEA6NdCgQNgiSoheRZnK0czZy5P0GTny3rRrSEE9HTiFepFnhDxM6B2J3bpbHnHJiYbSQt40rt0dwIoZYeiEYyo7glw1kswTrg7He5Ojl8ysyxF4X54SCQomZrKRPsrEHpT2vLjCLfGn9pDGHxodwXbbKADm8j4waiGVnZfRBJBDSx8VUO28Yit068aM32t9a91NC0eUVkyUEGkNsm75cVQ7KJ0rpzucTRSudO7DJLxrgetz })
ここでは大きなペイロードをシミュレートするためにランダムな文字列を使用しています。実際には、中括弧で囲まれたペイロードはより構造化されたモデルです。。
問題は、ペイロードをカプセル化するために中括弧を使用すると、メッセージが受信者に配信されないことです。
次の送信方法を使用すると、この問題が発生しています。
MMCLIの使用
mmcli を使用して SMS を送信するには、次のようにします。
mmcli -m 1 --messaging-create-sms="number=<NUMBER>,text='OK({yRgK1DNXQKo4C7uK43WnHArW1XbNekn6JJ80qgMTRcPM8pgGTJMwYDgseRRYOEA6NdCgQNgiSoheRZnK0czZy5P0GTny3rRrSEE9HTiFepFnhDxM6B2J3bpbHnHJiYbSQt40rt0dwIoZYeiEYyo7glw1kswTrg7He5Ojl8ysyxF4X54SCQomZrKRPsrEHpT2vLjCLfGn9pDGHxodwXbbKADm8j4waiGVnZfRBJBDSx8VUO28Yit068aM32t9a91NC0eUVkyUEGkNsm75cVQ7KJ0rpzucTRSudO7DJLxrgetz})'"
その後
mmcli -m 1 --sms <id> --send
結果は次のようになります。
SMS を正常に送信しました
DBUSの使用
私はメッセージングDBUSインターフェースで新しいものを作成するSMS、その「数値」と「テキスト」(UTF8 文字列)プロパティを設定し、そのSend()
メソッドを使用して送信します。
私はC#を使っていますTmds.Dbusバスと対話します。
問題
どちらの方法でも、受信者の携帯電話でメッセージを受信できません。同じメッセージを送信しようとするとそれなし中括弧で囲むと問題なく配信されます。別のメッセージを送信しようとするとと中括弧(「OK({テスト})「それでも問題なく配信されます。上記のメッセージのいずれかを電話から使用しているデバイス(モデム マネージャー付き)に送信しようとすると、問題なく受信されます(中括弧の有無、長いバージョンと短いバージョン)。
特殊な文字の組み合わせが ModemManager に問題を引き起こし、送信されないようです。
同じメッセージを電話から ModemManager に送信できるという事実から、モバイル オペレータ側に問題はないと考えられます。
残念ながら、実際のペイロードには JSON でエンコードされたモデルが含まれているため、中括弧が重要になります。
答え1
309 文字のバッファを送信しようとしています。SMS には制限 (104) があります。