通話記録を聞くためのWebインターフェイスアスタリスク



検索エンジンは、ヘッダーで行われたクエリにさまざまなユーティリティの膨大な量の結果を与えます。

Habrahabrに関する記事は見つかりませんでした。つまり、書く必要があるということです。

基礎として、 アスタリスクcdrビューアプロジェクトを採用しました。

彼はウェブインターフェースの言語を強力で「有声」に翻訳しました。 ブラウザで会話の録音ファイルを聞いたりダウンロードしたりする機能が追加されました。

フィルターフィールドの数は最小限に抑えられ、最も必要なものだけが残されます。

インストールのスクリーンショット、並べ替え、詳細な説明は、habrakatの下にあります。



UPDATE_2016

すぐに使える新しいインターフェース。

小さなビデオガイド:



詳細はこちら





Webインターフェースのスクリーンショット


ロゴと開発者への寄付へのリンクはそのまま残りました。

元のフィールドを表示する必要がある場合は、すべてのフィールドが翻訳されます。テンプレート/ form.tpl.phpでコメントを外してください。





そのため、フィルター検索結果が表示されます。

各会話は、Flash Playerを介してダウンロードまたは聞くことができます。





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
      
      





フォルダー構造のスクリーンショット。









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

並べ替えはリンク12で利用できます



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)がこのトピックを大幅に覆しました

スクリーンショット:

画像

画像

画像

画像



機能:

主な機能

すべてロシアのインターフェース

更新されたデザイン

ツールチップ

レコードのCSVファイルへの正しいエクスポート

通話コストの正しい計算(プラグイン)

各通話のコストを表示する(プラグイン)

コストを正確に計算するために非課金間隔を指定する機能

追加を指定する機能。 関税。 たとえば、最初の1分間のコストは1摩擦です。その後、10コペックです。 (追加料金)

通話録音ファイルの名前はデータベースに保存されます

Webインターフェイス経由で通話録音を聞く機能

電話番号をクリックして、その情報を取得できます

コールをリッスンするプレーヤーはjavascriptを介してロードされるため、速度が低下することはありません

通話記録がアーカイブされている場合、記録をダウンロードするように求められます

FAXを受信した場合は、ダウンロードすることもできます。

ダウンロードするファイルは、再開する機能を持つスクリプトによって提供されます

レコードを保存するフォルダーは、サーバーの任意のディレクトリに配置できます

その他多数...




リンク-prog-it.github.io/Asterisk-CDR-Viewer-Mod



All Articles