2. Asterisk 設定用のMySQL データベースおよびテーブル作成

Asterisk のCDR と sip.conf および extensions.conf 設定を格納するデータベースとテーブルを MySQL に作成します。

MySQL はすでにインストールされている前提です。

データベースの作成

まずは、データベースを以下のとおり作成します。

データベース:
    データベース名 : Asterisk
    ユーザー名 : Asterisk
    パスワード : Asterisk

mysql へログインして:

# mysql -u root -p
Enter password:
mysql> create database Asterisk;
mysql> use Asterisk;
mysql> grant all on *.* to Asterisk@localhost identified by 'Asterisk';
mysql> flush privileges;

テーブルの作成

次に、テーブルを以下のとおり作成します。

テーブル:
    CDR 用 : cdr
    sip.conf 用 : sip_buddies
    extensions.conf 用 : extensions
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` );

— Asterisk 1.8 以降 —
Asterisk 1.8 以降では、上記の CDR テーブルのフィールドに加えて、下記フィールドも定義できます。

... 省略 ...
    `peeraccount` varchar(20) NOT NULL default '',
    `linkedid` varchar(32) NOT NULL default '',
    `sequence` int(11) NOT NULL default '0'
);
CREATE TABLE `sip_buddies` (
    `id` int(11) NOT NULL auto_increment,
    `name` varchar(80) NOT NULL default '',
    `host` varchar(31) NOT NULL default '',
    `nat` varchar(5) NOT NULL default 'no',
    `type` enum('user','peer','friend') NOT NULL default 'friend',
    `accountcode` varchar(20) default NULL,
    `amaflags` varchar(13) default NULL,
    `call-limit` smallint(5) unsigned default NULL,
    `callgroup` varchar(10) default NULL,
    `callerid` varchar(80) default NULL,
    `cancallforward` char(3) default 'yes',
    `canreinvite` char(3) default 'yes',
    `context` varchar(80) default NULL,
    `defaultip` varchar(15) default NULL,
    `dtmfmode` varchar(7) default NULL,
    `fromuser` varchar(80) default NULL,
    `fromdomain` varchar(80) default NULL,
    `insecure` varchar(4) default NULL,
    `language` char(2) default NULL,
    `mailbox` varchar(50) default NULL,
    `md5secret` varchar(80) default NULL,
    `deny` varchar(95) default NULL,
    `permit` varchar(95) default NULL,
    `mask` varchar(95) default NULL,
    `musiconhold` varchar(100) default NULL,
    `pickupgroup` varchar(10) default NULL,
    `qualify` char(3) default NULL,
    `regexten` varchar(80) default NULL,
    `restrictcid` char(3) default NULL,
    `rtptimeout` char(3) default NULL,
    `rtpholdtimeout` char(3) default NULL,
    `secret` varchar(80) default NULL,
    `setvar` varchar(100) default NULL,
    `disallow` varchar(100) default 'all',
    `allow` varchar(100) default 'g729;ilbc;gsm;ulaw;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',
    `lastms` int(11) NOT NULL default '0',
    `username` varchar(80) NOT NULL default '',
    `defaultuser` varchar(80) NOT NULL default '',
    `subscribecontext` varchar(80) default NULL,
    `useragent` varchar(20) default NULL,
    PRIMARY KEY (`id`),
    UNIQUE KEY `name` (`name`),
    KEY `name_2` (`name`)
) ENGINE=MyISAM ROW_FORMAT=DYNAMIC;
CREATE TABLE `extensions` (
    `id` int(11) NOT NULL auto_increment,
    `context` varchar(20) NOT NULL default '',
    `exten` varchar(20) NOT NULL default '',
    `priority` tinyint(4) NOT NULL default '0',
    `app` varchar(20) NOT NULL default '',
    `appdata` varchar(128) NOT NULL default '',
    PRIMARY KEY (`context`,`exten`,`priority`),
    KEY `id` (`id`)
) TYPE=MyISAM;

以上です。