VIDEOCHAT  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

многострочные переменные в asterisk

Новичком считается только что прочитавший «Астериск - будущее телефонии»
http://asterisk.ru/knowledgebase/books
и пытающийся сделать большее

Модераторы: april22, Zavr2008

Ответить
d771
Сообщения: 28
Зарегистрирован: 29 дек 2012, 21:18

многострочные переменные в asterisk

Сообщение d771 »

Здравствуйте!
Никак не могу найти информацию о многострочных переменных в asterisk.

Точнее, я просто использую SendText(), и хочу послать сообщение с переводом строки.
Т.е. примерно как printf "test1\ntest2\n".
Но по приходу сообщения на клиент символ "\" вырезается. Пробовал \\n, \n, и даже <br>.
В клиенте, я, правда тоже не уверен, может и он вырезает, но информации по этому поводу вообще не нашел.
Asterisk 1.8.24.0, клиент csipsimple на android.
Glukinho
Сообщения: 661
Зарегистрирован: 07 янв 2011, 20:05

Re: многострочные переменные в asterisk

Сообщение Glukinho »

Сталкивался с проблемой, надо было послать письмо по email во много строк.
Крутил по-всякому, так и не решил. Вынес в AGI PHP, о чем не жалею, ибо это более правильно и красиво.
d771
Сообщения: 28
Зарегистрирован: 29 дек 2012, 21:18

Re: многострочные переменные в asterisk

Сообщение d771 »

Вобщем, после изучения исходников стало понятно, что функция ast_str_get_encoded_str в sendtext вырезает все символы "\".
Т.е. контрольными последовательностями нельзя ничего добиться в app_*, использующих функцию ast_str_get_encoded_str.
Но никто не мешает поместить многострочный текст в переменную без последовательностей (с чистыми CR/LF), и передать ее на вход команде.
Буду рад, если кто подскажет, как это можно сделать в asterisk.
amateur
Сообщения: 453
Зарегистрирован: 30 сен 2011, 09:58

Re: многострочные переменные в asterisk

Сообщение amateur »

Я может чего не понял... Так сойдет?
> module load func_sprintf

Код: Выделить всё

Set(A=${SPRINTF("1%c2%c3%c",13,13,13)});
NoOp(A is ${A} and is ${LEN(${A})} characters long);
d771
Сообщения: 28
Зарегистрирован: 29 дек 2012, 21:18

Re: многострочные переменные в asterisk

Сообщение d771 »

Спасибо, ваше решение работает!
На всякий случай, если кто будет искать аналогичное решение: перевод строк осуществляется через CR/LF (13,10) - просто LF не работает. Даже в консоли астериска на linux'е строка отображается правильно только в случае CRLF.
Set(MESSAGE=${SPRINTF("test с%c%ctest b%c%cfu2%c%c",13,10,13,10,13,10)});
amateur
Сообщения: 453
Зарегистрирован: 30 сен 2011, 09:58

Re: многострочные переменные в asterisk

Сообщение amateur »

Спасибо и Вам!
Ответить
© 2008 — 2025 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH