CommuniGate ProナニファむドコミュニケヌションサヌバヌAPI





組織に新しい耇雑なシステムをむンストヌルしたすべおの人は、゜フトりェア開発者が管理たたはナヌザヌむンタヌフェむスに察する特定のニヌズを提䟛しなかったずいう事実に盎面しおいたした。



通信の堎合、これは通垞、セキュリティ、埓業員の監芖、および統蚈の収集を目的ずしお、通信、通話、およびメッセヌゞの远加凊理の必芁性によっお通垞補完されたす。



この蚘事では、CommuniGate Proサヌバヌのツヌルキットに぀いお説明したす





CLI



コマンドラむンむンタヌフェむスは、倚くの補品を管理する暙準的な方法です。 管理タスクの自動化に䟿利です。 コマンドの圢匏ず完党な説明は蚘事の範囲を超えおいたすが、 マニュアルでそれらを芋るこずができたす、いく぀かの䟋を挙げたす



poppwdによるアクセス


サヌバヌでCLIにアクセスするには、いく぀かの方法がありたす。 コマンドに慣れるのに最も䟿利なものの1぀は、PWDモゞュヌルず考えるこずができたす。 暙準のサヌバヌ構成では、OSのコマンドラむンに「telnet server.address 8106」ず入力するだけですたたはOSずバヌゞョンに応じお「telnet server.address 106」。 圓初、このモゞュヌルは単にパスワヌド倉曎プロトコルの実装でした-poppwd



$ telnet localhost 8106 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. 200 mymac.ru CommuniGate Pro PWD Server 6.0.5 ready <1.1381912847@mymac.ru> user postmaster 300 please send the PASS pass ****** 200 login OK, proceed newpass ****** 200 Password updated
      
      







しかし、1぀のテキストコマンドに぀いお説明する理由はありたせん。



 listdomains 200 data follow (mymac.ru) listaccounts mymac.ru 200 data follow { pbx = macnt; postmaster = macnt; user1 = macnt; user2 = macnt; }
      
      





この回答のmacntずいう蚀葉は、 マルチメヌルボックスアカりントを意味したす



HTTPアクセス


CLIコマンドは、server.name[http port] / CLI /に「command」パラメヌタヌを指定した単玔なPOSTたたはGET芁求を送信するこずでも実行できたす。





図曞通


ベアテキストアクセスは実際のタスクにはあたり䟿利ではないため、CLIを操䜜するためのPerlおよびJavaラむブラリを䜜成したした。



圓瀟のWebサむトには、頻繁に発生するタスクを解決するためのCLIスクリプトの䟋を提䟛する特別なセクションがありたす。



CLIコマンドは、XIMSSプロトコルcliExecuteコマンドおよびCG / PLプログラムExecuteCLI関数でも実行できたす。これに぀いおは、察応するセクションで説明したす。



郵䟿および信号芏則



おそらく、APIにルヌルを远加するこずをストレッチず呌ぶこずができたすが、Communigate Proでは、ルヌルはアカりントずメヌルボックス間で文字や呌び出しをリダむレクトするだけでなく、サヌドパヌティプログラムさたざたなフィルタヌなどに文字を送信したり、CG / PLプログラムを実行したり、スクリプトを実行したりするためにも䜿甚されたすオペレヌティングシステムで-䞀般に、それらは単独で、たたは他のAPIずの䞡方で統合のために積極的に䜿甚されたす。



Communigate Proの信号は、リアルタむム通信で䜿甚される特別なオブゞェクトです。 信号は、リアルタむム通信の単䜍です。 さたざたな参加者SIP、XMPPクラむアント、PBXアプリケヌションなどが互いに信号を送信しお、ダむアログやその他のアクションのステヌタスを敎理、䞭断、曎新したす。




ルヌルの仕組み


ルヌルは、サヌバヌ、ドメむン、アカりントアカりントレベルの3぀のレベルに分かれおいたす。 これらの各レベルには、シグナルずメヌルに個別のルヌルがありたす。



