IP PBXアスタリスクの統計とコールリスニングの新しいWebベースのインターフェイス

統計のWebベースのインターフェイスを作成し、IP PBXアスタリスクの呼び出しを聞くというアイデアは、数年の間を離れませんでした。 インターネットで見つかった解決策は、いずれかの基準に適合していませんでした。機能が不足している場所もあれば、まったく気に入らないものもありました。



そして今、テクノロジーのスタックで武装し、 ServerClubが提供する戦争馬にまたがりました。



私の旅の結果、チャート、グラフ、ダウンロードして通話を聞く機能を備えた新しいインターフェースができました。 私は言葉でこれ以上あなたを退屈させません、ここにいくつかのスクリーンショットがあります:







そして、カットの下には、インターフェースに関するビデオガイド、必要な設定、利用可能なすべての機能の詳細な説明があります。



インターフェース



投稿がスクリーンショットのシートのように見えないように、インターフェイスをよく理解できる小さなスライドショーを作成しました。







説明 準備ができている、計画。



現在、次の機能が実装されています。



着信コール:





発信通話:





*発信レポートは、世界への呼び出し、つまり 従業員間の内部通話は考慮されません



いくつかの設定も使用できます。アスタリスクがキューを使用するかどうかと、サーバー上の会話記録ファイルへのパスが示されます。

*設定には実装されていますが、まだインターフェースには実装されていません



近い将来に追加します。





アスタリスク 設定



説明されているインターフェイスを使用するには、Asteriskバージョン1.8以降が必要です。 MySQLデータベースでcdr、cel、およびqueue_logテーブルを維持するようにPBXを構成する必要があります。 まだ行っていない場合は、その方法を説明します。



また、会話レコードの保存を整理するためにアスタリスクダイヤルプランを設定する例を示します。



MySQLで動作するようにアスタリスクを構成する
1.必要なパッケージをインストールします(たとえば、Debian / Ubuntuに)

aptitude install unixodbc-dev libmyodbc
      
      





2.アスタリスクは、次のオプションでコンパイルする必要があります





3.次に、いくつかの設定ファイルを編集します

odbcコネクタが固まらない場合の小さなヒント
何らかの理由でコネクタが固執しなくなり、アスターが地殻に落ちたシステムの1つでバグを見つけました。



コアは「アスタリスク-cvvvvvvvvgd」によって生成されました。



プログラムはシグナル8、算術例外で終了しました。



#0 0x00007ff4cc77a61b in sqlchar_as_sqlwchar()from /usr/lib/x86_64-linux-gnu/odbc/libmyodbc.so



MySQLサイト-dev.mysql.com/downloads/file/?id=461779から最新バージョンをダウンロードすることにしました



/ usr / lib / x86_64-linux-gnu / odbc /に解凍されたライブラリ



構成を少し調整しました



/etc/odbcinst.ini







 [MySQL] Descripti driver Driver = /usr/lib/x86_64-linux-gnu/odbc/libmyodbc5w.so Setup = /usr/lib/x86_64-linux-gnu/odbc/libodbcmy5S.so CPTimeout = CPReuse =
      
      







/etc/asterisk/res_odbc.conf







 [asterisk] enabled => yes dsn => MySQL-asterisk username => asterisk_user password => 232d2edxse3e
      
      





cdr_adaptive_odbc.conf







 [cdr_adaptive_connection] connection=asterisk table=cdr alias start => calldate # ,     ,   ,      #alias dst => does_not_exist #alias realdst => dst
      
      





/etc/odbc.ini







 [MySQL-asterisk] Description = MySQL Asterisk database ;Trace = Off ;TraceFile = stderr Driver = MySQL Server = localhost User = asterisk_user Password = 232d2edxse3e ;Port = 3306 Socket = /var/run/mysqld/mysqld.sock Database = asterisk Charset = utf8
      
      





/etc/odbcinst.ini







 [MySQL] Description = MySQL driver Driver = /usr/lib/odbc/libmyodbc.so Setup = /usr/lib/odbc/libodbcmyS.so CPTimeout = CPReuse =
      
      





* x64の場合

 [MySQL] Description = MySQL driver Driver = /usr/lib/x86_64-linux-gnu/odbc/libmyodbc.so Setup = /usr/lib/x86_64-linux-gnu/odbc/libodbcmyS.so CPTimeout = CPReuse =
      
      





