Ошибка при отправке @ char в канал - PullRequest
1 голос
/ 30 декабря 2011

У меня проблема при отправке сообщения в канал, содержащего @ char. Например я отправил "@ Test", но телефон получил что-то как "я тестирую".

Это ошибка в канале? Если так, у кого-нибудь есть патч для него?

1 Ответ

9 голосов
/ 30 декабря 2011

Проблема со знаком @ довольно популярна в SMS, поскольку этот символ в GSM имеет код 0x00 вместо 0x40 в ASCII или UTF-8.

Для правильной обработки этого и некоторых других символов рекомендуется упомянутьследующие параметры при отправке сообщения через Kannel:

  • кодирование - 0 (по умолчанию GSM) или 2 (если вы отправляете символы Unicode)
  • charset - набор символов строки, которую вы отправляете в Kannel

В этом случае Kannel преобразует символы самостоятельно (если построен с помощью libiconv).

Пример:

http://127.0.0.1:13013/cgi-bin/sendsms?...&coding=0&charset=utf-8&text=test+@+sign

Другая проблема может возникнуть, если вы подключаетесь к SMSC через SMPP.Некоторые платформы могут использовать кодировку, отличную от стандартной.Например, это может быть ASCII.

Чтобы решить эту проблему, вы можете использовать alt-charset параметр для правильного group = smsc раздела файла конфигурации:

group = smsc
smsc = smpp
...
alt-charset = "ASCII"

Для отладки я рекомендую добавить ведение журнала для соединения SMSC log-level = 0 и проверить наличие дампов протокола, чтобы увидеть, что именно отправляется из Kannel в SMSC.Обычно это должен быть символ 0x00 для знака @.

...