Estou com um problema ao usar o ModemManager (mmcli 1.14.2) para enviar SMS programaticamente que contém uma certa combinação de caracteres especiais que ainda não identifiquei.
O SMS que estou tentando enviar é o seguinte:
OK({ yRgK1DNXQKo4C7uK43WnHArW1XbNekn6JJ80qgMTRcPM8pgGTJMwYDgseRRYOEA6NdCgQNgiSoheRZnK0czZy5P0GTny3rRrSEE9HTiFepFnhDxM6B2J3bpbHnHJiYbSQt40rt0dwIoZYeiEYyo7glw1kswTrg7He5Ojl8ysyxF4X54SCQomZrKRPsrEHpT2vLjCLfGn9pDGHxodwXbbKADm8j4waiGVnZfRBJBDSx8VUO28Yit068aM32t9a91NC0eUVkyUEGkNsm75cVQ7KJ0rpzucTRSudO7DJLxrgetz })
Estou usando uma string aleatória aqui apenas para simular uma grande carga útil. Na realidade, a carga útil entre chaves é um modelo mais estruturado.
O problema é que sempre que uso chaves para encapsular o payload, a mensagem não é entregue ao destinatário.
Estou enfrentando esse problema usando os seguintes métodos de envio.
Usando MMCLI
Envio de SMS usando mmcli com:
mmcli -m 1 --messaging-create-sms="number=<NUMBER>,text='OK({yRgK1DNXQKo4C7uK43WnHArW1XbNekn6JJ80qgMTRcPM8pgGTJMwYDgseRRYOEA6NdCgQNgiSoheRZnK0czZy5P0GTny3rRrSEE9HTiFepFnhDxM6B2J3bpbHnHJiYbSQt40rt0dwIoZYeiEYyo7glw1kswTrg7He5Ojl8ysyxF4X54SCQomZrKRPsrEHpT2vLjCLfGn9pDGHxodwXbbKADm8j4waiGVnZfRBJBDSx8VUO28Yit068aM32t9a91NC0eUVkyUEGkNsm75cVQ7KJ0rpzucTRSudO7DJLxrgetz})'"
e então
mmcli -m 1 --sms <id> --send
O que dá o seguinte resultado:
enviou o SMS com sucesso
Usando DBUS
Eu uso oMensagensInterface DBUS para criar um novoSMS, defina suas propriedades "número" e "texto" (string UTF8) e envie-o usando seu Send()
método.
Eu uso C# eTmds.Dbusinteragir com o ônibus.
O problema
Usando os dois métodos, não consigo receber a mensagem no telefone do destinatário. Se eu tentar enviar a mesma mensagemsemaparelho encaracolado, ele é entregue sem nenhum problema. Se eu tentar enviar outra mensagemcomaparelho encaracolado (algo como "OK({Teste})"ele ainda é entregue sem nenhum problema. Se eu tentar enviar alguma das mensagens acima de um telefone para o dispositivo que estou usando (com gerenciador de modem), elas serão recebidas sem nenhum problema (com ou sem chaves, longas e curtas versão).
Parece que há uma combinação especial de caracteres que causa problemas ao ModemManager e, portanto, não é enviada.
O fato de a mesma mensagem poder ser enviada de um telefone para o ModemManager me faz pensar que não há nenhum problema por parte da operadora móvel.
Infelizmente, como a carga útil real contém um modelo codificado em JSON, as chaves são importantes.
Responder1
Você está tentando enviar um buffer de 309 caracteres. SMS tem um limite (de 104).