
SIP PBX 3CXのバージョン12では、新しいクライアント3CX MyPhoneが登場しました。 クライアントの機能は印象的です-電話の状態、電話帳、通話履歴を表示する機能、録音などを聞くことができます。 ただし、他のシステムとの統合はかなり制限されています。 3CX APIは、以前のバージョンと同様に、3CXシステムがインストールされているのと同じマシンでのみ機能し、プログラミングが非常に困難です。 APIに加えて、3CX電話システムには「死後の」通話記録を保持するすばらしいCallHistoryインターフェイスもあります。 社内でManageengine ServiceDesk Plusと組み合わせてこのインターフェイスを数年間使用することに成功しました。これにより、「アウトソーシング」作業の効率を大幅に向上させることができました。
なぜなら オープンソースのサービスデスクシステムの内部実装について鋭い質問があり、活動の主な分野はまだ1Cであり、RarusおよびDesnol-Soft企業の製品は新しいソフトウェアと見なされていました。 Desnol-SoftのItiliumが選ばれました。
しかし、電話と接続せずにItiliumを導入しても意味がありません。 したがって、最初のステップは、1Cに通話履歴を保存するタスクを設定することです。つまり、通話の日時。 期間 着信番号。 発信番号; 別の番号に転送するイベント。 別の番号からの転送イベント、オーディオ録音ファイルへのリンク。 録音を聞く能力。
3CX Phone System v.12をインストールして構成しました。 Webサーバーにインストールおよび公開されたItiliumデータベース。 実装に移りましょう。
1.目的のために、3CX CallHistoryの追加設定を行います。 ファイル%3CXData%\ Data \ CDRTemplates \ CDRTemplate-SocketListen.xmlが必要です(Windows Server 2008の場合、これはC:\ ProgramData \ 3CX \ Data \ CDRTemplates \ CDRTemplate-SocketListen.xmlです)。
並んで
CallTemplate Host = "127.0.0.1" Port = "33555" OutboundOnly = "false"
Hostパラメーターを、3CXシステムを実行しているマシンの外部IPアドレス(192.168.11.2など)に変更します。 3CX CallHistoryサービスを再起動し、コマンドでサービスの動作を確認します
telnet [3CXサーバーのIPアドレス] 35555
通話が完了すると、この通話に関する情報がTelnetウィンドウに表示されます。 データ形式は、CDRTemplate-SocketListen.xmlファイルの内容によって異なります。 原則として、デフォルトの形式を使用できますが、このデータを解析する必要があるため、将来の生活を簡素化できます。 たとえば

このメッセージ形式により、将来の作業が大幅に簡素化されます。
CDRTemplate-SocketListen.xmlを編集した後、3CXCallHistoryサービスを編集することを忘れないでください。 また、別の非常に重要な注意-このファイルのコピーを別の場所に保存するか、名前を変更して、CALLHISTTEMPLSOCKLISTENパラメーターの値をファイルの名前と同じ3CXに設定します([設定]-[詳細設定]-[ユーザー設定]タブ) 3CXのサービスパックをインストールすると、CDRTemplatesディレクトリ内のファイルはデフォルトファイルで上書きされます。 それで、3CX側では、今のところ...
2. 1Cシステムで、情報TF_Call Historyのレジスタを作成します。

次に、CallHistory Webサービスを作成します。 その中で、入力で項目1から行を受け取り、解析し、TF_History of Calls情報レジスタにエントリを作成するSaveHistory(Record)メソッドを作成します。 ロシアの名前のサービス、メソッド、およびパラメーターの名前は避けてください。

3. SaveHistoryメソッドの実装を描画します(高解像度: habr.habrastorage.org/post_images/d4a/f4c/d4f/d4af4cd4f675daf692c5160fb396ef6b.png )

ご覧のとおり、メッセージ形式の修正により、構文解析を簡素化できます。 1CとC#の日付と時刻の形式が異なるため、追加の機能が必要です。

メイン関数は、[key] = [value]; [key] = [value]という形式の文字列を対応する構造に変換します。

オーディオ録音の保存に関する別の注意。 データベースに保存できますが、ベースのサイズは飛躍的に増加します。 したがって、ネットワークリソースへのリンクとしてファイルを保存することをお勧めします。 正しいリンクの形成は非常に簡単な機能を実行します(コメントではレコードのタイプのみ):

Webサービスはこれですべてです。 今すぐすべてを結びます。 バンドルにはC#Visual Studio 2012を使用しますが、所有している他のツールを使用できます。
C#プログラムは、サービスの3CXCallHistoryポートに接続し、受信したすべてを1Cサービスに転送する必要があります。 バインディング全体の目標は、Webサービスの切断またはアクセス不能の場合の自動再起動です。 プログラム(近いうちに公開します)をコマンドラインから起動し、コンソールに診断を発行します。 これをサービスとしてインストールできます。3CX_CDRClient1Cサービスを呼び出すと、3CX Phone System管理コンソールに表示されます。
ニュアンス。
1.承認。
最初のオプションは、データベースにユーザーがいないことです。 利用可能なWebサービス。 しかし、特にユーザーのいない戦闘基地はナンセンスなので、簡単な方法を探していません。
2番目のオプションは、たとえば、IUSR_IIS7 OSユーザーからWebサーバーを起動し、さらに1CでIUSR_IIS7ユーザーを起動し、Webサービスを開始するためのOS承認とROLI権限を持ちます。 一見動作しますが、... Webクライアントを起動すると、ジャムではなくジャムが発生します!!! スクリーンショットは撮りませんでしたが、設定を返すのは面倒ですので、面倒くさい人は誰でも-面倒だと思う人は誰でも-私を信じてください。

そのため、Webクライアントを起動すると、1C認証ウィンドウは表示されず、ユーザーIUSR_IIS7はスクリーンショットの赤いボックスに書き込みます。 さらに、セッションパラメータ:現在のユーザーは空であるため、「初期化されていないセッションパラメータにアクセスしようとしています」というエラーが発生します。 したがって、何らかの方法で過去の承認。
3番目のオプションは、 http://www.forum.mista.ru/topic.php?id = 661110です (多くの「ありがとう」!)。 3つのオプションを使用すると、C#app.configプロジェクトに余分な行が追加されました。

誰もが読む方法を知っていれば、私たちは情報を喜んで受け取るでしょう。
結果は次のとおりです。


ファイル名はリンクです。 押すと、プレーヤーが開きます:

元の構成への最小限の変更で、任意の1C構成で統合が可能です。
ソース: infostart.ru/public/237772