Страница 9 из 10

Re: CallerID на русском

Добавлено: 20 июн 2013, 23:54
joe
С языком у меня все ок:
# env | grep LANG
LANG=en_US.UTF-8


Если делаю вот так:
exten => _+.,1,Set(CALLERID(name)=тест)
exten => _+.,n,Iconv(CALLERID(name)/ISO-8859-1=${CALLERID(name)}/UTF-8)

то астер отвечает No application 'Iconv' for extension

Если делаю вот так
exten => _+.,1,Set(CALLERID(name)=тест)
exten => _+.,n,Set(CALLERID(name)=${ICONV(ISO8859-1,UTF-8,${CALLERID(name)})})

то в консоли путти отдает
Set("Dongle/datacard16-0100000005", "CALLERID(name)=ÑеÑÑ") in new stack

а на икслайте выводит вместо имени - %c3%91%c2%82%c3%90%c2%b5%c3%91%c2%81%c3%91%c2%82

не просто пустоту, а именно - %c3%91%c2%82%c3%90%c2%b5%c3%91%c2%81%c3%91%c2%82

В общем завтра буду еще думать. Если поборю, то дам знать, но похоже действительно что-то с кодировкой файла extensions.conf
Хотя с MYSQL-я тоже с SET NAMES utf8 все равно точно такая же ситуация....

Re: CallerID на русском

Добавлено: 21 июн 2013, 00:15
ded
Если делаю вот так:
exten => _+.,1,Set(CALLERID(name)=тест)
exten => _+.,n,Iconv(CALLERID(name)/ISO-8859-1=${CALLERID(name)}/UTF-8)

то астер отвечает No application 'Iconv' for extension
В старых версиях Астериска это была аппликация, теперь - функция. Разберётесь?
Если делаю вот так
exten => _+.,1,Set(CALLERID(name)=тест)
exten => _+.,n,Set(CALLERID(name)=${ICONV(ISO8859-1,UTF-8,${CALLERID(name)})})

то в консоли путти отдает
Set("Dongle/datacard16-0100000005", "CALLERID(name)=ÑеÑÑ") in new stack
putty - не показатель, у вас может в putty не настроен charset UTF-8
а на икслайте выводит вместо имени - %c3%91%c2%82%c3%90%c2%b5%c3%91%c2%81%c3%91%c2%82
X-lite тоже не показатель.
Разберитесь в могуществе конвертера iconv на уровне командной строки и поточных перенаправлений, и всё у Вас получится.
На самом деле во всём виновата винда и putty, Вы никогда не понимаете в какой кодировке пристутствуете в системе с Астериск.
Например, если правильно всё выставлено, то Midnight Commander открывается правильными значками псевдографики, которыми отрисованы таблички.
И тогда с 99% вероятностью что всё верно можно отредактировать файлы extensions.conf в UTF-8 через mcedit

Re: CallerID на русском

Добавлено: 21 июн 2013, 00:36
joe
Ок, спасибо уважаемый ded.
Не поймите неправильно, но я не новичек в линуксе.
Если в путти стоит UTF8, то это UTF-8 без вариантов. В миднайте графические символы на месте.
С икслайтом тоже все ок, так как один и тот же икслайт от одного астера принимает нэйм отлично по русски, а от другого - крякозябры.
Кроме того если я включаю например sip set debug 1403 и посылаю звонок на него, предварительно выставив CALLERID(name), то вот из дибага:

SIP/2.0 100 Trying
Via: SIP/2.0/UDP х.х.х.х:5060;branch=z9hG4bK4ee2b1dc;rport=5060
To: <sip:1403@195.138.217.167:16250;rinstance=88bd42a6709c675d>
From: "%c3%91%c2%82%c3%90%c2%b5%c3%91%c2%81%c3%91%c2%82" <sip:0632825038@х.х.х.х>;tag=as0685353c
Call-ID: 6908bd674684412e1aa8cc0729672b81@91.194.251.205
CSeq: 102 INVITE
Content-Length: 0



Имея заголовок фром такого характера
From: "%c3%91%c2%82%c3%90%c2%b5%c3%91%c2%81%c3%91%c2%82" <sip:0632825038@х.х.х.х>;tag=as0685353c
который кстати формирует астериск а не икслайт естественно любой сип-клиент отбразит херню....

То есть дело в астере точно....

P.S. У меня всего около 60 серверов работающих. Из них на трех или четырех работает телефонная книга моей разработки без танцев с бубном через MYSQL и SET NAMES.
А вот на двух серверах неработает. Год назад пытался разобраться и забил, потом три сервака отконфижились без гемора и вот опять нарвался. Тр*хаюсь уже два дня бесполезно....

Re: CallerID на русском

