Значения полей таблицы 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 ; |
Не могли бы вы сказать мне, пожалуйста, как я могу извлечь вышеназванные отчеты из этой таблицы. Я имею в виду, как я должен фильтровать (по каким критериям) и какие поля этой таблицы я должен фильтровать. Буду благодарен за любую помощь...
В общем есть астериск, есть некий гуи, статистику берем с CDR записей. Все вроде работает кроме одного CDR не пишет поле duration, там всегда 0, вернее он не переключает duration на ответившего, тоесть все время разговора считается для 's', а не для ответившего оператора. Прошу вашей помощи в решении данной проблемы.
CDR записи ложу в Postgresql, пробовал в MySQL, результат тотже.
Или может посоветуйте другие более эфективные методы снятия статистики.
billsec - Время разговора. По поводу таблицы.. А что показывает /var/log/asterisk/cdr-csv/Master.csv?
_________________
Asterisk 1.4.30 @ Ubuntu 9.04 + Cisco MC3810 + NEC NEAX 2000IPS + Polycom IP Phones
Вот пример 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 одинаковы.
Но мне кажется это не единственный путь решения данной проблемы, жду ваших предложений.
_________________
Asterisk 1.4.30 @ Ubuntu 9.04 + Cisco MC3810 + NEC NEAX 2000IPS + Polycom IP Phones
На счет приведенных данных, присмотритесь, они немного неверны, время разъединения ответившего и 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.
Или я чтот неправильно понимаю?
И еще... Что за версия *?
_________________
Asterisk 1.4.30 @ Ubuntu 9.04 + Cisco MC3810 + NEC NEAX 2000IPS + Polycom IP Phones
| 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
_________________
Asterisk 1.4.30 @ Ubuntu 9.04 + Cisco MC3810 + NEC NEAX 2000IPS + Polycom IP Phones