Asterisk:CDR(Call Detail Records)を利用したレポート
サイオンコミュニケーションズ株式会社
山入端寛謹
1. はじめに
第10回「AsteriskでVoIPを体験しよう!!!」で、大まかではありますが、
Asteriskのインストールをはじめ、SIPの設定までを紹介いたしました。
皆さんも参考にして通話を試していただけましたでしょうか?
今回は、Asteriskの通話をレポートに表示するところまでを紹介します。
2.通話レポートとは
コール状況をデータベースに格納し、それを表示します。
入電数や放棄数、または平均通話時間当を表示する事ができます。
期間(日付)を指定したり、内線番号やエージェント(オペレータ)単位
でも表示する事が可能で、コールセンター等では必要不可欠な機能となっています。
3.CDRの紹介
Asteriskでは、CDR(Call Detail Records)機能を利用する事により、
外部データベースへ通話情報を登録することが出来ます。
CDRで使用できるデータベースは人気の高いMySQLやPostgresSQL、です。
今回はMySQLを使用します。
4.MySQLのインストールと設定
今回はCDRでMySQLを使用するため、インストールする必要があります。
但し、外部MySQLサーバが既に存在し、それを使用できる環境があれば
必要ありませんが、MySQLサーバへ接続するクライアントモジュールは
インストールする必要があるでしょう。
(1)インストール
MySQLは、おそらくどのLinuxディストリビューションでも
バイナリーパッケージが用意されていますので、そちらを利用するのが良いでしょう。
下記はemerge(Gentoo Linux)を利用したMySQLのインストールです。
●emergeを利用したMySQLのインストール
| #emerge mysql[ENTER] |
(2)設定
まずMySQLを起動します。
●MySQLの起動
| //MySQLの起動 #/etc/init.d/mysql start[ENTER] |
次に、MySQLで使用するユーザを登録します。
●MySQLユーザの設定
| //MySQLへログイン #mysql -u root[ENTER] //ユーザrootのパスワードの設定(ここではpasswd) localhostのみ接続許可 mysql> set password for root@localhost=password(’passwd’); //MySQL一般ユーザ(Asteriskで使用するユーザ)の登録 //ユーザ名:asterisk パスワード:passwd localhostからのみ接続許可 mysql> grant all on *.* to asterisk@localhost identified by ‘passwd’[ENTER] mysql> quit[ENTER] |
(3)データベースの登録
次にCDRで使用するデータベースをMySQLに登録します。データベース名は任意ですが、
ここでは、「asterisk」という名前にします。
| //MySQLへログイン #mysql -u asterisk -p[ENTER] Enter password:←パスワードを入力しENTER データベース「asterisk」を作成 mysql> create database asterisk[ENTER] mysql> quit[ENTER] |
データベース「asterisk」へ以下のテーブルを登録します。
■CDR用テーブル
| 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 INDEX ( `calldate` ); ALTER TABLE `cdr` ADD INDEX ( `dst` ); ALTER TABLE `cdr` ADD INDEX ( `accountcode` ); |
上記をMySQLに接続して、直接入力するのは面倒です。
よって、上記SQL文をテキストファイル「cdr.sql」として保存し、MySQLサーバに
読み込ませます。
●CDR用テーブルの登録
| //ユーザasteriskでテーブルを登録 #mysql -u asterisk -p asterisk < cdr.sql[ENTER] Enter password: ←パスワードを入力しENTER |
上記設定で、データベース「asterisk」へCDR用のテーブルが登録されました。
5.CDRのインストールと設定
(1)インストール
CDRはモジュールとして提供されており、別途インストールする必要があります。
Asterisk.org( http://www.asterisk.org )から
Asterisk-Addonsとして提供されています。
前回も紹介しましたが、Gentoo Linuxではemergeコマンドでインストール出来ます。
Asteriskが未インストールであれば、USEフラグを使用する事により、
モジュールも含めてAsteriskと一緒にインストールしてくれます。
●Asteriskのインストール
| //最新のportageツリーを取得 #emerge sync[ENTER] //Asteriskインストール(cdr_addon_mysql込)をインストール #USE=”mysql” emerge asterisk[ENTER] |
既にインストールされている方は、ソースからインストールするか、
rpmやdebパッケージを利用しているのであれば、apt-get等を利用して
コンパイル済みのモジュールを利用するのが良いでしょう。
モジュールは/usr/lib/asterisk/modules/にcdr_addon_mysql.soとしてインストールされます。
●モジュールの確認
| #find /usr/lib/asterisk/modules/ -name ‘cdr_addon_mysql.so’[ENTER] /usr/lib/asterisk_1.2.1/modules/cdr_addon_mysql.so |
(2)設定
MySQLを利用したCDRの設定は、/etc/asterisk/にあるcdr_mysql.confで行います。
■/etc/asterisk/cdr_mysql.conf
| [global] hostname=127.0.0.1 //接続先を指定 dbname=asterisk //データベース名を指定 password=passwd //ユーザパスワードを指定 user=asterisk //MySQLユーザ名の指定 |
上記設定後、Asteriskを再起動します。
●Asteriskの再起動
| #/etc/init.d/asterisk restart[ENTER] |
6.動作確認
実際に通話をし、データベースに通話情報が登録されているか確認します。
●通話データが正しく登録されている事を確認(MySQL Control Center)

通話日時や、内線番号が登録されているのが確認できます。
7.Asterisk Stat!の導入
AsteriskサーバでCDRを利用して、MySQLサーバへ通話情報を登録は可能になりましたが、
直接データベースの中身を閲覧するのではなく、データをキレイに加工し、統計情報や
グラフも出したいものです。ここでは「Asterisk Stat! (
http://www.areski.net/asterisk-stat-v2/about.php)」をご紹介します。
「Asterisk Stat!」はPHP言語で作成された、AsteriskのCDRに対応したWebベースのレポートツールです。
Apache+PHPの知識があれば、誰でも簡単に利用する事が出来ますので、是非インストールをお勧めします。
(1)Astarisk Stat!のインストール
AsteriskStat!を本家サイトからダウンロードし、展開します。
展開先は自由ですが、今回は/home/web/asteriskstatにしました。
(2)Apache+PHPのインストール
Asterisk Stat!はPHPで作成されたWebベースなツールなため、Apache、及びPHPのインストールは必須です。
Asteriskサーバが稼動しているマシンへインストールしても良いですが、
負荷等を気にするようなら他のマシンへインストールするのをお勧め致します。
また、ここでは、Apache、及びPHPのインストールの紹介は省略いたします。
詳しくは書籍やWebの情報を参考にして下さい。
(3)各種設定
まずは、ApacheのDocumentRoot、及びDirectoryIndexを設定します。
DocumentRootには、Asterisk Stat!を展開したディレクトリを指定し、
DirectoryIndexは、Asterisk Stat!のメインページである、cdr.phpを設定します。
■/etc/apache/conf/httpd.conf
※ディストリビューションやそのバージョンの環境に依存します。
| DocumentRoot /home/web/asteriskstat/ ←Asterisk Stat!のディレクトリを指定 ————— 省略 —————– DirectoryIndex cdr.php, index.php, index.html ←cdr.phpを追加 |
変更後、Apacheを再起動します。
●Apacheの再起動
| #/etc/init.d/apache restart[ENTER] |
次に、Asterisk Stat!の設定をします。
Asterisk Stat!のディレクトリのlib/define.phpを下記のように編集します。
■/home/web/asterisk/lib/define.php
| define (”WEBROOT”, “http://192.168.2.132/”); //Asterisk Stat!のURLを指定 define (”FSROOT”, “/home/web/asterisk/”); //Asterisk Stat!本体のパスを指定 define (”LIBDIR”, FSROOT.”lib/”); //ディレクトリlibの場所を指定(デフォルト) define (”HOST”, “localhost”); //MySQLサーバ名(又はIPアドレスを指定) define (”PORT”, “5432″); //MySQLサーバのポート番号を指定(デフォルト) define (”USER”, “asterisk”); //MySQLユーザ名の指定 define (”PASS”, “passwd”); //MySQLユーザパスワードの指定 define (”DBNAME”, “asterisk”); //データベース名を指定 define (”DB_TYPE”, “mysql”); //使用するデータベースの指定(mysql or postgres) define (”DB_TABLENAME”, “cdr”); //テーブル名を指定(デフォルト) |
(4)動作確認
ブラウザでAsterisk Stat!を表示してみましょう。
●Asterisk Stat!の画面(INTRO) ※トップページ

●Asterisk Stat!の画面(CDR REPORT)

「CDR REPORT」では、日付(期間)の指定や、発信元や受信先の内線番号や通話結果(Disposition)が一覧で表示させる事が出来ます。
●Asterisk Stat!の画面(CALLS COMPARE)

「CALLS COMPARE」では、時間帯別の通話件数や通話時間を棒グラフ化することが可能です。
どの時間帯が最も通話数が多いかが一目で分かります。また、合計件数も表示されますので、
簡易的なコールセンターのレポートとしても使えそうです。
●Asterisk Stat!の画面(MONTHLY TRAFFIC)

「MONTHLY TRAFFIC」では、トラフィック状況を円グラフで表示します。
過去6ヶ月までのトラフィックを比較する事ができます。月別の合計通話時間も表示されます。
8.終りに
かなり説明を省略して紹介してきましたが、いかがでしたでしょうか?
レポートを利用する事で、様々な統計を取る事ができます。
また、Asterisk Stat!以外にもレポートツールがあるはずですので、
そちらを試してみるのもいいでしょう。開発が得意な方であればオリジナルのレポートツールを開発し、是非日本語対応で公開してほしいものです。























