custom cdr postgres
Откуда: Bryansk, Russia
Сообщений: 46
|
custom cdr postgres
Требуется настроить складывание custom'ных полей CDR в постргресовскую базу данных. Как я понял стандартный cdr_pgsql этого не умеет. Нагуглил некую cdr_yada . Есть ли ещё способы решения?
|
Откуда: Москва
Сообщений: 3421
|
Re: custom cdr postgres
Как раз недавно такую задачу делали, только на mysql.
Проблема была в том, что добавление записи в CDR происходит после завершения работы h exten'a.
Следовательно, прапдейтить custom field нельзя. Придумали задействовать временную таблицу и триггер на after insert на cdr. После добавления записи cdr триггер ищет записи во временной таблице с добавляемым uniqueid, и переносит себе, а там удаляет.
Мы использовали app_mysql, не помню, чтобы мне попадался app_psql, но думаю, что через func_odbc это можно будет сделать.
Успехов! И дай знать, как решишь задачу.
|
Откуда: Омск
Сообщений: 478
|
Re: custom cdr postgres
В 1.6 (кажется с 1.6.1, возможно с 1.6.0) внедрена адаптивная работа с базой данных. Это касается как реалтайма, так и CDR. При записи переменной вида CDR(myfield) и наличии соответствующего поля в БД, переменная будет вставлена в базу. Наверное можно портировать эти изменения в 1.4
OpenSUSE 11.2 / Asterisk 1.6.x / Vicidial / UniMRCP
|
Откуда: Москва
Сообщений: 3421
|
Re: custom cdr postgres
Игорь, а как 1.6 в реальном использовании? Можно переходить?
|
Откуда: Омск
Сообщений: 478
|
Re: custom cdr postgres
Нормально, уже использую. Но всегда прежде прикидываю используемые приложения и системы, оцениваю степень изменений по сравнению с 1.6, тестирую, а потом уже решаю использовать или нет. В общем это относится ко всем применениям всех версий. Кому-то и trunk может подходить для реального использования.
OpenSUSE 11.2 / Asterisk 1.6.x / Vicidial / UniMRCP
|
Сообщений: 135
|
Re: custom cdr postgres
litnimax: Как раз недавно такую задачу делали, только на mysql.
Проблема была в том, что добавление записи в CDR происходит после завершения работы h exten'a.
Следовательно, прапдейтить custom field нельзя.
Никогда не понимал как этот custom field можно использовать, и главное - зачем. У меня решено следующим образом:
CDR(мое_поле) сохраняется и в h extension и далее. Соответсвенно, во время dialplan flow кладем туда все, что надо, а затем сохраняем
посгресовский драйвер в 1.4 действительно не умеет нестандартные поля, за что и был пропатчен:
http://static.ipfw.ru/patch-cdr_pgsql.diff
В результате в конфиге пишем формат names и values в insert'e, например вот так:
http://asteriskpbx.ru/pastebin/28?format=raw
|
Откуда: Bryansk, Russia
Сообщений: 46
|
Re: custom cdr postgres
Красота!
А я для этого написал perl'овый скриптик,который натравливается на Master.csv по типу
tail -f Master.csv | my_best_perl_parcer
Ну и при ротации лога естественно перезапускается
|
Откуда: Москва
Сообщений: 3421
|
Re: custom cdr postgres
посгресовский драйвер в 1.4 действительно не умеет нестандартные поля, за что и был пропатчен:
http://static.ipfw.ru/patch-cdr_pgsql.diff
Почему не в bug.digium.com? Зажал со всем миром поделиться, редиска? Или ты лентяй? Выбирай одно из двух!
P.S. И кстати, насчет "добавление записи в CDR происходит после завершения работы h exten'a." там тоже можно было бы дискуссию поднят....
|
Сообщений: 243
|
Re: custom cdr postgres
В результате в конфиге пишем формат names и values в insert'e, например вот так:
http://asteriskpbx.ru/pastebin/28?format=raw
Заменил длинную строку, поломавшую форматирование.
|
Откуда: Омск
Сообщений: 478
|
Re: custom cdr postgres
litnimax: посгресовский драйвер в 1.4 действительно не умеет нестандартные поля, за что и был пропатчен:
http://static.ipfw.ru/patch-cdr_pgsql.diff
Почему не в bug.digium.com? Зажал со всем миром поделиться, редиска? Или ты лентяй? Выбирай одно из двух!
P.S. И кстати, насчет "добавление записи в CDR происходит после завершения работы h exten'a." там тоже можно было бы дискуссию поднят....
Я выберу третье: в 1.4 новые функции не принимаются, а в 1.6 нестандартные поля уже пишутся.
P.S. Кто-нибудь иногда смотрит в конфиги? Опция endbeforehexten кажется именно для этого и придумана (есть с незапамятных времён)
OpenSUSE 11.2 / Asterisk 1.6.x / Vicidial / UniMRCP
|
|