挑戦する
だから、奇妙なことを望んでいました:従業員がサポートデスクに座っており、電話を受けた場合、既存のヘルプデスクシステムでウィンドウを自動的に開く必要があります。 便宜上、電話がかかってきたので、スペシャリストはすぐにそれがどんな種類のコンピューターで、どのネットワーク名、ユーザー名、どんな種類のハードウェア/ソフトウェア/サービスであるかを確認します...
提案されたソリューション
IPテレフォニーはFreeSWITCHで実行されたため、ソリューションはそれに合わせて調整されることをすぐに言わなければなりません。
ヘルプデスクに連絡するには、発信者の電話番号を追加する特定のアドレスバーを使用してブラウザウィンドウを呼び出すだけで十分です。 例: myserver.org/helpdesk/requests.php?command=new&phonenum=1072
FreeSWITCHには優れたモジュールmod_event_socketがあり、ソケットを介してFreeSWITCHと通信できます。 PHPでスクリプトを作成し、Webサーバー上に配置し(FreeSWITCHと同じマシン上にある必要はありません)、FreeSWITCHに接続し、呼び出しイベントを受信するようにサブスクライブします。
次に、マシン上のクライアントで実行され、このスクリプト(AJAX)にアクセスするクライアントHTML + Javascript + jQueryファイルがあります。 呼び出しイベントを受信した後、別のブラウザーウィンドウが起動され、特定のアドレスが表示され、そこに発信者の番号も送信されます。
そしてもう1つの小さな点:このファイルを実行したくないときはいつでも、あまり目立たない場所に置く必要があります。 それは必要です-私たちはそれをしますが、これはWindows 7 / Vista用のガジェットを作成することで行われました。 まあ、それはこのように起こった-私たちはLinuxワークステーションを持っていません。 原則として、もちろん、トレイに座ってすべてを行う特別なプログラムを書くことはできますが、そうしなかった理由を論理的に説明することはできません。
すべてが非常に小さくなったため、この獣をFreeSWITCH call popup(fscp)と呼びました。
サーバー側
サーバー部分は、単純なPHPスクリプトfscp.phpによって実行されます。
FreeSWITCHにアクセスできる任意のWebサーバーでホストできます。
アクセスはmod_event_socket経由です。
ファイルの最初に、autoload_configs / event_socket.conf.xmlファイルから値を入力する必要がある変数が定義されています。
$FreeSWITCHserver = '127.0.0.1'; // listen-ip $FreeSWITCHport = 8021; // listen-port $FreeSWITCHpassword = 'ClueCon'; // password
もちろん、autoload_configs / modules.conf.xmlにmod_event_socketを含めることを忘れないでください <load module="mod_event_socket" />
FreeSWITCHに接続するには、インバウンドソケットを使用します。
イベントを受信するために接続してサブスクライブします:
イベントプレーンALL
2つのフィルターを配置します。
フィルターイベント名HEARTBEAT
発信者番号のアカウントをフィルター
FreeSWITCHのハートビートイベントは20秒ごとに生成されます。 FreeSWITCHからのイベントの待機サイクルでPHPスクリプトの最大実行時間(max_execution_time)を超えないようにし、ループを正しく終了するために使用します。
さらにループ内で、FreeSWITCHからイベントが到着することを期待しています。 CHANNEL_CREATEイベントが到着した場合、JSON応答でそれをラップし、クライアントに転送します。
すべて、スクリプトは非常に簡単です。
クライアント部
別のサイトにデータを申請しているため、クライアント部分はJSONPを介してサーバーからデータを受け取ります。 クライアントはAJAX要求を実行し、目的のイベントが到着するまで待機します。ハートビートイベントが到着した場合、それは単に無視され、要求が再実行されます。 目的のイベントが到着すると、設定に応じてさらにアクションが実行されますが、いずれの場合でも、呼び出しはガジェット画面に記録されます。
以下の設定が行われます。
サーバーアドレス -スクリプトfscp.phpがインストールされているURL(文字列は、http://およびスクリプト名を含めて完全に指定する必要があります)。 例: myserver.com/special/fscp.php
アカウント -FreeSWITCHの電話番号(アカウント)。イベントの追跡元です。
アクション -この番号を呼び出すときのアクション :
アクションなし-何もしません。呼び出しはガジェットウィンドウに表示されます。
警告ウィンドウの表示-呼び出し警告ウィンドウの表示
呼び出しアドレス-指定されたアドレスでブラウザを呼び出します
show prompt then call address-呼び出し通知ウィンドウを表示し、ユーザーがボタンをクリックすると、指定されたアドレスでブラウザーを呼び出します。 これは多くの呼び出しがある可能性があるためですが、たとえばヘルプデスクに記録するためにすべてのアクションを実行する必要はありません。
最後の2つのオプションには、サイトの呼び出しが含まれます。 この場合、httpを含む呼び出し文字列を完全に指定する必要があります。
パラメータとして、システムは通話の発信元の電話番号を転送できます。 このパラメーターは次のとおりです。%CALLERID%(大文字と小文字が区別されます)。 例:
myserver.com/helpdesk/add_call.php?number=%CALLERID%
おわりに
実際、元の問題は解決されました。 このソリューションには、2つの欠点があります。
- 承認はありません、つまり 原則として、設定で任意の電話番号を示し、誰が彼に電話をかけているのかを確認できます。 悪いですか-確かに言えません。 たとえば、誰がいつCEOに電話してもかまいません:-)。
- 呼び出されたウィンドウは、他のウィンドウの上に開かれません。自分で持ち上げる必要があります。 誰かがこの問題の解決策を提供してくれたら、とても感謝します!
ここからファイルをダウンロードできます 。