最後に

cdr_mysql.conf







加える

 alias filename => filename
      
      





4. MYSQLでデータベースとcdrテーブルを作成する

 mysql> create database asterisk; mysql> use asterisk; mysql> CREATE TABLE `cdr` ( `id` int(9) unsigned NOT NULL AUTO_INCREMENT, `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 '', `filename` varchar(255) NOT NULL DEFAULT '', PRIMARY KEY (`id`), KEY `calldate` (`calldate`), KEY `accountcode` (`accountcode`), KEY `uniqueid` (`uniqueid`), KEY `dst` (`dst`), KEY `src` (`src`) ) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8; mysql> grant all on asterisk.* to 'asterisk_user'@'localhost' identified by '232d2edxse3e';
      
      





5.テーブルセル

 mysql>CREATE TABLE `cel` ( `id` int(11) NOT NULL AUTO_INCREMENT, `eventtype` varchar(30) NOT NULL, `eventtime` datetime NOT NULL, `cid_name` varchar(80) NOT NULL, `cid_num` varchar(80) NOT NULL, `cid_ani` varchar(80) NOT NULL, `cid_rdnis` varchar(80) NOT NULL, `cid_dnid` varchar(80) NOT NULL, `exten` varchar(80) NOT NULL, `context` varchar(80) NOT NULL, `channame` varchar(80) NOT NULL, `src` varchar(80) DEFAULT NULL, `dst` varchar(80) DEFAULT NULL, `channel` varchar(80) DEFAULT NULL, `dstchannel` varchar(80) DEFAULT NULL, `appname` varchar(80) NOT NULL, `appdata` varchar(80) NOT NULL, `amaflags` int(11) NOT NULL, `accountcode` varchar(20) NOT NULL, `uniqueid` varchar(32) NOT NULL, `linkedid` varchar(32) NOT NULL, `peer` varchar(80) NOT NULL, `userdeftype` varchar(255) NOT NULL, `eventextra` varchar(255) DEFAULT NULL, `userfield` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`), KEY `uniqueid_index` (`uniqueid`), KEY `linkedid_index` (`linkedid`), KEY `eventtime` (`eventtime`), KEY `exten` (`exten`), KEY `eventtype` (`eventtype`) ) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;
      
      





6.ここで、queue_logラベルを作成します

 mysql> CREATE TABLE IF NOT EXISTS `queue_log` ( id int(10) UNSIGNED NOT NULL AUTO_INCREMENT, time timestamp NULL DEFAULT '0000-00-00 00:00:00', callid varchar(32) NOT NULL default '', queuename varchar(32) NOT NULL default '', agent varchar(32) NOT NULL default '', event varchar(32) NOT NULL default '', data1 varchar(100) NOT NULL default '', data2 varchar(100) NOT NULL default '', data3 varchar(100) NOT NULL default '', data4 varchar(100) NOT NULL default '', data5 varchar(100) NOT NULL default '', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; mysql> \q Bye
      
      





6. /etc/asterisk/extconfig.conf





/etc/asterisk/extconfig.conf





/etc/asterisk/extconfig.conf









 queue_log => odbc,asterisk
      
      





7.アスタリスクを再起動し、接続を確認します

 *CLI> odbc show asterisk ODBC DSN Settings ----------------- Name: asterisk DSN: MySQL-asterisk Last connection attempt: 1970-01-01 07:00:00 Pooled: No Connected: Yes
      
      





8.データがデータベースにあるかどうかを呼び出して確認する価値もあります



Dialog Asterisk-/etc/asterisk/extensions.aelからの抜粋
 globals { WAV=/var/calls; //   WAV MP3=/var/calls; //  mp3  RECORDING=1; // , 1 - . }; macro recording (calling,called) { if ("${RECORDING}" = "1"){ Set(fname=${UNIQUEID}-${STRFTIME(${EPOCH},,%Y-%m-%d-%H_%M)}-${calling}-${called}); Set(datedir=${STRFTIME(${EPOCH},,%Y/%m/%d)}); System(mkdir -p ${MP3}/${datedir}); System(mkdir -p ${WAV}/${datedir}); Set(monopt=nice -n 19 /usr/bin/lame -b 32 --silent "${WAV}/${datedir}/${fname}.wav" "${MP3}/${datedir}/${fname}.mp3" && rm -f "${WAV}/${fname}.wav" && chmod o+r "${MP3}/${datedir}/${fname}.mp3"); Set(CDR(filename)=${fname}.mp3); Set(CDR(recordingfile)=${fname}.wav); Set(CDR(realdst)=${called}); MixMonitor(${WAV}/${datedir}/${fname}.wav,b,${monopt}); }; }; _XXXXXX => { &recording(${CALLERID(number)},${EXTEN}); Dial(SIP/83843${EXTEN}@multifon,180,tT); HangUP(); } // end of _XXXXXX
      
      







会話ファイルはすぐに行きます

/var/calls







次の階層があります

 ls /var/calls/2016/ -l total 24 drwxr-xr-x 19 asterisk asterisk 4096 May 31 10:10 05 drwxr-xr-x 30 asterisk asterisk 4096 Jun 30 10:02 06 drwxr-xr-x 31 asterisk asterisk 4096 Jul 31 10:18 07 drwxr-xr-x 31 asterisk asterisk 4096 Aug 31 09:00 08 drwxr-xr-x 26 asterisk asterisk 4096 Sep 26 09:51 09
      
      







アスタリスク 統計インターフェースへの接続



いくつかの疑問を払拭するか、いくつかの推測を確認する時が来ました。 はい-現在、サービスはSAASモデルに従って提供されています。 クライアントをPBXにインストールして、データベースとコールレコードを同期します。



登録後(詳細に停止する価値はないと思います-すべては通常通りです)、 stat.vistep.ruの個人アカウントに移動し、設定に移動して、記録ファイルへのパスを指定し、[保存]をクリックする必要があります。 その後、クライアントスクリプトをダウンロードするためのリンクが利用可能になります。



スクリプトをインストールするには、次の手順を実行する必要があります。



1.まだインストールされていない場合、サーバーにnodejs



npm



パッケージマネージャーをインストールします( yum



またはapt/aptitude/apt-get







2. pm2



をインストールします



 npm install -g pm2
      
      





3. /opt/stat.vistep.ru



フォルダーを作成して移動します



 mkdir /opt/stat.vistep.ru cd /opt/stat.vistep.ru
      
      





4.前の手順で作成したフォルダーにスクリプトと一緒にアーカイブを配置し、解凍します



 unzip skript_name.zip
      
      





5.行393〜397(および398-正規表現に精通している場合はオプション)を変更して、スクリプトを編集します



 "dbhost":"localhost", "dbuser":"asterisk_user", "dbpassword":"232w2edxse3e", "db":"asterisk", "timezone":"Asia/Novokuznetsk", // <---   "fileMask": /\.*/ //
      
      





6.スクリプトを実行して実行します:



 pm2 start stat.vistep.ru.js --name "ViStep.RU stat"
      
      





7. OSとの同期スクリプトの自動開始/停止を構成します。



 pm2 startup ubuntu # centos, gentoo pm2 save
      
      





設定はこれですべてです。 データが統計サーバーにダウンロードされるのを待って、それを使用し始めます!



利用規約



現在、製品Stat.ViStep.RUで協力するための2つのオプションを提供しています。



-永続的に使用するためのローカルバージョン

すべてのアップデートは追加料金なしで利用できます。



- クラウドバージョン

更新は月額料金に含まれています。



製品のインストール/構成の支援は、どちらのバージョンでも無料です。



あなたはsales@vistep.ruで私達に書くことによってすべての詳細を見つけることができます



おわりに



旅とその結果についての私の話は終わりました。 しかし、物語そのものであり、旅そのものではありません-始まったばかりです。 もっと多くの成果、魅力的な道、道、興味深いクエストが待っていると信じています。



アスタリスクの設定に関するヘルプについては、support @ vistep.ruまでご連絡ください。

質問が協力、サービスの提供条件、またはその他の機会に関するものである場合、sales @ vistep.ruへの手紙を待っています



また、私の連絡先はすべてプロファイルに含まれています。もちろん、コメントでご質問にお答えいたします。



デモアクセス:

support@vistep.ru

0jnoiLJNFDr4-3r2f4


simの場合は終了します。 ご清聴ありがとうございました!



All Articles