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

freePBX callerid

Обо всем касательно FreePBX, MetPBX, TrixBox, Elastix, AstPBX и всех других дистрибутивов

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

Ответить
mcsa2003
Сообщения: 23
Зарегистрирован: 08 апр 2011, 16:38

freePBX callerid

Сообщение mcsa2003 »

Добрый день.

Подскажите плз как заставить freePBX формировать sip_additional.conf с нормальными callerid, а то у меня там callerid=device <хххх>. Вот хотелось бы вместо device видеть то что я в экстеншене указал как display name.
При звонке передается нормальный колид, но вот я поставил вебморду Monast, и там у меня все пиры как device <хххх>. Если поменять в sip_additional.conf Callerid и затем sip reload, то все хорошо. Но понятное дело что файл переформируется.
ded
Сообщения: 15626
Зарегистрирован: 26 авг 2010, 19:00

Re: freePBX callerid

Сообщение ded »

sip_additional.conf - это признак принадлежности к freePBX, а Monast - это что-то другое.
Если стоит freePBX то CLID записывается в базу MySQL, при звонке оттуда достаётся через dialparties.agi
А если через Monast - то эта логика вся ломается.
mcsa2003
Сообщения: 23
Зарегистрирован: 08 апр 2011, 16:38

Re: freePBX callerid

Сообщение mcsa2003 »

Монаст читает через AMI и получает соответственно кривые CLID.
ded
Сообщения: 15626
Зарегистрирован: 26 авг 2010, 19:00

Re: freePBX callerid

Сообщение ded »

На двух стульях то не усидеть!
Либо проинсталлировать чистый * и потом сверху Monast, или по-прежнему юзать freePBX.
vinnispb
Сообщения: 2
Зарегистрирован: 21 июл 2011, 10:59

Re: freePBX callerid

Сообщение vinnispb »

Столкнулся с той же проблемой.

Оказалось что усидеть на двух стульях вполне реально.
Проблема с callerid, который сохраняется в sip_additinonal.conf и потом отдается через AMI, кроется в ошибке в обработчике формы конфигурации экстеншенов (/admin/config.php). Для решения проблемы надо открыть файл: /var/www/html/admin/modules/core/functions.inc.php, найти функцию core_device_addsip
и в строке:

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

$sipfields[] = array($account,'callerid',$db->escapeSimple((isset($_REQUEST['description']) && $_REQUEST['description'])?$_REQUEST['description']." <".$account.'>':'device'." <".$account.'>')        ,$flag++);
заменить все $_REQUEST['description'] на $_REQUEST['name']
тоже самое можно сделать и в функции core_device_addiax2.

Для версии freepbx core 2.9.0.1 номера строк 4347 и 4423 соответственно.

Чтобы сделанные изменения заработали с уже созданными экстеншенами, нужно отредактировать их, т.е. что-нибудь изменить и сохранить (чтобы записи в БД freepbx олбновились).
ded
Сообщения: 15626
Зарегистрирован: 26 авг 2010, 19:00

Re: freePBX callerid

Сообщение ded »

Я думаю, что это головотяпство.
Вот как задумывали создатели формирование CID в Астериске:
Если на самом девайсе (ИП телефон или шлюз) прописан параметр Display name - он передаётся в Астериск. Если в этом пире в sip.conf прописан callerid= то прибежавший с ИП телефона будет заменен на этот.
Вот как задумывали создатели FreePBX формирование CID сверху:
При создании пира в sip_additional.conf записывается callerid=device <хххх>, анонимный как бы, потому что при всех звонках (кроме кастомных) формирование параметров при звонке, таких как CID и других, происходит через dialparties.agi который переписывает все значения Display name и/или callerid=device <хххх> на те, которые достаёт из MySQL.

Можно конечно на любой макрос или контекст FreePBX реагировать "мне это не надо" и перепиливать под свой лад, но лучше всё таки следовать главному курсу основных идей (IMHO).
vinnispb
Сообщения: 2
Зарегистрирован: 21 июл 2011, 10:59

Re: freePBX callerid

Сообщение vinnispb »

Возможно Вы и правы, а может и нет.
Макросы и контексты я не трогал и не говорил о них в своем посте. Я только предложил свой вариант решения проблемы, которая как мне кажется связана именно с ошибкой в php-коде.
Приведенный мной код говорит о том, что если переменная $_REQUEST['description'] пустая или не существует, то надо вместо нее подставить слово "device". Сделано это скорее всего для того, чтобы в базу и потом в sip_additional не писался пустой callerid.
НО $_REQUEST['description'] всегда будет пустой! Поле description просто отсутствует в форме на странице веб-морды freepbx. Так зачем тогда вообще ее проверять. Писали бы сразу device и все.

Все вышесказанное естественно IMHO.
ded
Сообщения: 15626
Зарегистрирован: 26 авг 2010, 19:00

Re: freePBX callerid

Сообщение ded »

Думаю, что проверка оставлена для каких-то будущих задумок. Возможно, что автор этих задумок уже не работает над кодом, и все забыли это предназначение.
Может внесёте патч в http://www.freepbx.org/trac/newticket ??
vlego
Сообщения: 153
Зарегистрирован: 11 окт 2010, 13:54
Откуда: Moscow

Re: freePBX callerid

Сообщение vlego »

vinnispb, Вы абсолютно правы - это ошибка и не более того.. и я очень признателен Вам за Ваше сообщение.
Действительно в этом коде - проверяется пустое значение на пустое и можно смело ставить значение "device" - без проверки.

ded - могу слегка опровергнуть Ваше предположение о том, что значение для callerid = device <xxxx> оставлено как бы на перспективу..

Настраивая сейчас elastix 2.0.4 asterisk 11.7.0, столкнулся с такой же неприятной проблемой и могу совершенно точно утверждать, что новый вариант web интерфейса elastix - заполняет значение поля правильно и ставит значение $_REQUEST['name'], в отличии от FreePBX 2.8.1.5
Вполне возможно в следующих версиях FreePBX это исправлено.. не знаю, не проверял.

Данная проблема проявила себя при совершении вызова с транка h323 (при использовании модуля ooh323) на sip ext. После соединения с номером SIP, на телефоне (H323) показано имя 'device' <XXXX>, что очень неприятно смотрится. Со старым модулем h323, callerID в ответ на вызов не передавался и проблема была незаметна.
Ответить
© 2008 — 2025 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH