[asterisk-dev] [Code Review] CDR: add Dialed Number Identifier field (DNID) field in record

Alec Davis sivad.a at paradise.net.nz
Tue Jan 12 00:32:30 CST 2010


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviewboard.asterisk.org/r/455/
-----------------------------------------------------------

(Updated 2010-01-12 00:32:30.681200)


Review request for Asterisk Developers and Russell Bryant.


Changes
-------

changes as requested.

testing:
Tested on 1.6.1 server with mysql server, dnid was succesfully recorded.


Summary
-------

CDR record fields are missing the number the inbound caller dialed, this is important where a corporate has multiple DDI's and want to know how each of them are performing.

We have previously had customize the 'userfield' or the like, in the dialplan with a line as follows:
    exten => s,n,Set(CDR(userfield)=${CALLERID(dnid)})

Now, with the addition of the 'dnid' field in the database (mysql in our case) the 'dnid' field is automatically filled.

cdr collector support:
yes (after user adds required 'dnid' field):
   cdr_adaptive_odbc, cdr_mysql, cdr_pgsql and cdr_tds will automatically fill in field if 'dnid' field exists in database. 
   cdr_custom requires user added field in cdr_custom.conf like ;Master.csv => "${CDR(clid)}",${CDR(dnid)}",

maybe (requires cdr collector supporting code):
   cdr_custom, requires optional user config flag and supporting code, IE. cdr_csv:logdnid=yes.
      Has been suggested to ignore cdr_custom, as users interested in 'dnid' wouldn't seriously be using cdr_custom.
   cdr_radius, requires optional user config flag and supporting code.
      Tilghman considered cdr_radius 'adaptive support', but it has no real method for querying what was supported on the backend.


Diffs (updated)
-----

  trunk/main/cdr.c 239388 

Diff: https://reviewboard.asterisk.org/r/455/diff


Testing
-------

added additional mysql field with following systax;
  mysql> alter table cdr ADD (dnid varchar(80) not null);

made inbound test calls, from my cell phone (021xxxx), and restricted number.
The DNID is only 4 digits, as that is what our Telco presents us with.
The 'userfield' is still being customized from the dialplan. My extension is 4866. 8888 was unassigned.

mysql> select calldate,clid,dnid,dst,userfield,dcontext,lastapp,lastdata,duration from cdr where dcontext like "ivr2%" and dnid like "9%";
+---------------------+-------------------------+------+------+-----------------+-----------------------------+---------+---------------+----------+
| calldate            | clid                    | dnid | dst  | userfield       | dcontext                    | lastapp | lastdata      | duration |
+---------------------+-------------------------+------+------+-----------------+-----------------------------+---------+---------------+----------+
| 2010-01-07 20:52:52 | "Alec Davis" <21496xxx> | 9100 | 4866 | 9100-Alec Davis | ivr2-bdt-dialledbyextension | Dial    | DAHDI/g0/4866 |       22 |
| 2010-01-07 20:56:46 |                         | 9100 | 4866 | 9100-Alec Davis | ivr2-bdt-dialledbyextension | Dial    | DAHDI/g0/4866 |       17 |
| 2010-01-07 21:23:44 | "Alec Davis" <21496xxx> | 9888 | 8888 | 9888-           | ivr2-bdt-dialledbyextension | Dial    | DAHDI/g0/8888 |       16 |
| 2010-01-07 21:24:29 | "Alec Davis" <21496xxx> | 9888 | 4866 | 9888-Alec Davis | ivr2-bdt-dialledbyextension | Dial    | DAHDI/g0/4866 |       20 |
+---------------------+-------------------------+------+------+-----------------+-----------------------------+---------+---------------+----------+
4 rows in set (0.01 sec)


Thanks,

Alec




More information about the asterisk-dev mailing list