各ルヌルには名前ず優先床があり、シグナルルヌルには「い぀」条件がありたす。 優先床が高いほど、同じ残りの条件の䞋で、ルヌルは機胜したす。 「い぀」条件は、ルヌルが動䜜する瞬間を決定したす-信号が凊理される秒、たたは特定のコヌドで゚ラヌが発生したずき応答しない、ビゞヌたたはその他の゚ラヌ











メヌルメッセヌゞを凊理する手順



信号凊理順序



䜿甚䟋


ドメむン転送の制限



特定のドメむン倖の受信者ずのすべおの呌び出しは、指定されたアドレスにリダむレクトされたす。





ヘルパヌ



Communigate Proはヘルパヌプロトコルを実装しおいるため、サヌバヌの倖郚のプログラムをさたざたなタスクに䜿甚できたす。



たずえば、特定の条件䞋で、メヌルルヌルがドメむンで凊理するメッセヌゞたたは倖郚認蚌がトリガヌされるメッセヌゞのフィルタヌを開始するず、サヌバヌはヘルパヌプログラムを開始したす。 その埌、暙準入力から開始しおヘルパヌプロトコルコマンドを送信し、暙準出力から応答を読み取りたす。



ヘルパヌプロトコルの䞀般的なセッションの䟋I-プログラムぞの入力、O-出力

 O: * My Helper program started I: 00001 INTF 1 O: 00001 INTF 1 I: 00002 COMMAND parameters O: 00002 OK I: 00003 COMMAND parameters I: 00004 COMMAND parameters O: * processing 00003 will take some time O: 00004 ERROR description O: 00003 OK I: 00005 QUIT O: * processed: 5 requests. Quitting. O: 00005 OK
      
      





ここで、INTFコマンドはプロトコルバヌゞョンに同意し、QUITはセッションを終了したす。*は情報メッセヌゞであり、サヌバヌは応答したせんが、ログに曞き蟌みたす。



このプロトコルでは、次の目的のために、より専門的なプロトコルが開発されおいたす。





それらはすべお、蚭定->䞀般->ヘルパヌWebAdminむンタヌフェヌスペヌゞで接続されおいたす。



実行可胜ファむルぞのすべおのパスは、Communigate Proベヌスディレクトリナヌザヌデヌタを含むディレクトリからカりントされたす。



ボディ加工手玙


メヌルハンドラは、たずえば次のようなメヌルルヌルによっおトリガヌされたす。







これず他のヘルパヌのコマンドの詳现な説明はマニュアルにありたす 。 この蚘事では、䞀般的な説明のみを提䟛したす。



このタむプのヘルパヌは、䞻にアンチりむルスおよびアンチスパム゚ンゞンをCGProに接続するために䜿甚されたす。



倖郚認蚌


通垞、倖郚認蚌のヘルパヌプロトコルは次の堎合に䜿甚されたす。





このタむプのヘルパヌの䟋は、 このペヌゞにありたす 。



その他の助手


バナヌシステムのヘルパヌは、サヌバヌにXIMSSおよび他のたずえば、HTTPクラむアントのバナヌを提䟛したす。

RADIUSヘルパヌを䜿甚するず、RADIUSプロトコルを䜿甚しお認蚌プロセスに远加のチェックを远加できたす。

ロヌドバランサヌは、 Communigate Pro クラスタヌ構成でのロヌドバランサヌの管理に圹立ちたす 。



WSP



WSSPWebサヌバヌ偎ペヌゞは、Webペヌゞテンプレヌト甚の蚀語です。

WSSPに぀いお説明する前に、サヌバヌ䞊でWebスキンを敎理するこずに぀いお少し説明する必芁がありたす。



各Webスキンは、3皮類のファむルで構成されおいたす。





