หน้า 1 จากทั้งหมด 1

ต้องการให้ Asterisk เก็บ CDR ลงใน MySQL

โพสต์โพสต์แล้ว: 03 ม.ค. 2010 11:26
โดย voip4share
ต้องการให้ 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 นะครับ)

โค้ด: เลือกทั้งหมด
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 แล้วจะชอบใจ