[asterisk-users] CDR replacement with CEL

Marek Červenka cervajs2 at gmail.com
Thu Jul 14 08:52:53 CDT 2016


hi,

i'm trying replace CDR with CEL

reasons:

- minimize Stasis listeners (CDR)

- CEL, CDR produces "similar" data

- own logic of CDR meaning like "calldate,src,dst,direction,.." dst is 
always first connected point in PBX - real user or IVR/queue etc., 
numbers are only attributes of object "user"


do you have any tips/logic/comments for this goal?


my custom cdr table

CREATE TABLE `cdr` (
   `id` bigint(20) NOT NULL AUTO_INCREMENT,
   `user_id` int(11) NOT NULL COMMENT 'user id',
   `tenant_id` int(11) NOT NULL COMMENT 'tenant id',
   `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 '',
   `duration` int(11) NOT NULL DEFAULT '0',
   `billsec` int(11) NOT NULL DEFAULT '0',
   `disposition` varchar(45) NOT NULL DEFAULT '' COMMENT 'asterisk hangup cause',
   `way` enum('loc','in','out') NOT NULL DEFAULT 'loc' COMMENT 'call direction (loc - local, in - incoming, out - outgoing)',
   `trunk` varchar(80) NOT NULL COMMENT 'used SIP trunk',
   `hangupcause` varchar(10) NOT NULL COMMENT 'hangup cause',
   `hangupside` varchar(10) NOT NULL COMMENT 'hangup on which side',
   `uniqueid` varchar(64) NOT NULL DEFAULT '',
   `linkedid` varchar(64) NOT NULL,
   `data` json NOT NULL COMMENT 'metadata',
   `stamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'creation date',
   PRIMARY KEY (`id`),
   KEY `dst` (`dst`),
   KEY `uniqueid` (`uniqueid`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


CEL pairing for simple call scenario

user_id = own variable (from cel userfield or CELGenUserEvent app)
tenant_id = own variable (from cel accountcode or CELGenUserEvent app)
calldate = eventtime
src = cid_num
dst = exten
duration =  eventtime(event HANGUP) - eventtime(eventtype BRIDGE_ENTER)  (no eventtype PICKUP,FORWARD,*TRANSFER)    (or howto identify event RINGING?)
billsec =  eventtime(event HANGUP) - eventtime(eventtype ANSWER)  (no eventtype PICKUP,FORWARD,*TRANSFER)
way = own variable (CELGenUserEvent app)
disposition = extra: {"hangupcause":16,"hangupsource":"SIP/siptrunk-00000a80","dialstatus":"ANSWER"}
trunk = own variable (CELGenUserEvent app)
hangupcause = extra: {"hangupcause":16,"hangupsource":"SIP/siptrunk-00000a80","dialstatus":"ANSWER"}
hangupside = ???

  




More information about the asterisk-users mailing list