How to add custom parameters in CDR from routing

From Yate Documentation
Revision as of 12:51, 15 May 2013 by Dana (Talk | contribs)

Jump to: navigation, search

If you need to have custom parameters in CDR, they must be set in routing.

To copy parameters from routing in CDR they must be enabled in cdrbuild.conf first and then from routing file they are set in specific parameter called copyparams.

It is assumed that you have set an account in Yate, if you write your CDR in the database.

Contents

Enable parameters

The parameters must be enabled from cdrbuild.conf:

[parameters]
name_param1=true;
name_param2=true;

Routing

If the routing it is done from regexroute.conf. Make the routing rule and :

^.*$=sip/sip:\0@127.0.0.1;copyparams=name_param1,name_param2;name_param1=value1;name_param2=value2;

If you decide to do the routing from an external script, you add this custom params in call.route message when routing the call.

You have to install handler for call.route and add your parameters like this:

$m->params["name_param1"] = $value1;
$m->params["name_param2"] = $value2;
$m->params["copyparams"] = "name_param1,name_param2";

Write CDR

In database

To write CDR in the database, module register can be used.

The queries are in PostGreSQL.

You can see an example for cdr table on which you should add your new parameters as you named them ( e.g name_param1, name_param2).

register.conf

[default]
;your database account
account=my_pgsql_db

[general]
call.cdr=yes

[call.cdr]
initquery=UPDATE cdr SET ended=true WHERE ended IS NULL OR NOT ended

cdr_initialize=INSERT INTO cdr VALUES(TIMESTAMP 'EPOCH' + INTERVAL '${time} s','${chan}','${address}','${direction}','${billid}',\
'${caller}','${called}',INTERVAL '${duration} s' ,INTERVAL '${billtime} s',INTERVAL '${ringtime} s','${status}','${reason}',false,\
'${name_param1}', '${name_param2}')

cdr_update=UPDATE cdr SET caller='${caller}',called='${called}',duration=INTERVAL '${duration} s',billtime=INTERVAL '${billtime} s',\
ringtime=INTERVAL '${ringtime} s',status='${status}',reason='${reason}' WHERE chan='${chan}' AND billid='${billid}'\
AND name_param1='${name_param1}' AND name_param2='${name_param2}'

cdr_finalize=UPDATE cdr SET caller='${caller}', called='${called}', duration=INTERVAL '${duration} s',billtime=INTERVAL '${billtime} s',\  
ringtime=INTERVAL,'${ringtime}s',status='${status}',reason='${reason}',ended=true,name_param1='${name_param1}', name_param2='${name_param2}'\
WHERE chan='${chan}' AND billid='${billid}'

In file

To write CDR in file use cdrfile.conf:

[general]
file=/var/log/yate-cdr.csv

; comma-separated (.csv)
format=${time},"${billid}","${chan}","${address}","${caller}","${called}",${billtime},${ringtime},${duration},"${direction}","${status}",\
"${reason}","${name_param1}","${name_param2}"


See also

Personal tools
Namespaces

Variants
Actions
Preface
Configuration
Administrators
Developers