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

Проблема с CDR (кривые записи)

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

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

Ответить
cemeht
Сообщения: 11
Зарегистрирован: 13 окт 2015, 11:35

Проблема с CDR (кривые записи)

Сообщение cemeht »

День добрый уважаемые!
Прошу Вас помочь разобраться с проблемкой (своими силами пытался, но не получилось).
В общем
Дано:

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

Asterisk 11.5.0, Copyright (C) 1999 - 2012 Digium, Inc. and others.

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

mysql  Ver 14.14 Distrib 5.5.32, for debian-linux-gnu (x86_64) using readline 6.2
Проблема:
Asterisk "иногда" (рандомно) в MySQL в таблицу CDR в столбец "userfield" где хранится путь до файла, пишет информацию дважды (задвоенные записи).
Пример нормальной записи в "userfield" после звонка выглядит так:

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

in/3942261199/20130812/20130812094000-92833-3942261199
Пример неправильной записи:

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

in/3942261199/20130812/20130812094000-92833-3942261199in/3942261199/20130812/20130812094000-92833-3942261199;in/3942261199/20130812/20130812094000-92833-3942261199
запись в CDR в диалплане прописана так:

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

exten => 3942261199,n,Set(CDR(userfield)=in/${path}/${fname})
Файл на диск в обоих случаях ложится правильно, и его можно найти по пути:

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

/usr/records/in/3942261199/20130812/20130812094000-92833-3942261199

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

asterisk*CLI> module show like cdr
Module                         Description                              Use Count
app_cdr.so                     Tell Asterisk to not maintain a CDR for  0
cdr_adaptive_odbc.so           Adaptive ODBC CDR backend                0
cdr_csv.so                     Comma Separated Values CDR Backend       0
cdr_manager.so                 Asterisk Manager Interface CDR Backend   0
cdr_mysql.so                   MySQL CDR Backend                        0
cdr_odbc.so                    ODBC CDR Backend                         0
cdr_sqlite3_custom.so          SQLite3 Custom CDR Module                0
cdr_syslog.so                  Customizable syslog CDR Backend          0
func_cdr.so                    Call Detail Record (CDR) dialplan functi 0
9 modules loaded
asterisk*CLI>
SQL и сам астериск работают на одной машине.

Вот, не знаю где копать и что "править", чтоб он не делал "дубли".
Pechen
Сообщения: 118
Зарегистрирован: 29 дек 2013, 23:16

Re: Проблема с CDR (кривые записи)

Сообщение Pechen »

смотрите cli
awsswa
Сообщения: 2390
Зарегистрирован: 09 июн 2012, 10:52
Откуда: Россия, Пермь skype: yarick_perm

Re: Проблема с CDR (кривые записи)

Сообщение awsswa »

возможно что вы их и вносите дважды - просто обнуляйте перед внесением записи

exten => 3942261199,n,Set(CDR(userfield)="")
exten => 3942261199,n,Set(CDR(userfield)=in/${path}/${fname})
платный суппорт по мере возможностей
cemeht
Сообщения: 11
Зарегистрирован: 13 окт 2015, 11:35

Re: Проблема с CDR (кривые записи)

Сообщение cemeht »

