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

Panasonic TDA600(PRI)- ASTERISK(libpri) и CALLERID

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

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

1g0r
Сообщения: 126
Зарегистрирован: 25 ноя 2013, 16:56

Panasonic TDA600(PRI)- ASTERISK(libpri) и CALLERID

Сообщение 1g0r »

Имеется проблема которую частично удалось решить...

Проблема такова
При звонке с АТС panasonic tda600 через pri канал, Asterisk понимает нормально callerid и корректно отображает на русском, при этом callerid(name) приходится конвертировать из cp1251 в utf8.

Если звонить с Астериска на Panasonic то системные телефоны не отображают callerid, только номер....
В трасировке PRI панасоник отправляет callerid (name) в кодировке cp1251 и с facility начинающей1ся на 0x91... Астериск же отправляет CAllerid с facility 0x9f при указанной опции switchtype=qsig.

Для исправдения ситуации пришлось модифицировать rose.c в libpri...
строка 2347...
пришлось заменить
*pos++ = 080 | Q932_PROTOCOL_EXTENSIONS;
на
*pos++ = 080 | Q932_PROTOCOL_ROSE;

после пересборки libpri проблема частично рассосалась...
Астериск стал отправлять CAllerid с правильным FACILITY, который понимает PANASONIC.

Но появилась новая трабла. Если мы с Панасоника позвоним на Астериск и когда абонент на астериске поднимет трубку то при соединении информацию о поднявшем трубку передается астериском в UTF8 и на ПАНАСОНИКЕ который работает только с cp1251 и мы получаем кракозябры.

