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

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

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
удалить закрыть спам изменить тег редактировать

спросил 2011-10-05 12:33:24 +0400

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 >>>

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

ответил 2011-10-06 15:04:10 +0400

egor Gravatar egor
96 6 2 13

обновил 2011-10-06 15:08:24 +0400

Comments

Вот . это правильный подход. zzuz ( 2011-10-06 15:10:42 +0400 )редактировать
2

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

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

ответил 2011-10-05 14:42:10 +0400

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

Comments

Правильно , не надо скармливать астериску отформатированный текст. zzuz ( 2011-10-05 14:56:03 +0400 )редактировать
а как преобразовать отформатированный текст в plain? egor ( 2011-10-05 15:10:22 +0400 )редактировать
Ну видимо его надо почитать как raw строку . Вы же программируете , вот и узнайте. пишите "testing ' test ` hello\n\r ***\n\r Posluga MAYACHOK! Dzvonit 477*78*" zzuz ( 2011-10-05 15:20:05 +0400 )редактировать
так дело в том что это не я пишу. а сообщение ко мне приходит так egor ( 2011-10-05 15:28:22 +0400 )редактировать
ну так считайте как readlines и получите одну строку. если не можете , то поменяйте язык программирования или попросите кого-нибуль , кто может. http://perldoc.perl.org/functions/readline.htmlzzuz ( 2011-10-05 16:01:54 +0400 )редактировать
я понял о чем вы. насколько я понял, до скрипта на перле доходит только одна строка. Verbose одну строку тоже выводит egor ( 2011-10-05 16:26:18 +0400 )редактировать
Текст откуда получаете? zzuz ( 2011-10-05 17:11:31 +0400 )редактировать
chan_dongle дарит? egor ( 2011-10-06 13:39:14 +0400 )редактировать
Откуда переменная ${SMS} берет значение? zzuz ( 2011-10-06 13:46:39 +0400 )редактировать
это переменная chan_dongle egor ( 2011-10-06 15:00:08 +0400 )редактировать
спасибо, решение нашел ниже. но как отметить решение верным не знаю egor ( 2011-10-06 15:05:12 +0400 )редактировать

Ваш ответ

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 ленту новостей

Статистика

Задан: 2011-10-05 12:33:24 +0400

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

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

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