Вот еще пример "кривой" записи.
Пришел звонок с 9025153636 на 3952761244

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

    -- Executing [3952761244@sip-in:1] Goto("SIP/irkutsk_761244-00000b33", "sip-in-3952761244,3952761244,1") in new stack
    -- Goto (sip-in-3952761244,3952761244,1)
    -- Executing [3952761244@sip-in-3952761244:1] Answer("SIP/irkutsk_761244-00000b33", "") in new stack
    -- Executing [3952761244@sip-in-3952761244:2] Set("SIP/irkutsk_761244-00000b33", "bl=") in new stack
    -- Executing [3952761244@sip-in-3952761244:3] GotoIf("SIP/irkutsk_761244-00000b33", "0?end") in new stack
    -- Executing [3952761244@sip-in-3952761244:4] Set("SIP/irkutsk_761244-00000b33", "_path=3952761244/20151013") in new stack
    -- Executing [3952761244@sip-in-3952761244:5] Set("SIP/irkutsk_761244-00000b33", "_fname=20151013163957-9025153636-3952761244") in new stack
    -- Executing [3952761244@sip-in-3952761244:6] Set("SIP/irkutsk_761244-00000b33", "clid=") in new stack
    -- Executing [3952761244@sip-in-3952761244:7] GotoIf("SIP/irkutsk_761244-00000b33", "1?noclid") in new stack
    -- Goto (sip-in-3952761244,3952761244,9)
    -- Executing [3952761244@sip-in-3952761244:9] Set("SIP/irkutsk_761244-00000b33", "_monopt=nice /usr/bin/lame -b 48 --resample 32 -q5 --silent "/usr/records/in/3952761244/20151013/20151013163957-9025153636-3952761244.wav" "/usr/records/in/3952761244/20151013/20151013163957-9025153636-3952761244.mp3" && rm -f "/usr/records/in/3952761244/20151013/20151013163957-9025153636-3952761244.wav" && /bin/chmod 444 /usr/records/in/3952761244/20151013/20151013163957-9025153636-3952761244.mp3") in new stack
    -- Executing [3952761244@sip-in-3952761244:10] Set("SIP/irkutsk_761244-00000b33", "CDR(userfield)=in/3952761244/20151013/20151013163957-9025153636-3952761244") in new stack
    -- Executing [3952761244@sip-in-3952761244:11] BackGround("SIP/irkutsk_761244-00000b33", "/usr/records/ivr/ivr_gygol") in new stack
    -- <SIP/irkutsk_761244-00000b33> Playing '/usr/records/ivr/ivr.slin' (language 'ru')
  == CDR updated on SIP/irkutsk_761244-00000b33
    -- Executing [3@sip-in-3952761244:1] MixMonitor("SIP/irkutsk_761244-00000b33", "/usr/records/in/3952761244/20151013/20151013163957-9025153636-3952761244.wav,b,nice /usr/bin/lame -b 48 --resample 32 -q5 --silent "/usr/records/in/3952761244/20151013/20151013163957-9025153636-3952761244.wav" "/usr/records/in/3952761244/20151013/20151013163957-9025153636-3952761244.mp3" && rm -f "/usr/records/in/3952761244/20151013/20151013163957-9025153636-3952761244.wav" && /bin/chmod 444 /usr/records/in/3952761244/20151013/20151013163957-9025153636-3952761244.mp3") in new stack
  == Begin MixMonitor Recording SIP/irkutsk_761244-00000b33
    -- Executing [3@sip-in-3952761244:2] Playback("SIP/irkutsk_761244-00000b33", "queue-callswaiting") in new stack
    -- <SIP/irkutsk_761244-00000b33> Playing 'queue-callswaiting.gsm' (language 'ru')
    -- Executing [3@sip-in-3952761244:3] GotoIfTime("SIP/irkutsk_761244-00000b33", "12:00-13:00,Mon-Fri,*,*?support-abk-context,s,1") in new stack
    -- Executing [3@sip-in-3952761244:4] Queue("SIP/irkutsk_761244-00000b33", "602,t,,,180") in new stack
    -- Started music on hold, class 'music', on SIP/irkutsk_761244-00000b33
  == Using SIP RTP CoS mark 5
    -- SIP/215-00000b34 connected line has changed. Saving it until answer for SIP/irkutsk_761244-00000b33
    -- SIP/215-00000b34 is ringing
    -- SIP/215-00000b34 connected line has changed. Saving it until answer for SIP/irkutsk_761244-00000b33
    -- SIP/215-00000b34 answered SIP/irkutsk_761244-00000b33
    -- Stopped music on hold on SIP/irkutsk_761244-00000b33
