1. คอมไพล์ Asterisk ให้รองรับ MySQL Database
2. สร้างดาต้าเบส cdr
3. แก้คอนฟิก Asterisk ให้เก็บ CDR ลงดาต้าเบส
แล้วก็ 4. รีสตาร์ท Asterisk
มาดูรายละเอียดของแต่ละขั้นตอนกันครับ
1. คอมไพล์ Asterisk ให้รองรับ MySQL
วิธีที่จะทำให้ Asterisk รองรับดาต้าเบส MySQL เราต้องติดตั้ง Asterisk-Addons เพิ่มเติมนะครับ
2. สร้างดาต้าเบสและเทเบิล
ผมจะสร้างดาต้าเบสชื่อ asterisk_cdr นะครับ
เข้าสู่พร้อมท์ mysql (ผมจะล๊อกอินเข้า mysql ด้วย user=root และ password=password นะครับ)
- โค้ด: เลือกทั้งหมด
mysql -uroot -ppassword
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 106436
Server version: 5.0.77 Source distribution
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
- โค้ด: เลือกทั้งหมด
mysql>
mysql> create database asterisk_cdr;
mysql> flush privileges;
ต่อไปจะสร้างเทเบิลชื่อ cdr
- โค้ด: เลือกทั้งหมด
mysql> use asterisk_cdr;
mysql>
Copy บรรทัดข้างล่างนี้แล้ว Paste
- โค้ด: เลือกทั้งหมด
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` );
- โค้ด: เลือกทั้งหมด
mysql> exit
3. แก้ไขไฟล์ cdr_mysql.conf
ปกติไฟล์นี้จะอยู่ที่ไดเร็คตอรี่ /etc/asterisk ครับ
- โค้ด: เลือกทั้งหมด
vi /etc/asterisk/cdr_mysql.conf
เพิ่มบรรทัดต่อไปนี้เข้าในไฟล์ แก้ค่า user และ password และ dbname ให้ตรงกับที่เซ็ตไว้นะครับ
- โค้ด: เลือกทั้งหมด
[global]
hostname=localhost
dbname=asterisk_cdr
table=cdr
password=password
user=root
;port=3306
sock=/var/lib/mysql/mysql.sock
userfield=1
4. รีสตาร์ท Asterisk ใหม่
- โค้ด: เลือกทั้งหมด
service asterisk restart
เท่านี้ก็เป็นอันเรียบร้อยครับ ต่อไปก็ทดสอบโดยการโทรดูแล้วเช็คในเทเบิล cdr ว่ามีรายการโทรถูกบันทึกไว้หรือยัง
5. ดู CDR ด้วยเว็บเพจ
บทความนี้จะดึงข้อมูล CDR ในดาต้าเบสมาแสดงทางหน้าเว็บครับ Asterisk-Stat แล้วจะชอบใจ