아직 인식할 수 없는 특수 문자의 특정 조합이 포함된 문자 메시지를 프로그래밍 방식으로 보내는 데 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
다음과 같은 결과를 제공합니다.
SMS가 성공적으로 전송되었습니다.
DBUS 사용
나는 사용한다메시징새 DBUS 인터페이스 생성짧은 메시지Send()
, "숫자" 및 "텍스트"(UTF8 문자열) 속성을 설정한 다음 해당 메서드를 사용하여 보냅니다.
저는 C#을 사용하고 있습니다.TMDS.D버스버스와 상호 작용합니다.
질문
두 가지 방법을 모두 사용하면 수신자의 휴대폰으로 메시지를 받을 수 없습니다. 같은 메시지를 보내려고 하면아니요중괄호는 문제없이 전달됩니다. 다른 메시지를 보내려고 하면그리고중괄호("와 유사)알았어 ({테스트})"여전히 문제 없이 전달됩니다. 모뎀 관리자를 사용하여 휴대폰에서 사용 중인 장치로 위의 메시지를 보내려고 하면 문제 없이 수신됩니다(중괄호 유무, 길거나 짧음) 버전 ).
ModemManager에 문제를 일으키는 특별한 문자 조합이 있는 것 같아서 전송되지 않습니다.
휴대폰에서 ModemManager로 동일한 메시지를 보낼 수 있다는 점을 보면 통신사 측에서는 아무 문제가 없다고 생각하게 됩니다.
불행하게도 실제 페이로드에는 JSON으로 인코딩된 모델이 포함되어 있으므로 중괄호가 중요합니다.
답변1
309자의 버퍼를 보내려고 합니다. SMS는 제한되어 있습니다(최대 104개 메시지).