Asterisk Realtime เป็นโหมดการทำงานอีกโหมดหนึ่งของ Asterisk ที่มันจะดึงข้อมูลคอนฟิกต่างๆมาจากดาต้าเบส แต่รองรับเฉพาะบางอย่างเท่านั้นครับ ไม่ใช่ทุกคอนฟิก
1. ไฟล์ /etc/asterisk/extconfig.conf
ไฟล์นี้จะบอก Asterisk ว่าจะดึงข้อมูลเกี่ยวกับ queue, sip account, voicemail ได้จากดาต้าเบส เป็นดาต้าเบสแบบไหน ดาต้าเบสชื่ออะไร เทเบิลชื่ออะไร
จากตัวอย่างด้านล่าง ถ้า Asterisk ต้องการดึงข้อมูลเกี่ยวกับ Queues มันจะเข้ามาเช็คที่ Database เป็นดาต้าเบส mysql ชื่อดาต้าเบส asteriskrealtime ชื่อเทเบิล queues
- โค้ด: เลือกทั้งหมด
[settings]
queues => mysql,asteriskrealtime,queues
queue_members => mysql,asteriskrealtime,queue_members
sippeers => mysql,asteriskrealtime,sip
sipusers => mysql,asteriskrealtime,sip
iaxpeers => mysql,asteriskrealtime,iax
iaxusers => mysql,asteriskrealtime,iax
voicemail => mysql,asteriskrealtime,voicemail_users
เป็นสั่งให้ Asterisk ดึงข้อมูลจาก Database แทนที่จะดึงจากไฟล์ /etc/asterisk/*.conf ง่ายๆแบบนี้แหล่ะครับ ก็แค่ลบเครื่องหมาย ; ออกจากหน้าบรรทัดที่เราต้องการเท่านั้น เลือกเอาบรรทัดใดบรรทัดนึงก็ได้นะครับ ไม่ต้องเอาทั้งหมดก็ได้ เช่น เราต้องการให้มันดึงแค่ข้อมูล SIP Users จากดาต้าเบส เราก็เอา ; ออกจากหน้าบรรทัด sipusers เท่านั้น บรรทัดอื่นที่เหลือปล่อยไว้เหมือนเดิม
ส่วนรายละเอียดข้อมูลที่ต้องใช้ในการติดต่อกับดาต้าเบส asteriskrealtime จะอยู่ที่ไฟล์ /etc/asterisk/res_mysql.conf ครับ
2. ไฟล์ /etc/asterisk/res_mysql.conf
คอนฟิกบอก Asterisk ให้ใช้ข้อมูลต่อไปนี้ติดต่อกับ Database เมื่อต้องการดึงข้อมูลตามที่คอนฟิกในไฟล์ /etc/asterisk/extconfig.conf
- โค้ด: เลือกทั้งหมด
[general]
dbhost = localhost
dbname = asteriskrealtime
dbuser = user
dbpass = password
;dbport = 3306
dbsock = /var/lib/mysql/mysql.sock
3. ไฟล์ /etc/asterisk/cdr_mysql.conf
ให้ Asterisk เก็บ CDR ไว้ในดาต้าเบสด้วย ถ้าทำแบบนี้จะเขียนเว็บให้ดึง CDR มาโชว์และคำนวณได้
- โค้ด: เลือกทั้งหมด
[global]
hostname = localhost
dbname = asteriskrealtime
table = cdr
password = password
user = user
;port = 3306
sock = /var/lib/mysql/mysql.sock
userfield=1
4. สร้างดาต้าเบส สมมติว่าชื่อ asteriskrealtime
- โค้ด: เลือกทั้งหมด
CREATE DATABASE `asteriskrealtime` DEFAULT CHARACTER SET latin1 COLLATE utf8_general_ci;
- โค้ด: เลือกทั้งหมด
CREATE TABLE IF NOT EXISTS `cdr` (
`recid` mediumint(8) unsigned NOT NULL auto_increment COMMENT 'Record ID',
`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 '',
`uniqueid` varchar(32) NOT NULL default '',
`userfield` varchar(255) NOT NULL default '',
PRIMARY KEY (`recid`),
KEY `calldate` (`calldate`),
KEY `dst` (`dst`),
KEY `accountcode` (`accountcode`),
KEY `src` (`src`),
KEY `disposition` (`disposition`),
KEY `uniqueid` (`uniqueid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8_general_ci AUTO_INCREMENT=1;
- โค้ด: เลือกทั้งหมด
CREATE TABLE IF NOT EXISTS `queue_members` (
`queue_name` varchar(128) NOT NULL default '',
`interface` varchar(128) NOT NULL default '',
`penalty` int(11) default NULL,
PRIMARY KEY (`queue_name`,`interface`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8_general_ci;
- โค้ด: เลือกทั้งหมด
CREATE TABLE IF NOT EXISTS `queues` (
`name` varchar(128) NOT NULL,
`musiconhold` varchar(128) default 'default',
`announce` varchar(128) default NULL,
`context` varchar(128) default NULL,
`timeout` int(11) default '60',
`monitor_join` tinyint(1) default NULL,
`monitor_format` varchar(128) default NULL,
`queue_youarenext` varchar(128) default NULL,
`queue_thereare` varchar(128) default NULL,
`queue_callswaiting` varchar(128) default NULL,
`queue_holdtime` varchar(128) default NULL,
`queue_minutes` varchar(128) default NULL,
`queue_seconds` varchar(128) default NULL,
`queue_lessthan` varchar(128) default NULL,
`queue_thankyou` varchar(128) default NULL,
`queue_reporthold` varchar(128) default NULL,
`announce_frequency` int(11) default NULL,
`announce_round_seconds` int(11) default NULL,
`announce_holdtime` varchar(128) default NULL,
`periodic_announce` varchar(128) default NULL,
`periodic_announce_frequency` int(11) default NULL,
`retry` int(11) default '5',
`ringinuse` varchar(5) NOT NULL default 'no',
`autofill` varchar(5) NOT NULL default 'yes',
`autopause` varchar(5) NOT NULL default 'no',
`setinterfacevar` varchar(5) NOT NULL default 'yes',
`wrapuptime` int(11) default '30',
`maxlen` int(11) default NULL,
`servicelevel` int(11) default NULL,
`strategy` varchar(128) default 'ringall',
`joinempty` varchar(128) default 'no',
`leavewhenempty` varchar(128) default 'yes',
`eventmemberstatus` tinyint(1) default NULL,
`eventwhencalled` tinyint(1) default NULL,
`reportholdtime` tinyint(1) default NULL,
`memberdelay` int(11) default NULL,
`weight` int(11) default NULL,
`timeoutrestart` tinyint(1) default NULL,
PRIMARY KEY (`name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8_general_ci;
- โค้ด: เลือกทั้งหมด
CREATE TABLE IF NOT EXISTS `sip` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(80) NOT NULL,
`host` varchar(31) NOT NULL default 'dynamic',
`nat` varchar(5) NOT NULL default 'no',
`type` enum('user','peer','friend') NOT NULL default 'friend',
`accountcode` varchar(20) default 'ACCOUNT',
`amaflags` varchar(13) default NULL,
`callgroup` varchar(10) default NULL,
`callerid` varchar(80) default NULL,
`incominglimit` varchar(6) NOT NULL default '1',
`cancallforward` char(3) default 'yes',
`canreinvite` char(3) default 'no',
`context` varchar(80) default 'from-sip',
`defaultip` varchar(15) default NULL,
`dtmfmode` varchar(7) default 'rfc2833',
`fromuser` varchar(80) default NULL,
`fromdomain` varchar(80) default NULL,
`insecure` varchar(4) default NULL,
`language` char(2) default 'en',
`mailbox` varchar(50) default NULL,
`md5secret` varchar(80) default NULL,
`deny` varchar(95) default '0.0.0.0/0.0.0.0',
`permit` varchar(95) default '0.0.0.0/0.0.0.0',
`mask` varchar(95) default NULL,
`musiconhold` varchar(100) default 'default',
`pickupgroup` varchar(10) default NULL,
`qualify` char(3) default 'yes',
`regexten` varchar(80) default NULL,
`restrictcid` char(3) default NULL,
`rtptimeout` char(3) default NULL,
`rtpholdtimeout` char(3) default NULL,
`secret` varchar(80) default 'SECRET',
`setvar` varchar(100) default NULL,
`disallow` varchar(100) default 'all',
`allow` varchar(100) default 'alaw',
`fullcontact` varchar(80) NOT NULL default '',
`ipaddr` varchar(15) NOT NULL default '',
`port` smallint(5) unsigned NOT NULL default '0',
`regserver` varchar(100) default NULL,
`regseconds` int(11) NOT NULL default '0',
`username` varchar(80) NOT NULL,
`defaultuser` varchar(80) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `name` (`name`),
KEY `name_2` (`name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8_general_ci ROW_FORMAT=DYNAMIC AUTO_INCREMENT=1;
- โค้ด: เลือกทั้งหมด
CREATE TABLE IF NOT EXISTS `iax` (
`id` int(11) NOT NULL auto_increment,
`name` char(80) collate utf8_bin NOT NULL default '',
`accountcode` char(20) collate utf8_bin default NULL,
`regexten` char(20) collate utf8_bin default NULL,
`amaflags` char(7) collate utf8_bin default NULL,
`callgroup` char(10) collate utf8_bin default NULL,
`callerid` char(80) collate utf8_bin default NULL,
`incominglimit` varchar(6) NOT NULL default '1',
`canreinvite` char(3) collate utf8_bin default 'yes',
`context` char(80) collate utf8_bin default NULL,
`defaultip` char(15) collate utf8_bin default NULL,
`dtmfmode` char(7) collate utf8_bin NOT NULL default 'RFC2833',
`fromuser` char(80) collate utf8_bin default NULL,
`fromdomain` char(80) collate utf8_bin default NULL,
`host` char(31) collate utf8_bin NOT NULL default '',
`insecure` char(20) collate utf8_bin default NULL,
`language` char(2) collate utf8_bin default NULL,
`mailbox` char(50) collate utf8_bin default NULL,
`md5secret` char(80) collate utf8_bin default NULL,
`nat` char(3) collate utf8_bin default 'yes',
`permit` char(95) collate utf8_bin default NULL,
`deny` char(95) collate utf8_bin default NULL,
`mask` char(95) collate utf8_bin default NULL,
`pickupgroup` char(10) collate utf8_bin default NULL,
`port` char(5) collate utf8_bin NOT NULL default '',
`qualify` char(7) collate utf8_bin default 'yes',
`restrictcid` char(1) collate utf8_bin default NULL,
`rtptimeout` char(3) collate utf8_bin default NULL,
`rtpholdtimeout` char(3) collate utf8_bin default NULL,
`secret` char(80) collate utf8_bin default NULL,
`type` char(6) collate utf8_bin NOT NULL default 'friend',
`username` char(80) collate utf8_bin NOT NULL default '',
`disallow` char(100) collate utf8_bin default 'all',
`allow` char(100) collate utf8_bin default 'gsm,ulaw,alaw',
`musiconhold` char(100) collate utf8_bin default NULL,
`regseconds` int(11) NOT NULL default '0',
`ipaddr` char(15) collate utf8_bin NOT NULL default '',
`cancallforward` char(3) collate utf8_bin default 'yes',
PRIMARY KEY (`id`),
UNIQUE KEY `name` (`name`),
KEY `name_2` (`name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=1 ;
- โค้ด: เลือกทั้งหมด
CREATE TABLE IF NOT EXISTS `voicemail_messages` (
`id` int(11) NOT NULL auto_increment,
`msgnum` int(11) NOT NULL default '0',
`dir` varchar(80) default '',
`context` varchar(80) default '',
`macrocontext` varchar(80) default '',
`callerid` varchar(40) default '',
`origtime` varchar(40) default '',
`duration` varchar(20) default '',
`mailboxuser` varchar(80) default '',
`mailboxcontext` varchar(80) default '',
`recording` longblob,
PRIMARY KEY (`id`),
KEY `dir` (`dir`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;
- โค้ด: เลือกทั้งหมด
CREATE TABLE IF NOT EXISTS `voicemail_users` (
`uniqueid` int(11) NOT NULL auto_increment,
`customer_id` varchar(11) NOT NULL default '0',
`context` varchar(50) NOT NULL default 'default',
`mailbox` varchar(11) NOT NULL default '0',
`password` varchar(5) NOT NULL default '6666',
`fullname` varchar(150) NOT NULL,
`email` varchar(50) NOT NULL,
`pager` varchar(50) NOT NULL,
`tz` varchar(10) NOT NULL default 'en',
`attach` varchar(4) NOT NULL default 'yes',
`saycid` varchar(4) NOT NULL default 'yes',
`dialout` varchar(10) NOT NULL,
`callback` varchar(10) NOT NULL,
`review` varchar(4) NOT NULL default 'no',
`operator` varchar(4) NOT NULL default 'no',
`envelope` varchar(4) NOT NULL default 'no',
`sayduration` varchar(4) NOT NULL default 'no',
`saydurationm` tinyint(4) NOT NULL default '1',
`sendvoicemail` varchar(4) NOT NULL default 'no',
`delete` varchar(4) NOT NULL default 'no',
`nextaftercmd` varchar(4) NOT NULL default 'yes',
`forcename` varchar(4) NOT NULL default 'no',
`forcegreetings` varchar(4) NOT NULL default 'no',
`hidefromdir` varchar(4) NOT NULL default 'yes',
`stamp` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
PRIMARY KEY (`uniqueid`),
KEY `mailbox_context` (`mailbox`,`context`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8_general_ci AUTO_INCREMENT=1 ;