Asterisk+MySQLのソースを表示
←
Asterisk+MySQL
移動先:
案内
、
検索
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、以下のグループのいずれかに属する利用者のみが実行できます:
登録利用者
、
管理者
。
このページは編集や他の操作ができないように保護されています。
このページのソースの閲覧やコピーができます。
AsteriskとMySQLを連動させる設定など。<br> MySQLのインストール方法は探せばいくらでもあります。CentOSならばyum install mysql mysql-serverを行えば入ります。<br> MySQLの管理はちゃんと行っておきましょう。rootパスワードの設定もお忘れなく。<br> なお、Addonsモジュールをコンパイルするにはmysql-develも必要なので、yum install mysql-develも行っておきます。<br> ==CDR== 通話記録をデータベース管理したいという要望は多いはずです。MySQLと連動させるために、まずはこの部分を設定してみます。<br> Asterisk-addonsを入手し、コンパイルします。./configure、make menuselectを実行し、Call Deteil Recordingで以下のようにcdr_addon_mysqlが選択可能になっていることを確認します。もし、なっていなければmysql-develの入れ忘れです。 **************************************** Asterisk-addons Module Selection **************************************** Press 'h' for help. 1. Applications ---> 2. Call Detail Recording 3. Channel Drivers 4. Format Interpreters 5. Resource Modules **************************************** Asterisk-addons Module Selection **************************************** Press 'h' for help. [*] 1. cdr_addon_mysql ChannelのH.323はコンパイルに時間がかかるので、要らなければmenuselectで外しておいてください。<br> あとはmake、make installするだけです。make samplesを実行するとサンプルの設定ファイルが入りますが、ここでは使いませんので行わなくてもかまいません。<br> ===データベースを作る=== まずDBを作ります。ここでは'asterisk'という名前にします。<br> mysqlフロントエンドを起動し、以下のようにDBを作り、ユーザ'astuser'に全てのアクセス権を与えることにします。この際のパスワードは'asterpass'にしてみます。<br> # mysql -u root -p Enter password:<パスワード> Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 3 Server version: 5.0.45 Source distribution Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> create database asterisk; Query OK, 1 row affected (0.00 sec) mysql> grant all privileges on asterisk.* to astuser@localhost identified by 'asterpass'; Query OK, 0 rows affected (0.00 sec) 次にテーブルを作成します。テーブルのスキーマはAddonsを展開したディレクトリの下、docsの下にあるcdr_mysql.txtに入っていますが、面倒なので以下をコピー&ペーストしてmysqlに流し込めばよいでしょう。<br> use asterisk; 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 '', uniqueid varchar(32) NOT NULL default '', userfield varchar(255) NOT NULL default '' ); quit これでDBの準備は完了です。<br> 注:AsteriskはCDRを吐き出すだけなので、GRANT ALLではなくGRANT INSERT to asterisk.cdrだけにしてもかまいません。 ===cdr_addon_mysqを設定する=== 以下を参考に、/etc/asteriskに cdr_mysql.conf という名前でファイルを作成します。 [global] hostname=localhost dbname=asterisk <--上で作成したDB名 table=cdr <--上で作成したテーブル名 password=asterpass <--上で設定したDBユーザのパスワード user=astuser <--上で設定したDBユーザ名 port=3306 sock=/var/lib/mysql/mysql.so 設定が終わったらAsteriskを再起動するか、module load cdr_addon_mysql.so を実行します。これで通話記録はDBに保存されるようになります。 ===動作を確認してみる=== 正しく設定されていればCDRはデータベースに記録されますので、適当に内線にでも電話してみます。MySQLで確認するとCDRが取れていることがわかるはずです。 # mysql -u root -p Password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 8 Server version: 5.0.45 Source distribution Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> use asterisk; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> select * from cdr; +---------------------+-------------+-----+-----+----------+------------------+- -----------+---------+----------+----------+---------+-------------+----------+- ------------+----------+-----------+ | calldate | clid | src | dst | dcontext | channel | dstchannel | lastapp | lastdata | duration | billsec | disposition | amaflags | accountcode | uniqueid | userfield | +---------------------+-------------+-----+-----+----------+------------------+- -----------+---------+----------+----------+---------+-------------+----------+- ------------+----------+-----------+ | 2009-02-19 09:29:55 | "201" <201> | 201 | 300 | default | SIP/201-082e04c8 | | MeetMe | 300|M | 20 | 20 | ANSWERED | 3 | | | | +---------------------+-------------+-----+-----+----------+------------------+- -----------+---------+----------+----------+---------+-------------+----------+- ------------+----------+-----------+ 1 row in set (0.00 sec) mysql> あとはphpMyAdminを使うなり、自分で書いたプログラムで処理するなりすれば通話記録が様々な用途に使えます。データベース管理されているので便利になることでしょう。<br> なお当然ですが、適切な設定をすればAsteriskサーバとDBサーバは別なマシンでもかまいません。<br> ==extensions.conf== Addonsを入れるとapp_addon_sql_mysqlも入れることができます。これを使うと何とextenからSQL文が叩けるようになります。 exten => XXXX,1,MYSQL(Connect conid localhost asterisk DBユーザ DBパスワード) exten => XXXX,n,NoOp(${conid}) exten => XXXX,n,MYSQL(Query resultid ${conid} SELECT\ なんとか\ from\ かんとか\ where\ なんちゃら=${EXTEN}); exten => XXXX,n,MYSQL(Fetch fetchid ${resultid} TARGETEXTEN) exten => XXXX,n,NoOp(${resultid}) exten => XXXX,n,NoOp(${fetchid}) exten => XXXX,n,NoOp(${TARGETEXTEN}) exten => XXXX,n,MYSQL(Disconnect ${conid}) バックスラッシュ(\)はスペースをクォートするために必要です。<br> まずConnectでDBに接続します。接続すると識別子がconidに入ります。<br> 次にこのconidを使って、QueryでSELECTを発行します。この記述方法はSQL文そのものです。結果を取得するには、resultidを使ってFetchで行います。この例では「かんとか」テーブルから「なんとか」を探し、その際の条件が「なんちゃら」がEXTEN、つまりダイヤルされた4桁の番号をDBで検索します。<br> 用事がすんだらDisconnectで切断します。<br>
Asterisk+MySQL
に戻る。
案内メニュー
個人用ツール
アカウント作成
ログイン
名前空間
ページ
議論
変種
表示
閲覧
ソースを表示
履歴表示
その他
検索
VoIp-Info.jp
案内
メインページ
最近の更新
全ページ
おまかせ表示
ヘルプ
要望
広告
サイトコンテンツ
コミュニティ
Asterisk
Asterisk 18
Asterisk 20
Asterisk 22
IP電話機
購入情報
便利ツール
導入事例
回線接続
ベンダー
ひかり電話
セキュリティ
イベント情報
スペシャル
Asterisk pjsip
ABS
黒電話 ハック
ユーザ登録
ログイン/登録
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報