Пожалуйста, войдите здесь. Часто задаваемые вопросы О нас
Задайте Ваш вопрос

Экранирование текста входящего сообщения

1

я все входящие sms отправляю в джаббер с помощью перл скрипта. только когда в сообщении встречаются спец. символы, текст сообщения обрывается. Подскажите, пожалуйста, как экранировать сообщение?

Текст входящего сообщения:

testing ' test `  hello
***
Posluga MAYACHOK! Dzvonit 477*78*

Строка в плане:

exten => sms,n,System(perl /etc/inform.pl login pass recepient "${DATACARD} ${CALLERID(num)}: ${SMS}")

Вывод в консоли:

    Executing [sms@gsm-incoming:1] Verbose("Local/sms@gsm-incoming-627a;1", "Incoming SMS from 777 testing ' test   hello") in new stack
Incoming SMS from 777 testing ' test   hello
    Executing [sms@gsm-incoming:2] System("Local/sms@gsm-incoming-627a;1", "perl /etc/inform.pl login pass recepient " 777:  testing '
test   hello"") in new stack

Приходит в джаббер

testing ' test   hello

спросил Oct 5 '11

egor Gravatar egor
96 6 2 13

2 Ответа

3

SMS and USSD truncated to first \n symbol

For example you send “Hello!\nHow are you?” but asterisk show only “Hello!” The reason for this hidden in asterisk variable subsitution, and can be solved by use BASE64_DECODE function:

${BASE64_DECODE(${SMS_BASE64})}

${BASE64_DECODE(${USSD_BASE64})}

wiki >>>

ссылка удалить спам редактировать

ответил Oct 6 '11

egor Gravatar egor
96 6 2 13

обновил Oct 6 '11

Comments

Вот . это правильный подход. zzuz (Oct 6 '11)edit
2

Боюсь, это не спецсимвол, а просто перевод строки. Делайте через \n\r

ссылка удалить спам редактировать

ответил Oct 5 '11

samael28 Gravatar samael28
211 2 6
http://odicom.com.ua/

Comments

Правильно , не надо скармливать астериску отформатированный текст. zzuz (Oct 5 '11)edit
а как преобразовать отформатированный текст в plain? egor (Oct 5 '11)edit
Ну видимо его надо почитать как raw строку . Вы же программируете , вот и узнайте. пишите "testing ' test ` hello\n\r ***\n\r Posluga MAYACHOK! Dzvonit 477*78*" zzuz (Oct 5 '11)edit
так дело в том что это не я пишу. а сообщение ко мне приходит так egor (Oct 5 '11)edit
ну так считайте как readlines и получите одну строку. если не можете , то поменяйте язык программирования или попросите кого-нибуль , кто может. http://perldoc.perl.org/functions/readline.htmlzzuz (Oct 5 '11)edit
я понял о чем вы. насколько я понял, до скрипта на перле доходит только одна строка. Verbose одну строку тоже выводит egor (Oct 5 '11)edit
Текст откуда получаете? zzuz (Oct 5 '11)edit
chan_dongle дарит? egor (Oct 6 '11)edit
Откуда переменная ${SMS} берет значение? zzuz (Oct 6 '11)edit
это переменная chan_dongle egor (Oct 6 '11)edit
спасибо, решение нашел ниже. но как отметить решение верным не знаю egor (Oct 6 '11)edit

Ваш ответ

Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!
[скрыть предварительный просмотр]

Закладки и информация

Добавить закладку

подписаться на rss ленту новостей

Статистика

Задан: Oct 5 '11

Просмотрен: 1,367 раз

Обновлен: Oct 06 '11

Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией GNU GPL.