![](https://habrastorage.org/getpro/habr/post_images/fe7/f4f/9c0/fe7f4f9c05f00d4888e049780e792583.png)
検索エンジンは、ヘッダーで行われたクエリにさまざまなユーティリティの膨大な量の結果を与えます。
Habrahabrに関する記事は見つかりませんでした。つまり、書く必要があるということです。
基礎として、 アスタリスクcdrビューアプロジェクトを採用しました。
彼はウェブインターフェースの言語を強力で「有声」に翻訳しました。 ブラウザで会話の録音ファイルを聞いたりダウンロードしたりする機能が追加されました。
フィルターフィールドの数は最小限に抑えられ、最も必要なものだけが残されます。
インストールのスクリーンショット、並べ替え、詳細な説明は、habrakatの下にあります。
UPDATE_2016
すぐに使える新しいインターフェース。
小さなビデオガイド:
詳細はこちら
Webインターフェースのスクリーンショット
ロゴと開発者への寄付へのリンクはそのまま残りました。
元のフィールドを表示する必要がある場合は、すべてのフィールドが翻訳されます。テンプレート/ form.tpl.phpでコメントを外してください。
![](https://habrastorage.org/getpro/habr/post_images/b48/4c0/16a/b484c016ade3871da4c7bbda3355fd8d.png)
そのため、フィルター検索結果が表示されます。
各会話は、Flash Playerを介してダウンロードまたは聞くことができます。
![](https://habrastorage.org/getpro/habr/post_images/349/84d/367/34984d36766cc1a503566d54ed85d3fc.png)
MySQLの調理
アスタリスクのCDRはMySQLデータベースに書き込まれる必要があります。これを構成する方法は、たとえばここで読むことができます;)。
cdr_mysql.confファイルの最後で、[columns]セクションに追加します
alias realdst => realdst alias filename => filename
会話録音ファイルの名前は、CDRテーブルのファイルフィールドに書き込まれます。
追加してください:
mysql -uroot -p -e "alter table `cdr` add column `filename` varchar(120) after `userfield`;" asterisk
ダイヤルプラン
extensions.aelを使用して、アスタリスクダイヤルプランを構成します。
extensions.ael
globals { WAV=/records/wav; // WAV MP3=/records/mp3; // mp3 RECORDING=1; // , 1 - . }; macro recording (calling,called) { if ("${RECORDING}" = "1"){ Set(fname=${UNIQUEID}-${STRFTIME(${EPOCH},,%Y-%m-%d-%H_%M)}-${calling}-${called}); Set(monopt=nice -n 19 /usr/bin/lame -b 32 --silent "${WAV}/${fname}.wav" "${MP3}/${fname}.mp3" && rm -f "${WAV}/${fname}.wav" && chmod o+r "${MP3}/${fname}.mp3"); Set(CDR(filename)=${fname}.mp3); Set(CDR(realdst)=${called}); MixMonitor(${WAV}/${fname}.wav,b,${monopt}); }; }; _XXXXXX => { &recording(${CALLERID(number)},${EXTEN}); Dial(SIP/rtk/${EXTEN}); Hangup(); }
グローバル変数は、ファイルへのパスを決定し、会話の記録を有効/無効にします。
記録マクロは、発信者の番号と、通話がパラメーターとして受け取る番号を受け取ります。 レコードがオンになっている場合、一時的なwavファイルが書き込まれ、mp3にトランスコードされ、ファイル名はMySQLのCDRネームプレートにドロップされます。
ファイル名は、uniqueid-date_time-from-from-from-call-to-callで構成されます。例:
1392597899.17572-2014-02-17-07_44-83843ZZZ-32ZZ.mp3
当日のmp3ファイルは/ records / mp3 /に追加されます
クローネのスクリプトは、毎晩、会話の録音を対応する日付フォルダーに配布します
1 0 * * * /root/sh/mvrecords.sh
#!/bin/bash PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin y=`date +%Y -d "-1 day"` ym=`date +%Y-%m -d "-1 day"` ymd=`date +%Y-%m-%d -d "-1 day"` mkdir -p /records/$y/$ym/$ymd/ mv /records/mp3/*$ymd* /records/mp3/$y/$ym/$ymd/
Webインターフェースファイルがあるフォルダーで、/ records / mp3 /フォルダーへのシンボリックリンクを作成する必要があります
/var/www# ls -l total 60 -rw-r--r-- 1 fessae fessae 182 Nov 19 2011 callrates.csv drwxr-xr-x 3 fessae fessae 4096 Sep 26 2012 contrib -rw-r--r-- 1 fessae fessae 1986 Dec 22 2012 download.php -rw-r--r-- 1 fessae fessae 246 Sep 6 2013 downloads.php drwxr-xr-x 4 fessae fessae 4096 Apr 15 20:48 include -rw-r--r-- 1 fessae fessae 30384 Dec 2 20:21 index.php lrwxrwxrwx 1 root root 13 Apr 15 20:48 records -> /records/mp3/ drwxr-xr-x 2 fessae fessae 4096 Feb 13 2013 style drwxr-xr-x 3 fessae fessae 4096 Feb 18 21:07 templates
フォルダー構造のスクリーンショット。
![](https://habrastorage.org/getpro/habr/post_images/f30/a74/dbb/f30a74dbbe10b446762b1c74377b0053.png)
![](https://habrastorage.org/getpro/habr/post_images/895/150/386/8951503864a7188c9d5c3fd4b74465ea.png)
![](https://habrastorage.org/getpro/habr/post_images/b78/639/552/b786395525a95ce945434ddd13a26230.png)
Php
include / functions.phpファイルには、「会話付きのファイルをダウンロード」ボタンと「ファイル」フィールドのフラッシュプレーヤーの出力のロジックが含まれています。
include / functions.phpの一部
$recorded_file = $row['filename']; $mycalldate = substr("$calldate",0,10); $mycalldate_ym = substr("$calldate",0,7); $mydate = date("Ymd"); if ($mycalldate<$mydate){ if (file_exists("records/$mycalldate_ym/$mycalldate/$recorded_file")) { echo " <td class=\"record_col\"><a href=\"downloads.php?audio=records/$mycalldate_ym/$mycalldate/$recorded_file\" title=\" \"><img src=\"templates/images/sound.png\"</a> <object type=\"application/x-shockwave-flash\" data=\"include/player_mp3_maxi.swf\" width=\"150\" height=\"20\"> <param movie=include/player_mp3_maxi.swf/> <param name=FlashVars value=mp3=records/$mycalldate_ym/$mycalldate/$recorded_file /> </td>\n"; } else {echo " <td class=\"record_col\"> </td>\n"; } } else { if (file_exists("records/$recorded_file")) { echo " <td class=\"record_col\"><a href=\"downloads.php?audio=records/$recorded_file\" title=\" \"><img src=\"templates/images/sound.png\"</a> <object type=\"application/x-shockwave-flash\" data=\"include/player_mp3_maxi.swf\" width=\"150\" height=\"20\"> <param movie=include/player_mp3_maxi.swf/> <param name=FlashVars value=mp3=records/$recorded_file /> </td>\n"; } else {echo " <td class=\"record_col\"> </td>\n";} } }
このコードは、会話録音ファイルを検索するフォルダーを決定します。
現在の日については、/ records / mp3を調べ、/ records / mp3 / YEAR-MONTH / YEAR-MONTH-DAY /の前のものを調べます
ファイルが見つからなかった場合、「ファイル」フィールドに「エントリなし」が表示されます。
また、
include/config.inc.php
MySQLへの接続の詳細を指定することを忘れないでください
カーテン
それだけです!
私の仕事が役に立つなら嬉しいです。
PS
並べ替えはリンク1と2で利用できます
UPD
Habrにアカウントがない場合は、フォーラム( sysadminz.ru/index.php?topic=6592.0)でサポートできます。
UPD 2
いくつかの方向での記録が無効になっている(つまり、ファイルが書き込まれず、データベースのファイル名フィールドが満たされていない)場合、小さなグリッチが検出され、ファイルが存在するかのようにフラッシュプレーヤーが表示されます。
修正するには、CDRテーブルを変更し、ファイル名フィールドのデフォルト値を設定する必要があります。
mysql -p mysql> alter table cdr alter filename set default 'none'; mysql> describe cdr; +-------------+-----------------+------+-----+---------------------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------------+-----------------+------+-----+---------------------+----------------+ | id | int(9) unsigned | NO | PRI | NULL | auto_increment | | calldate | datetime | NO | MUL | 0000-00-00 00:00:00 | | | clid | varchar(80) | NO | | | | | src | varchar(80) | NO | MUL | | | | dst | varchar(80) | NO | MUL | | | | dcontext | varchar(80) | NO | | | | | channel | varchar(80) | NO | | | | | dstchannel | varchar(80) | NO | | | | | lastapp | varchar(80) | NO | | | | | lastdata | varchar(80) | NO | | | | | duration | int(11) | NO | | 0 | | | billsec | int(11) | NO | | 0 | | | disposition | varchar(45) | NO | | | | | amaflags | int(11) | NO | | 0 | | | accountcode | varchar(20) | NO | MUL | | | | uniqueid | varchar(32) | NO | MUL | | | | userfield | varchar(255) | NO | | | | | filename | varchar(120) | YES | | none | | +-------------+-----------------+------+-----+---------------------+----------------+ 18 rows in set (0.00 sec) mysql> \q Bye
UPD 3(投稿ヘッダーから)
同志の利益(別名prog-it)がこのトピックを大幅に覆しました 。
スクリーンショット:
![画像](https://habrastorage.org/getpro/habr/post_images/9c1/55c/ab5/9c155cab5f904af257947eea85f7d505.jpg)
![画像](https://habrastorage.org/getpro/habr/post_images/7e1/08b/2fc/7e108b2fca888c1a37c3bfc20e9fbfc6.jpg)
![画像](https://habrastorage.org/getpro/habr/post_images/e85/f3a/02c/e85f3a02c3c472602992530c77d9a47d.jpg)
![画像](https://habrastorage.org/getpro/habr/post_images/089/503/31d/08950331d229c28044b37d9950885875.jpg)
機能:
主な機能
すべてロシアのインターフェース
更新されたデザイン
ツールチップ
レコードのCSVファイルへの正しいエクスポート
通話コストの正しい計算(プラグイン)
各通話のコストを表示する(プラグイン)
コストを正確に計算するために非課金間隔を指定する機能
追加を指定する機能。 関税。 たとえば、最初の1分間のコストは1摩擦です。その後、10コペックです。 (追加料金)
通話録音ファイルの名前はデータベースに保存されます
Webインターフェイス経由で通話録音を聞く機能
電話番号をクリックして、その情報を取得できます
コールをリッスンするプレーヤーはjavascriptを介してロードされるため、速度が低下することはありません
通話記録がアーカイブされている場合、記録をダウンロードするように求められます
FAXを受信した場合は、ダウンロードすることもできます。
ダウンロードするファイルは、再開する機能を持つスクリプトによって提供されます
レコードを保存するフォルダーは、サーバーの任意のディレクトリに配置できます
その他多数...
リンク-prog-it.github.io/Asterisk-CDR-Viewer-Mod