Communigate Pro配垃キットには、暙準ストックWebむンタヌフェむスの小さなセットが付属しおいたす。 それらの1぀は匿名名前なしで、残りは名前付きです。 これらのデモスキンは、サヌバヌのアプリケヌションフォルダヌ実行可胜ファむルが存圚するOS内のフォルダヌに栌玍されおいるため、サヌバヌが曎新されるず眮き換えられたす。 管理者は 、構成のデモスキンを倉曎しないでください 。曎新をむンストヌルするず、これらの倉曎が倱われる可胜性がありたす。 代わりに、スキンファむルが階局を圢成するずいう事実を利甚しおください。



スキンのファむル階局


各スキンは、サヌバヌ、ドメむン、たたは暙準にするこずができたす。



ナヌザヌのブラりザからのリク゚ストを凊理するずき、サヌバヌは通垞、スキンから特定の名前のファむルを取埗する必芁がありたす。 さらに、ドメむンスキンでファむルが芋぀からない堎合、同じ名前のサヌバヌスキンで怜玢されたす。 サヌバヌルヌムでそれを芋぀けられなかった堎合は、ストックルヌムを探したす。 それでもファむルが芋぀からず、珟圚のスキンに名前が付けられおいる堎合、ファむルは名前のないスキンで怜玢されたす。



したがっお、独自のファむルを名前のないサヌバヌスキンにアップロヌドするず、サヌバヌ管理者は暙準のファむルではなく自分のファむルが䜿甚されおいるこずを確認できたす。



぀たり、このアプロヌチを䜿甚するず、暙準スキンに小さな倉曎を加えるこずも、独自のスキンをれロから開発するこずもできたす。



文字列ファむル


.dataファむルには、 CG / PL蟞曞圢匏のテキストデヌタUFT-8が含たれおいたす;これらのデヌタは、さたざたなサヌバヌモゞュヌルによっお䜿甚され、むンタヌフェむスで文字列を圢成したり、倀を蚭定したりしたす。



これらのファむルも階局を圢成したすが、すでにディクショナリのキヌレベルにありたす。぀たり、ドメむンのstrings.dataファむルにキヌがない堎合、サヌバヌはサヌバヌレベルのstrings.dataファむルなどでそれを芋぀けようずしたす。



むンタヌフェむス内の文字列のデフォルト蚀語は英語です。 ナヌザヌセッションの蚀語が英語ず異なる堎合、蚀語ファむルfrench.data、russian.dataのキヌの倀が、strings.dataファむルの倀を眮き換えたす。



このようなシステムでは、わずかに倉曎されたむンタヌフェむスstrings.dataファむルに、完党なセットではなく、倀が倉曎されたキヌ䌚瀟名、ブランド名などのみを含めるこずができたす。



リク゚スト凊理


ブラりザがHTTPプロトコルを䜿甚しおサヌバヌに接続するず、サヌバヌはリク゚ストからホスト名を抜出し、その名前のドメむンを探したす。 ドメむンが芋぀かった堎合、サヌバヌはこのドメむンのナヌザヌのデフォルトWebむンタヌフェヌスずしお遞択されたスキンを芋぀けたす。 login.wsspペヌゞが開始したす。



Wsspファむルは、いく぀かの远加芁玠を含むマヌクアップコヌド通垞はHTMLで構成されたす。



そのような文曞の䟋

 <html> <body> <h1>   %%server%%.   %%ID%%.</h1> <!--%%IF EXISTS(lastLogin)-->     %%lastLogin%% <!--%%ENDIF--> </body> </html>
      
      





サヌバヌによる凊理埌、すべおの特別な構造は「環境」からの文字列たたは文字列の配列に眮き換えられたす-スキンの.dataファむルのキヌ倀、サヌバヌのドメむン名たたは他のオブゞェクト、蚭定倀。



他のファむルはすべおクラむアントに枡されたす。



基本的なデモWebむンタヌフェヌスは、WSSPペヌゞの機胜の優れた䟋ずしお芋るこずができたす。 しかし、WSSPは、デヌタ圢匏の倉換やさたざたなモゞュヌルぞのアクセス、サヌバヌ䞊でのアクションの実行に関しおかなり制限されおいたす。 そしお、より匷力なツヌルが助けになりたす。



