LINUX.ORG.RU

Спецсимволы в тексте

 , ,


0

3

Доброго дня! Имеется asterisk + chan_dongle + какой-то там модем. Входящие смс обрабатываются диалпланом следующими строками:

exten => sms,1,Noop(Incoming SMS from ${CALLERID(num)} ${BASE64_DECODE(${SMS_BASE64})})

exten => sms,n,System(/usr/bin/screen -AmdS 'lynx-${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)}' /usr/bin/lynx 'https://site.com/sms.aspx?from=${CALLERID(num)}&to=${DONGLENAME}&text=${BASE64_DECODE(${SMS_BASE64})}')

Так вот возникла проблема, когда пришло сообщение, в тексте которого было слово Don`t. Вот этот самый символ «`» изгадил всю малину и я даже не представляю как с этим справиться.


Проблемма то в этом месте:

${BASE64_DECODE(${SMS_BASE64})}
или где-то в другом?

mky ★★★★★ ()
Ответ на: комментарий от mky

Да, именно тут. Получается, что в тексте присутствует неэкранированная одинарная кавычка, ну и на этом все заканчивается. Наверное надо как-то менять кавычки в тексте, но не понимаю как именно.

hs85 ()
Ответ на: комментарий от hs85

sed'ом замени на какие-нибудь три символа (скажем, «КЫВ» — то, что в реальном тексте наверняка никогда не появится); после преобразования обратно тем же sed'ом эту фигню на апостроф замени.

anonymous ()
Ответ на: комментарий от anonymous

Это не ты случаем скайп писал? Где при отправке «http://» он колом вставал?

deep-purple ★★★★★ ()
Ответ на: комментарий от hs85

Ты то тут при чем? Я у анона спрашиваю, который предложил свой мегакостыль.

deep-purple ★★★★★ ()
Ответ на: комментарий от hs85

Может поменять этот https://site.com/sms.aspx , чтобы он принимал сообщение в base64?

А может вам хватит QUOTE(${BASE64_DECODE(${SMS_BASE64})})...

mky ★★★★★ ()
Ответ на: комментарий от hs85

Тогда пиши багрепорт на этот сайт — пусть сами разбираются.

deep-purple ★★★★★ ()
Ответ на: комментарий от hs85

Ну, пробуйте QUOTE(), или отказывайтесь от BASE64_DECODE, пишите скрипт на bash, который будет осуществлять это DECODE сам и делать ″exec screen ...″.

mky ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.