Имеется проблема которую частично удалось решить...
Проблема такова
При звонке с АТС 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 ?