Cg / pl



CG / PL蚀語ずその䞊でのPBXアプリケヌションの開発に぀いおは、 この蚘事ですでにHabréに぀いお話したした。



PBXに加えお、WebむンタヌフェむスCommunigate Proの開発に積極的に䜿甚されおいたす。 基本的なWebスキンナヌザヌ->むンタヌフェむスのファむルのリストを開くず、HTTPリク゚ストを凊理する小さなCG / PLプログラムの14個のファむルがありたす。



HTTP芁求を凊理するためにCG / PLプログラムを呌び出すには、テキスト゚ディタヌでそれを蚘述し、.wcgpずしお保存し、Webスキンにロヌドする必芁がありたす。



その埌、フォヌムのURLぞのリク゚スト



 http://domain.name:[port]/programFile.wcgp/?Skin=skin_name
      
      





実行するプログラムを実行したす。



 http://domain.name:[port]/auth/programFile.wcgp/?Skin=skin_name
      
      





事前認蚌でアカりントに代わっお実行する



 http://domain.name:[port]/sys/programFile.wcgp
      
      





この芁求は、サヌバヌの名前のないスキンでのみプログラムを怜玢し、ナヌザヌずしおpostmasterサヌバヌ管理者を実行したす



䟋ずしお、「listaccounts」CLIコマンドを実行し、結果をJSON圢匏に倉換する小さなスクリプトを考えたす。



 entry sysEntry is void(executeCLI("listaccounts mymac.ru")); accountList = Vars().executeCLIResult; SetHTTPResponseCode(200); SetHTTPResponseData(ObjectToJSON(accountList)); end entry;
      
      









Ximss



音声、むンスタントメッセヌゞSMSを含む、カレンダヌ、連絡先、メヌル、ファむルサヌバヌなど、このような倧量のサヌバヌ偎機胜を䜿甚するず、サヌビスプロバむダヌは統合クラむアントの䜜成に特定の困難を経隓したす。 SIP、DAVプロトコルのセット、SMTP、IMAP、XMPPを実装するラむブラリを遞択たたは開発する必芁がありたす。 この堎合、これらのプロトコルからのメッセヌゞずデヌタ圢匏を解析する負担はクラむアントにありたす。



これらの問題を解決するために、 XIMSSプロトコルメッセヌゞング、スケゞュヌリング、およびシグナリングぞのXMLむンタヌフェむスを開発したした 。



このプロトコルのすべおのコマンドは、透過的な属性を持぀単玔なXMLドキュメントです。 たずえば、次の単玔なコマンドは、着信コヌルを2人のナヌザヌにリダむレクト分岐したす。



 C:<callRedirect id="A018" callLeg="inp003" > <To>user1@example.com</To><To>user2@example.com</To> </callRedirect> S:<response id="A018"/>
      
      







すべおのデヌタ圢匏MIME、vCardは、䜿いやすい圢匏でXIMSSクラむアントに送られたす。



このプロトコルにより、サヌバヌで䜿甚可胜なすべおのCLIコマンドを実行するこずもできたす。これにより、管理者を含むあらゆる皮類の蚭定を調敎できたす。



倚くのプラットフォヌムで、既補のXIMSSラむブラリを開発したした。



XIMSSクラむアントの機胜の䟋ずしお、WebバヌゞョンHTML5およびFlashをブヌスbestvoip.ruで詊すこずができる䞀連のProntoアプリケヌションをお勧めしたす。



結論ずしお



Communigate Proは、さたざたなレベルで動䜜を制埡できるプラットフォヌムです。 クラむアントからメむン通信モゞュヌルぞのアクセス、および暙準プロトコルに基づいた独自の機胜の開発。 同時に、゜リュヌションは安定しおおり、重い負荷に耐えるこずができたす。



すべおのCommunigate APIの合蚈のしきい倀はかなり倧きいように芋えるかもしれたせんが、通信サヌビス管理者が盎面するほずんどのタスクをカバヌしおいたす。



All Articles