Добавлено: 21 июн 2013, 00:50
ded
Я бы сказал - не в Астере, а в системе.
Поле From: "%c3%91%c2%82%c3%90%c2%b5%c3%91%c2%81%c3%91%c2%82" <sip:0632825038@х.х.х.х>;tag=as0685353c
который кстати формирует астериск на основе команды Set(CALLERID(name)=
можно сравнить, да ещё и добавить NoOp(${CALLERID(name)} для наглядности.
Посмотрите на два разных файла extensions.conf с правильно работающего Астера, и с неправильного, но в рамках одной ОС и другой ОС.
Там одинаково ли будут отображаться Ваши Set(CALLERID(name)="Что-то по-русски")??

Re: CallerID на русском

Добавлено: 21 июн 2013, 01:00
joe
Я бы сказал - не в Астере, а в системе.
Поле From: "%c3%91%c2%82%c3%90%c2%b5%c3%91%c2%81%c3%91%c2%82" <sip:0632825038@х.х.х.х>;tag=as0685353c
который кстати формирует астериск на основе команды Set(CALLERID(name)=
можно сравнить, да ещё и добавить NoOp(${CALLERID(name)} для наглядности.
Посмотрите на два разных файла extensions.conf с правильно работающего Астера, и с неправильного, но в рамках одной ОС и другой ОС.
Там одинаково ли будут отображаться Ваши Set(CALLERID(name)="Что-то по-русски")??
NoOp'ом естественно выводил - в NoOpe - все ок в консоли.
Завтра попробую с помощью System сохранить переменную CALLERID(name) в файл и посмотреть как оно сохранит.
По поводу переноса конфигов между двумя машинами можно, но один сервак на котором как раз не работает он рабочий. На нем 10 одновременных звонков и 35 донглов. На него подбрасывать конфиг не рискну. Короче завтра расскажу еще что пытался и что помогло. Как вариант можно проапгредиться до 1.8. Там есть интересные переменные - http://www.voip-info.org/wiki/view/Aste ... c+callerid

Вот
Asterisk 1.8 has an expanded CALLERID function. <item> can be one of:

all
name
name-valid
name-charset
name-pres
num
num-valid
num-plan
num-pres
subaddr
subaddr-valid
subaddr-type
subaddr-odd
tag
ANI-all
ANI-name
ANI-name-valid
ANI-name-charset
ANI-name-pres
ANI-num
ANI-num-valid
ANI-num-plan
ANI-num-pres
ANI-tag
RDNIS
DNID
dnid-num-plan
dnid-subaddr
dnid-subaddr-valid
dnid-subaddr-type
dnid-subaddr-odd

Но обновляться очень стремно - сильно уж живой сервак. + думаю что не поможет. Может точно дело в системе а не в астере, но кроме как кодировки и языка в системе на эту тему ничего вроде нет...

Re: CallerID на русском

Добавлено: 21 июн 2013, 01:08
ded
Не надо меня полностью цитировать.
Joe писал(а):сервак на котором как раз не работает он рабочий. На нем 10 одновременных звонков и 35 донглов. На него подбрасывать конфиг не рискну.
Не надо на него подбрасывать. Просто скопируйте файл через scp, хоть в /tmp
и посмотрите как там выглядят русские вставки в оргинальном файое и в скопированном.
Вижу, Вы там с донглами, серая терминация, Украина, машины для зарабатывания денег?
Не интересно.
в консоли путти отдает
Set("Dongle/datacard16-0100000005", "CALLERID(name)=ÑеÑÑ") in new stack
Кстати, From: "%c3%91%c2%82%c3%90%c2%b5%c3%91%c2%81%c3%91%c2%82" = From: "тест" = From: "тест" ( iso-8859-1)
То есть CALLERID(name)=ÑеÑÑ") у вас передаётся в iso-8859-1
таким образом ICONV точно поможет.

Re: CallerID на русском

Добавлено: 21 июн 2013, 01:36
joe
Не надо на него подбрасывать. Просто скопируйте файл через scp, хоть в /tmp
и посмотрите как там выглядят русские вставки в оргинальном файое и в скопированном.
Вижу, Вы там с донглами, серая терминация, Украина, машины для зарабатывания денег?
Не интересно.
Ок, попробую скопировать файл.
По поводу серой терминации - не так. Просто на одной машине пару контор крутится крупных. Ничего супер серого там нет...
Все симки контрактные, все честно никакой перепродажи и т.д.

Re: CallerID на русском

Добавлено: 21 июн 2013, 01:37
ded
Ох, продублирую!
From: "%c3%91%c2%82%c3%90%c2%b5%c3%91%c2%81%c3%91%c2%82" = From: "тест" = From: "тест" ( iso-8859-1)
То есть CALLERID(name)=ÑеÑÑ") у вас передаётся в iso-8859-1
таким образом ICONV точно поможет.

Re: CallerID на русском

Добавлено: 21 июн 2013, 01:42
joe
Ок, попробую завтра с ним еще поиграться. Спасибо большое.

Re: CallerID на русском

Добавлено: 21 июн 2013, 17:00
joe
Вобщем, ничего не получилось. ICONV честно перекодирует, но все равно выводятся кракозябры с процентами. Боюсь дело не в чарсете а в энкодинге, но я пока ненагуглил как его можно поменять.