AF
Asterisk Forum
обсуждения телефонии, VoIP и IP-PBX
12разделов
5 423тем
34 385сообщений
← К списку тем

Значения полей таблицы CDR

Newbies/FAQ Forum 9 сообщений 13.10.2010 08:51 - 26.10.2010 06:43
#1 13.10.2010 08:51

Значения полей таблицы CDR


Привет,
Меня попросили извлечь некоторые отчеты из базы данных рабочего Asterisk (БД MySQL)
Все что мне нужно:

1. Общее время разговора (в минутах или секундах) для каждого оператора
2. Количество пропущенных звонков
3. Общее количество звонков для каждого оператора и всех операторов
4. Количество звонков на Call Center (звонки, которые дошли до оператора)
5. Количество входящих звонков для каждого оператора и всех операторов



Моя таблица CDR выглядет следующим образом:


Code:
CREATE TABLE `cdr` (
`id` int(10) unsigned NOT NULL auto_increment,
`calldate` datetime NOT NULL default '0000-00-00 00:00:00',
`clid` varchar(80) NOT NULL default '',
`src` varchar(80) NOT NULL default '',
`dst` varchar(80) NOT NULL default '',
`dcontext` varchar(80) NOT NULL default '',
`channel` varchar(80) NOT NULL default '',
`dstchannel` varchar(80) NOT NULL default '',
`lastapp` varchar(80) NOT NULL default '',
`lastdata` varchar(80) NOT NULL default '',
`duration` int(11) NOT NULL default '0',
`billsec` int(11) NOT NULL default '0',
`disposition` varchar(45) NOT NULL default '',
`amaflags` int(11) NOT NULL default '0',
`accountcode` varchar(20) NOT NULL default '',
`userfield` varchar(255) NOT NULL default '',
`uniqueid` varchar(32) NOT NULL default '',
PRIMARY KEY (`id`),
KEY `calldate` (`calldate`),
KEY `dst` (`dst`),
KEY `accountcode` (`accountcode`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=194855 ;



Не могли бы вы сказать мне, пожалуйста, как я могу извлечь вышеназванные отчеты из этой таблицы. Я имею в виду, как я должен фильтровать (по каким критериям) и какие поля этой таблицы я должен фильтровать. Буду благодарен за любую помощь...
#2 24.10.2010 20:21

Прошу прощения у автора за то что нагло вторгся в его тему, нехотелось создавать еще ветку для такого ламерского вопроса.

В общем есть астериск, есть некий гуи, статистику берем с CDR записей. Все вроде работает кроме одного CDR не пишет поле duration, там всегда 0, вернее он не переключает duration на ответившего, тоесть все время разговора считается для 's', а не для ответившего оператора. Прошу вашей помощи в решении данной проблемы.

CDR записи ложу в Postgresql, пробовал в MySQL, результат тотже.

Или может посоветуйте другие более эфективные методы снятия статистики.
#3 25.10.2010 06:41

duration - Это общее время с дозвоном.
billsec - Время разговора. По поводу таблицы.. А что показывает /var/log/asterisk/cdr-csv/Master.csv?

_________________
Asterisk 1.4.30 @ Ubuntu 9.04 + Cisco MC3810 + NEC NEAX 2000IPS + Polycom IP Phones
#4 25.10.2010 10:31

Именно billsec интересует, извиняюсь.


Вот пример Master.csv
Code:


"","441245820","401","local-my-context","""441245820"" ","Local/401@local-my-context-c227;2","SIP/401-00000fea","Dial","SIP/401","2010-10-24 18:11:57",,"2010-10-24 18:12:03",6,0,"NO ANSWER","DOCUMENTATION","1287943917.11063",""
"","441245820","402","local-my-context","""441245820"" ","Local/402@local-my-context-4775;2","SIP/402-00000fe9","Dial","SIP/402","2010-10-24 18:11:57","2010-10-24 18:12:03","2010-10-24 18:12:04",7,1,"ANSWERED","DOCUMENTATION","1287943917.11061",""
"","441245820","s","to-my-context","""441245820"" ","SIP/5795972-00000fe8","Local/402@local-my-context-4775;1","Queue","4,t,,,120","2010-10-24 18:11:51","2010-10-24 18:11:51","2010-10-24 18:12:52",61,61,"ANSWERED","DOCUMENTATION","1287943911.11059",""





Пробую на элементарном контексте:
- Ответил
- проговорил приветствие
- Отправил в очередь
.- из очереди попало в локальный контекст для внутренних номеров

Сейчас перед отправкой в очередь поставил ResetCDR, частично решило проблему, теперь что у s что у ответившего duration и billsec одинаковы.
Но мне кажется это не единственный путь решения данной проблемы, жду ваших предложений.
#5 25.10.2010 16:03

А чем статистику снимаете? Просто, судя по логу, все поля корректно пишутся.
_________________
Asterisk 1.4.30 @ Ubuntu 9.04 + Cisco MC3810 + NEC NEAX 2000IPS + Polycom IP Phones
#6 25.10.2010 18:49

пока ничем, просто пишу в БД.

На счет приведенных данных, присмотритесь, они немного неверны, время разъединения ответившего и s разное, хотя после того как ответивший положил трубку, канал был разеденен.

В контексте с "s" мы видим

Code:
"Queue","4,t,,,120","2010-10-24 18:11:51","2010-10-24 18:12:52",61,61,"ANSWERED",


тоесть звонок поступил "2010-10-24 18:11:51" и был закончен "2010-10-24 18:12:52"

А у операторов:

Code:

"Dial","SIP/401","2010-10-24 18:11:57",,"2010-10-24 18:12:03",6,0,"NO ANSWER"
"Dial","SIP/402","2010-10-24 18:11:57","2010-10-24 18:12:03","2010-10-24 18:12:04",7,1,"ANSWERED"


при етом один из операторов ответил на звонок, и по идее время окончания разговора для этого оператора должно быть таким же как и у s.
Или я чтот неправильно понимаю?
#7 25.10.2010 20:35

А покажите входящий контекст. В смысле, extensions.conf
И еще... Что за версия *?

_________________
Asterisk 1.4.30 @ Ubuntu 9.04 + Cisco MC3810 + NEC NEAX 2000IPS + Polycom IP Phones
#8 25.10.2010 22:15

Контекст имеет приблизительно следующий вид:

Code:

[to-my-context]
exten => s,1,Answer()
exten => s,n,Playback(privetstvie)
exten => s,n,Queue(4,t,,,120)
exten => h,1,Hungup

Из очериди звонок попадает в:

[local-my-context]
exten => 401,1,Dial(SIP/401)
exten => 401,n,Hungup
exten => 402,1,Dial(SIP/402)
exten => 402,n,Hungup


Вот сейчас тестирую на таком элементарном контексте. Версия астериска 1.6.2
#9 26.10.2010 06:43

Так... Давайте начнем с начала. Как вызов попадает в очередь? 4 - это имя очереди? Как он после этого попадает в другой контекст? И еще... queues.conf тоже хотелось бы увидеть.
_________________
Asterisk 1.4.30 @ Ubuntu 9.04 + Cisco MC3810 + NEC NEAX 2000IPS + Polycom IP Phones