匿名

差分

Asterisk+PostgreSQL

2,026 バイト追加, 2017年11月18日 (土) 17:50
Asterisk+PostgreSQL」を保護しました ([編集=管理者のみ許可] (無期限) [移動=管理者のみ許可] (無期限))
<br>
AsteriskとPostgreSQLを連動させる設定など。<br>
PostgreSQLのインストール方法は探せばいくらでもあります。CentOSならばyum install postgresql postgresql-server php-pgsql postgresql-develを行えば入ります。<br>
まずDBを作ります。ここでは'asterisk'という名前にします。<br>
# createdb asterisk
psqlフロントエンドを起動し、以下のようにユーザ'astuser'に全てのアクセス権を与えることにします。この際のパスワードは'asterpass'にしてみます。<br>
asterisk=# CREATE USER astusr WITH PASSWORD 'asterpass';
テーブルを作成します。CDRというテーブルを以下の内容で作ります。このスキーマはasteriskのソースのdoc/cdrdriver.txtに書かれています。
CREATE TABLE cdr (
calldate time NOT NULL ,
clid varchar (80) NOT NULL ,
src varchar (80) NOT NULL ,
userfield varchar (255) NOT NULL
);
ユーザ'astuser'を作ります。パスワードは'asterpass'と指定したものとして後の設定を説明します。
# createuser -P astusr
psqlでastusrに対し権限を与えます。
asterisk=# GRANT ALL on CDR to astusr;
注:AsteriskはCDRを吐き出すだけなので、GRANT ALLではなくGRANT INSERTだけでもかまいません。
 
===cdr_pgsql.confを設定する===
/etc/asterisk/cdr_pgsql.conf を以下のような内容で作ります。当然ですが、ユーザ名とパスワードはPostgreSQLに設定したものです。
[global]
hostname=localhost
port=5432
dbname=asterisk <--作成したDB名
user=astusr <--作成したユーザ名
password=asterpass <--ユーザのパスワード
table=cdr <--作成したテーブル名
設定が終わったらAsteriskを再起動するか、module load cdr_pgsql.so を実行します。これで通話記録はDBに保存されるようになります。 すでにモジュールが読み込まれていた場合は一旦、unloadしてからloadします。
===動作を確認してみる===
正しく設定されていればCDRはデータベースに記録されますので、適当に内線にでも電話してみます。psqlで確認するとCDRが取れていることがわかるはずです。
$ psql asterisk
Welcome to psql 8.1.11, the PostgreSQL interactive terminal.
Type: \copyright for distribution terms
\h for help with SQL commands
\? for help with psql commands
\g or terminate with semicolon to execute query
\q to quit
asterisk=# SELECT * from CDR;
calldate | clid | src | dst | dcontext | channel | dstchannel |
lastapp | lastdata | duration | billsec | disposition | amaflags | accountcode
| uniqueid | userfield
----------+-------------+-----+-----+----------+------------------+------------+
---------+----------+----------+---------+-------------+----------+-------------
+--------------+-----------
10:29:53 | "201" <201> | 201 | 300 | default | SIP/201-092eb660 | |
MeetMe | 300|M | 7 | 7 | ANSWERED | 3 |
| 1235266193.0 |
(1 row)
===PGSQL===
PGSQL()が1.4では行方不明です。誰か知りませんか??