Asterisk
怎么在数据库中记录我们的通话记录,如去电和来电号码,时间==。。,
首先我想到的是可以直接在 dialplan 中把主叫及被叫号及时间==其它信息直接手写添加到 mysql 数据中。
二:改动ASTERISK下的配置文件
cdr_manager.conf 和 cdr_mysql.conf ,主要是改 cdr_mysql.conf 文件,如下:
注: cdr_manager.conf 中设置 enabled = yes
简单点吧:直接重启系统就OK
#reboot
首先我想到的是可以直接在 dialplan 中把主叫及被叫号及时间==其它信息直接手写添加到 mysql 数据中。
那么官方提供了这样的一个方法来开启CDR记录
一:首先得在mysql 中建立好我们 数据库名称 和 cdr 表,官方提供的mysql 语句如下:
CREATE DATABASE asterisk;
GRANT INSERT
ON asterisk.*
TO asterisk@localhost
IDENTIFIED BY 'yourpassword';
USE asterisk;
CREATE TABLE `cdr` (
`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 ''
);
ALTER TABLE `cdr` ADD `uniqueid` VARCHAR(32) NOT NULL default '';
ALTER TABLE `cdr` ADD INDEX ( `calldate` );
ALTER TABLE `cdr` ADD INDEX ( `dst` );
ALTER TABLE `cdr` ADD INDEX ( `accountcode` );
相关解释
${CDR(clid)} Caller ID 主叫号码
${CDR(src)} Source 源
${CDR(dst)} Destination 目的地
${CDR(dcontext)} Destination context 目标上下文
${CDR(channel)} Channel name 频道名称
${CDR(dstchannel)} Destination channel 目标通道
${CDR(lastapp)} Last app executed 的最后程序执行
${CDR(lastdata)} Last app's arguments 最后的应用程序的参数
${CDR(start)} Time the call started. 通话时间开始。
${CDR(answer)} Time the call was answered. 应答时间
${CDR(end)} Time the call ended. 结束时间
${CDR(duration)} Duration of the call. 持续时间
${CDR(billsec)} Duration of the call once it was answered. 一旦有人接听电话的持续时间
${CDR(disposition)} ANSWERED, NO ANSWER, BUSY 没有答案,忙
${CDR(amaflags)} DOCUMENTATION, BILL, IGNORE etc 条例草案“,忽视等
${CDR(accountcode)} The channel's account code (read-write). 通道的账户代码(读写
${CDR(uniqueid)} The channel's unique id. 通道的唯一ID。
${CDR(userfield)} The channels uses specified field (read-write). 使用指定的字段(只读)
二:改动ASTERISK下的配置文件
cdr_manager.conf 和 cdr_mysql.conf ,主要是改 cdr_mysql.conf 文件,如下:
注: cdr_manager.conf 中设置 enabled = yes
[global]
hostname=localhost //如果是其它机器需要配置那台mysql服务的用户权限 为%
dbname=asterisk //数据库名
table=cdr //表名
password=888888 //数据库密码
user=root //数据库用户名
port=3306 //默认的端口
sock=/var/lib/asterisk/mysql.sock //mysql.sock 的路径
userfield=1 //cdr表userfield 为可以写
简单点吧:直接重启系统就OK
#reboot
转自:http://www.asterisk-help.com/read.php?tid-69-page-1.html
http://www.asterisk-help.com/read.php?tid-1182.html