Set(CALLERID(name)=${ICONV(WINDOWS-1251,UTF-8,${CALLERID(name)})});
Set(CONNECTEDLINE(name,i)=${CALLERID(name)};
не дает результата...

Возможно ли корректно передать информацию о поднявшем трубку без допиливания libpri ?
ded
Сообщения: 15630
Зарегистрирован: 26 авг 2010, 19:00

Re: Panasonic TDA600(PRI)- ASTERISK(libpri) и CALLERID

Сообщение ded »

когда абонент на астериске поднимет трубку то при соединении информацию о поднявшем трубку зачем передавать в UTF8? если на ПАНАСОНИКЕ работает только cp1251?
Set(CALLERID(name)=${ICONV(WINDOWS-1251,UTF-8,${CALLERID(name)})}); эта операция мне кажется лишней, выведите
NoOp(Caller ID name is ${CALLERID(name)}) будет видно по-русски в CLI или будут кракозябры, и вот если последнее, то их и нужно передать
Set(CONNECTEDLINE(name,i)=${CALLERID(name)};
а потом конвертировать в UTF8 для отображения на ИП-телефоне на стороне Астериска.
Set(CALLERID(name)=${ICONV(WINDOWS-1251,UTF-8,${CALLERID(name)})})
1g0r
Сообщения: 126
Зарегистрирован: 25 ноя 2013, 16:56

Re: Panasonic TDA600(PRI)- ASTERISK(libpri) и CALLERID

Сообщение 1g0r »

Астериск хранит все в UTF8 поэтому и передает в оной по умолчанию.


На стороне Астериска все как раз таки норм, а вот на стороне Панасоника кракозябры после соединения....

Получается как будто бы CONNECTEDLINE(name,i) передается в utf а не а cp1251...

В идеале бы переписать libpri и сделать что бы всегда передавалось все от asteriska в cp1251... и не париться с iconv...
Но что-то задом чую что есть решение проще...
ded
Сообщения: 15630
Зарегистрирован: 26 авг 2010, 19:00

Re: Panasonic TDA600(PRI)- ASTERISK(libpri) и CALLERID

Сообщение ded »

Чтобы не гадать - как будто бы CONNECTEDLINE(name,i) передается в utf а не а cp1251, а как будто и нет...
поставьте через строку
NoOp(Caller ID name is ${CALLERID(name)})
NoOp(Convert from c1251 to utf8 ${ICONV(WINDOWS-1251,UTF-8,${CALLERID(name)})})
NoOp(Caller ID name is ${CALLERID(name)})

и также
NoOp(Caller ID name is ${CALLERID(name)})
NoOp(Convert from utf8 to c1251 ${ICONV(UTF-8,WINDOWS-1251,${CALLERID(name)})})
NoOp(Caller ID name is ${CALLERID(name)})
и всё увидите
1g0r
Сообщения: 126
Зарегистрирован: 25 ноя 2013, 16:56

Re: Panasonic TDA600(PRI)- ASTERISK(libpri) и CALLERID

Сообщение 1g0r »

ЭЭэээ

В рамках одного контеста (который определен для входящих звонков с PRI)
'это не реализовать (смысла нет)...
a=b
b=a
!?!?!?!

Возможно я чего-то не понял...
ded
Сообщения: 15630
Зарегистрирован: 26 авг 2010, 19:00

Re: Panasonic TDA600(PRI)- ASTERISK(libpri) и CALLERID

Сообщение ded »

Возможно что-то и я не понял.
если а=CONNECTEDLINE(name,i)
и b=CALLERID(name)
то, при звонке из TDA600 на Астериск то на ИП-телефоне отобразится b=CALLERID(name),
а в Панасоник отправится информация а=CONNECTEDLINE(name,i)
я правильно понимаю?
Если так, то возможно поможет
Set(CONNECTEDLINE(name,i)=${ICONV(UTF-8,WINDOWS-1251,${CALLERID(name)})
то есть в CONNECTEDLINE(name,i) отправится конвертированное из UTF-8 в С1251 имя, а ${CALLERID(name)} останется оригинальным.
Аватара пользователя
Zavr2008
Сообщения: 2215
Зарегистрирован: 27 янв 2011, 00:35
Контактная информация:

Re: Panasonic TDA600(PRI)- ASTERISK(libpri) и CALLERID

Сообщение Zavr2008 »

Позвольте вставить свои 5 копеек.

CONNECTEDLINE согласносправочнику
Connectedline is a name to describe the aspects of the common feature called RPID or remote party id.
Так и смотреть уже не в сторону PRI, а в сторону SIP телефонов, что они там за RPID пихают.. 3CX какие-нить софтфоны нутром чую)
(поля sendrpid и trustrpid тоже в помощь).

Относительно QSIG: Вообще официально Callerid(name) поддерживается лишь в этом протоколе. Относительно ROSE - да, есть бага, все патчат либу чтоп корректно декодировалось.
Если не нужны все сервисы - просто на стороне TDA вырубайте всякие CT, CF и прочие сервисы и будет счастье..

Относительно UTF - правильнее именно TDA подтягивать к более универсальному стандарту, а не наоборот)
Российские E1 шлюзы Alvis. Модернизация УПАТС с E1,Подключение к ИС "Антифрод" E1 PRI/SS#7 УВР Телестор, Грифин и др..
1g0r
Сообщения: 126
Зарегистрирован: 25 ноя 2013, 16:56

Re: Panasonic TDA600(PRI)- ASTERISK(libpri) и CALLERID

Сообщение 1g0r »

С телефонами вы не угадали...
У нас стоят "panasonic kx-ut136ru-b"...
Аватара пользователя
Zavr2008
Сообщения: 2215
Зарегистрирован: 27 янв 2011, 00:35
Контактная информация:

Re: Panasonic TDA600(PRI)- ASTERISK(libpri) и CALLERID

Сообщение Zavr2008 »

INVITE в студию))
Российские E1 шлюзы Alvis. Модернизация УПАТС с E1,Подключение к ИС "Антифрод" E1 PRI/SS#7 УВР Телестор, Грифин и др..
1g0r
Сообщения: 126
Зарегистрирован: 25 ноя 2013, 16:56

Re: Panasonic TDA600(PRI)- ASTERISK(libpri) и CALLERID

Сообщение 1g0r »

проблема решена.

Set(CONNECTEDLINE(name,i)=${ICONV(UTF-8,WINDOWS-1251,${CALLERID(name)})});
Set(CONNECTEDLINE(number,i)=${EXTEN});
Set(CONNECTEDLINE(name-pres)=allowed);
Set(CONNECTEDLINE(num-pres)=allowed);

Dial(${TRUNK}/${EXTEN},${TIMEOUT},ItTg${MUZ},);

Из-за отсутствия параметра I в DIAL() CONNECTEDLINE не отрабатывал
Ответить
© 2008 — 2025 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH