5

PHP とアスタリスク サーバーを使用してアプリケーションを開発しています。アプリケーションの機能の 1 つは、特定の発信者 ID の通話ステータス (呼び出し中、応答済み、ハングなど) をチェックすることです。ソケットとコマンドステータスですが、それを行うにはより良い方法でなければならないと思います。

前もって感謝します。

4

4 に答える 4

4

このプログラムを作成するためにどの API を使用していますか? あみ?アギ?高速AGI? デッドアギ?ファイルを呼び出しますか?この情報を取得する方法はたくさんあります。

: 通話ファイルや CDR アクセスを使用していない限り、チャネルがハングアップしたかどうかはわかりません。

AMI では、Status コマンドを使用できます (ここに文書化されています: http://www.voip-info.org/wiki/view/Asterisk+Manager+API+Action+Status )。

AGI を使用すると、プログラムによって決定されるステータスを知ることができます。まだ AGI スクリプトを使用している場合、呼び出しはまだ進行中であり、既に応答されています。

呼び出しファイルを使用していて、アーカイブ属性が「yes」に設定されている場合、呼び出しが完了したら、outoing_done ディレクトリ (通常は /var/lib/asterisk/outgoing_done/) で呼び出しファイルを確認できます。呼び出しファイルを読むと、アスタリスクが呼び出しファイルの末尾にステータスを追加していることに気付くでしょう。これは、呼び出しの最終ステータスを示しています。

この情報を取得する最良の方法は、 Asteriskサーバーの CDR レコードから PHP スクリプトを読み取ることです。CDR レコードを MySQL データベースに記録し、データベースから呼び出しのレコードを取得します。

于 2010-02-25T03:35:47.583 に答える
4

ハーフ、

Asterisk からストリーミングされる AMI イベントをリッスンする AMI デーモンを作成できます。私はこれを何度も行ってきましたが、そのうちの 1 つはアスタリスク GUI 用でした。データベースにステータスのテーブルを作成すると、デーモンを作成して AMI イベントをリッスンし、イベントが発生したときにステータスを更新できます。そうすれば、Web ページはアスタリスクとやり取りする必要がまったくなくなり、データベースからステータスを読み取るだけで済みます。

次のリンクは、Asterisk GUI プロジェクトからのものです。これは JavaScript で書かれているので、あなたの php は少し異なりますが、これで始めるのに良いベースが得られます。574 行目から始めます。

http://svn.asterisk.org/view/asterisk-gui/branches/2.0/config/js/welcome.js?view=markup

JavaScript と php の主な違いの 1 つは、JavaScript が AMI への直接のソケット接続ではなく、Asterisk の http デーモンを使用する必要があることです。このため、「waitevent」を使用する必要があります。ただし、TCP ソケット接続を使用するため、read ステートメントをループし続けます。

お役に立てれば!アスタリスクから情報を取得しようとする場合、この方法が最も信頼できるようです。

于 2010-03-08T19:52:18.933 に答える
1

私は実際にHTML5webSocketsとPHPで書いたミドルウェアデーモンであるAsterClickを使用しています。

AsterClickは、私が知る限り、地球上で唯一の真にイベント駆動型のHTML5用AsteriskAMIインターフェースです。そこにある他のすべてのソリューションは、まだサーバーのポーリングでスタックしています。

通話の状況をリアルタイムで確認できます。ブラウザでドラッグアンドドロップするだけで、(キュー、会議、駐車場、個人)間を移動できます。ダイヤルプランに書き込むことなく、機能するアドホックダイヤルプランエントリを作成できます。基本的に、AsteriskAMIがポーリングなしで実行できることは何でもできます

Javascriptでは、AMIイベントの名前を実際にパラメーターとして受け取るaddEventListener()関数を使用できます。ポーリングはありませんが、Asterisk AMIがイベントを発行すると、 webSocketを介してブラウザーに送信され、データを処理してブラウザー内でさらに多くのイベントを発行するイベントが生成されます。

また、WBEAというツールを使用して、同じHTML5AsterClickアプリケーションをWindowsおよびLinux用のスタンドアロンデスクトップ実行可能ファイルとして展開できます。

于 2011-01-04T21:58:30.463 に答える