pruiz / cdr_yada

Fork of cdr_yada: A call detail recording (CDR) module for asterisk and is used to store records to any database yada supports (currently MySQL, Oracle, PostgreSQL, SQLite3). If the database is not available, it can queue records to both memory and disc for later playback without worry of losing records.

Home Page:http://oss.devit.com/voip/asterisk/cdr_yada/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

cdr_yada
Copyright 2004 - 2006 Matt Griswold, dev/IT
Released under the GNU General Public License, see COPYING
Latest version at http://oss.devit.com/voip/asterisk/cdr_yada/

################################################################################
# description

This is a call detail recording (CDR) module for asterisk and is used to
store call details to any database yada supports (currently MySQL, Oracle,
PostgreSQL, SQLite3).

If the database is not available, it can queue records to both memory and disc
for later playback without worry of losing records.

asterisk: http://asterisk.org/ 
yada: http://oss.devit.com/yada/

################################################################################
# custom userfield parsing

This feature, sponsored by voipGATE.com, allows custom cdr fields to be input
via the SetCDRUserField function.  For example, you could define 3 columns
(col1, col2, col3) and set any or all of them by calling
SetCDRUserField(col1=yes, col3=${CALLERID}) and they would be parsed and put
into the database in their respective columns.

To define the columns, you must set a name=<COLUMN NAME> in a config section refering to the column it's in.  There are 16 possible  columns, ufc0 - ufc15.

[ufc0]
  name=col1

See example at bottom of this file for more information.

################################################################################
# installation

Untar this source into your asterisk source directory.  cd into the cdr_yada
directory, review any variables in the Makefile, and type 'make'.

Copy cdr_yada.so to your asterisk module directory (default
/usr/lib/asterisk/modules).  Copy cdr_yada.conf.sample as cdr_yada.conf into
your asterisk config directory (default /etc/asterisk) and edit it.

################################################################################
# asterisk cli commands

cdr yada connect : 
	connect to database

cdr yada disconnect : 
	sync any queued logs and disconnect from database

cdr yada status :
	display current status

################################################################################
# config example

;
; cdr_yada.conf
;

[global]

  ; yada db string to connect to
  dbstr=mysql:localhost::cdr
  ; username for db (if required)
  user=cdr
  ; password for db (if required)
  pass=cdrpass

  ; maximum number of records to hold in memory
  ; once this is reached, records are either written to disc or dropped
  queue_size=500
  queue_file=/var/asterisk/cdr_yada.queue

  ; this option sets whether or not to playback records from the queue_file
  ; if set to no, it will not play them back and you will need to do it manually
  ; this is primarily used if doing so would cause load issues
  ;queue_playback=yes

  ; table name
  table=cdr_record

  ; query to use to insert records
  ; note: table directive is ignored if query directive is used
  ;query=


################################################################################
# example schema (in MySQL)

create table cdr_yada (
   id int not null,
   calldate datetime not null default '0000-00-00 00:00:00',
   accountcode varchar(20) not null default '',
   src varchar(80) not null default '',
   dst varchar(80) not null default '',
   dcontext varchar(80) not null default '',
   clid 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',
   uniqueid varchar(32) not null default '',
   userfield varchar(255) not null default ''
);

with config directive

  table=cdr_yada

################################################################################
# example custom schema

create table cdr_yada_cust (
   id int not null,
   calldate datetime not null default '0000-00-00 00:00:00',
   accountcode varchar(20) not null default '',
   src varchar(80) not null default '',
   dst varchar(80) not null default '',
   dcontext varchar(80) not null default '',
   clid 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'
);

with config directive

  query=insert into cdr_yada_cust (calldate, clid, src, dst, dcontext, channel, dstchannel, lastapp, lastdata, duration, billsec, disposition, amaflags) values ('?s', ?v, ?v, ?v, ?v, ?v, ?v, ?v, ?v, ?d, ?d, ?v, ?d)

################################################################################
# example oracle schema and query to make the date work properly
# (thanks Han van Hulst)

 Name                Null?    Type                                              
 ------------------- -------- ----------------                                  
 ID                           NUMBER(38)                                        
 CALLDATE                     DATE                                              
 ACCOUNTCODE                  VARCHAR2(20)                                      
 SRC                          VARCHAR2(80)                                      
 DST                          VARCHAR2(80)                                      
 DCONTEXT                     VARCHAR2(80)                                      
 CLID                         VARCHAR2(80)                                      
 CHANNEL                      VARCHAR2(80)                                      
 DSTCHANNEL                   VARCHAR2(80)                                      
 LASTAPP                      VARCHAR2(80)                                      
 LASTDATA                     VARCHAR2(80)                                      
 DURATION                     NUMBER(38)                                        
 BILLSEC                      NUMBER(38)                                        
 DISPOSITION                  VARCHAR2(45)                                      
 AMAFLAGS                     NUMBER(38)                                        
 UNIQUEID                     VARCHAR2(32)                                      
 USERFIELD                    VARCHAR2(255)                                     

  query=insert into cdr_yada (id,calldate, clid, src, dst, dcontext, channel, dstchannel, lastapp, lastdata, duration, billsec, disposition, amaflags, accountcode, uniqueid, userfield) values (cdrseq.nextval, to_date('?s','yyyy-mm-dd hh24:mi:ss'), ?v, ?v, ?v, ?v, ?v, ?v, ?v, ?v, ?d, ?d, ?v, ?d, ?v, ?v, ?v)

################################################################################
# example custom userfield schema (in MySQL)

create table cdr_yada_ufp (
  id int not null,
  calldate datetime not null default '0000-00-00 00:00:00',
  accountcode varchar(20) not null default '',
  src varchar(80) not null default '',
  dst varchar(80) not null default '',
  dcontext varchar(80) not null default '',
  clid 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',
  uniqueid varchar(32) not null default '',
  msg varchar(255),
  area varchar(255),
  cid varchar(255),
);


  table=cdr_yada_ufp

[userfield_parse]
  enabled=yes

[ufc0]
  name=msg

[ufc1]
  name=area

[ufc2]
  name=cid

set in the dialplan with:

SetCDRUserField(msg=test message, area=555, cid=${CALLERID})

################################################################################
# contact

Questions, comments, bugs, etc.

Matt Griswold <matt@devit.com> 0x6B2E514F
6CF4 A97B 55A5 BBD6 FF06  6F0B F99D 7C86 6B2E 514F
http://oss.devit.com/matt/

About

Fork of cdr_yada: A call detail recording (CDR) module for asterisk and is used to store records to any database yada supports (currently MySQL, Oracle, PostgreSQL, SQLite3). If the database is not available, it can queue records to both memory and disc for later playback without worry of losing records.

http://oss.devit.com/voip/asterisk/cdr_yada/

License:GNU General Public License v2.0