asterisk*CLI> core set verbose 0
Файл записи упал куда надо:

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

root@asterisk:/var/log/asterisk# ls -la /usr/records/in/3952761244/20151013/20151013163957-9025153636-3952761244.mp3
-r--r--r-- 1 root root 3721896 окт.  13 16:55 /usr/records/in/3952761244/20151013/20151013163957-9025153636-3952761244.mp3
root@asterisk:/var/log/asterisk#
А вот в SQL опять "неправильно" - запись задублировалась
Ниже лог запроса на запись от Asterisk в БД

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

root@asterisk:/var/log/mysql# cat mysql.log |grep 9025153636
151013 16:42:07 15557 Query     INSERT INTO cdr (`calldate`,`clid`,`src`,`dst`,`dcontext`,`channel`,`dstchannel`,`lastapp`,`lastdata`,`duration`,`billsec`,`disposition`,`amaflags`,`userfield`,`uniqueid`,`sequence`) VALUES ('2015-10-13 16:39:56','9025153636','9025153636','3','sip-in-3952761244','SIP/irkutsk_761244-00000b33','SIP/215-00000b34','Queue','602,t,,,180','131','131','ANSWERED','3','in/3952761244/20151013/20151013163957-9025153636-3952761244in/3952761244/20151013/20151013163957-9025153636-3952761244;in/3952761244/20151013/20151013163957-9025153636-3952761244','1444729196.3076','3970')
cemeht
Сообщения: 11
Зарегистрирован: 13 окт 2015, 11:35

Re: Проблема с CDR (кривые записи)

Сообщение cemeht »

awsswa писал(а):возможно что вы их и вносите дважды - просто обнуляйте перед внесением записи

exten => 3942261199,n,Set(CDR(userfield)="")
exten => 3942261199,n,Set(CDR(userfield)=in/${path}/${fname})

Прописал у себя:

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

exten => 3942261199,n,Set(CDR(userfield)="")
exten => 3942261199,n,Set(CDR(userfield)=in/${path}/${fname})
Звоню, с CLI вижу:

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

    -- Executing [3942261199@sip-in-3942261199:10] Set("SIP/ks_61199-00000bb5", "CDR(userfield)=""") in new stack
    -- Executing [3942261199@sip-in-3942261199:11] Set("SIP/ks_61199-00000bb5", "CDR(userfield)=in/3942261199/20151013/20151013175228-59745-3942261199") in new stack
В SQL вижу:

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

151013 17:52:43 15557 Query     INSERT INTO cdr (`calldate`,`clid`,`src`,`dst`,`dcontext`,`channel`,`dstchannel`,`lastapp`,`lastdata`,`duration`,`billsec`,`disposition`,`amaflags`,`userfield`,`uniqueid`,`sequence`) VALUES ('2015-10-13 17:52:27','\"TEST PHONE.\" <59745>','59745','3','sip-in-3942261199','SIP/ks_61199-00000bb5','SIP/210-00000bb7','Queue','601,t,,,180','16','16','ANSWERED','3','in/3942261199/20151013/20151013175228-59745-3942261199in/3942261199/20151013/20151013175228-59745-3942261199;in/3942261199/20151013/20151013175228-59745-3942261199','1444733547.3222','4162')
Файл как и раньше, ложится верно.
cemeht
Сообщения: 11
Зарегистрирован: 13 окт 2015, 11:35

Re: Проблема с CDR (кривые записи)

Сообщение cemeht »

какраз оно самое.
Спасибо!
(странно что за все это время не пофиксили )
cemeht
Сообщения: 11
Зарегистрирован: 13 окт 2015, 11:35

Re: Проблема с CDR (кривые записи)

Сообщение cemeht »

Решил проблему созданием еще одного столбца в SQL в таблице CDR.
В extensions.conf заменил userfield на имя нового столбца - сутки - полет нормальный. Ошибка не наблюдается.
Ответить
© 2008 — 2025 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH