ต้องการให้ Asterisk เก็บ CDR ลงใน MySQL
โพสต์แล้ว: 03 ม.ค. 2010 11:26
ต้องการให้ Asterisk เก็บ CDR ลงใน MySQL มีขั้นตอนง่ายๆ 3 ขั้นตอนดังนี้ครับ
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 นะครับ)
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.
ต่อไปจะสร้างเทเบิลชื่อ cdr
Copy บรรทัดข้างล่างนี้แล้ว Paste
3. แก้ไขไฟล์ cdr_mysql.conf
ปกติไฟล์นี้จะอยู่ที่ไดเร็คตอรี่ /etc/asterisk ครับ
เพิ่มบรรทัดต่อไปนี้เข้าในไฟล์ แก้ค่า user และ password และ dbname ให้ตรงกับที่เซ็ตไว้นะครับ
4. รีสตาร์ท Asterisk ใหม่
เท่านี้ก็เป็นอันเรียบร้อยครับ ต่อไปก็ทดสอบโดยการโทรดูแล้วเช็คในเทเบิล cdr ว่ามีรายการโทรถูกบันทึกไว้หรือยัง
5. ดู CDR ด้วยเว็บเพจ
บทความนี้จะดึงข้อมูล CDR ในดาต้าเบสมาแสดงทางหน้าเว็บครับ Asterisk-Stat แล้วจะชอบใจ
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 แล้วจะชอบใจ