アスタリスクと1C間の通信用SDK:Enterprise 8

3年以上にわたり、1C:Enterprise 8とアスタリスクベースの電話交換のオフィス向けの有能な統合を構成しようと試みてきました。 どのような決定を下しても、常に松葉杖が必要です。 これは非常に怒っています。 しかし、実際には市場に通常の統合ソリューションはありませんでした。 私たちは無料と有料のさまざまな製品を試し、1万ルーブル以上を費やしましたが、幸福は訪れませんでした。

あなたはそれをうまくやりたいですか?自分でそれをしてください


実際、別の試みが失敗した後、特に実装自体が表面上にあるので、すべてをゼロからゼロから実行するというアイデアが心をつかみました。
特定の1Cタスクに縛られない普遍的なソリューションを作成することが最善であると判断しました。 1Cからアスタリスク、またはその逆の「透過プロキシ」が必要です。これにより、将来、3年間夢見てきた夢の電話パネルを組み立てます。

NativeAPIテクノロジー


1C:Enterprise 8プラットフォームでは、動的ライブラリの形式で外部モジュールを接続できますが、ライブラリ自体には特別な要件があります。 1Cの要件に従って、ライブラリはNativeAPIテクノロジーを使用して開発する必要があります。

ネイティブAPIテクノロジーは独自の1C:Enterprise 8システムプログラミングインターフェースであり、WindowsおよびLinuxオペレーティングシステムをサポートし、あるオペレーティングシステムと別のオペレーティングシステムの両方で動作する外部コンポーネントを作成できます。 ネイティブAPIテクノロジーを使用して作成されたコンポーネントは、シッククライアント、シンクライアント、Webクライアント、外部接続、およびアプリケーションサーバーで接続できます。

そのため、新しく購入したVisual Studo 2010を武器に、創造的なプログラミングプロセスに飛び込み始めました。

AJAMアスタリスクインターフェイス


約1か月にわたって、Asterisk外部システムとやり取りするためのさまざまなテクノロジーを研究し、テストし、パフォーマンスを測定し、最終的に「Asynchronous Javascript Asterisk Manger」が最適であると判断しました。 AJAMはHTTPプロトコルをトランスポートとして使用し、Digiest認証とSSL暗号化をサポートします。これにより、接続のセキュリティが向上し、クラウドにあるアスタリスクを使用することもできます。 Asteriskサーバーによって送信される回答はXML構造として表すことができ、1C:Enterprise 8での作業に非常に便利です。

アスタリスクとコンポーネントのドキュメント


インターネットでは、アスタリスクに関するさまざまな知識が散在していますが、ある場所ではそうではないため、コマンドのリストとパラメーターの説明、答えのリストを断片化する必要がありました。 このコマンドまたはそのコマンドがどのように見え、パラメーターに何を渡すかを理解するために、アスタリスクのソースコードのリストを読む必要があったことがありました。 すべてのメソッドと機能が1か所で説明されるように、開発は十分に文書化する必要があると判断しました。 その結果、アスタリスクAMIプロトコルに関するすべてのドキュメントを収集したWIKIを取得し、これらのデータに基づいて、開発したコンポーネントの内部機能の説明を体系化しました。

どうした


判明したように、ソリューションは表面にありましたが、ドキュメントの開発と作成全体に、数人の高度な資格を持つ専門家の作業が3か月以上かかりました。



その結果、1Cでコンポーネントを初期化した後、メモリが十分に機能していれば、アスタリスクAMIコマンドの全範囲が使用可能になり、合計103個の機能が使用できます。
たとえば、1CからSIP / 26番号から都市74952293042への元のコールは次のようになります。

チャンネル= "SIP / 26"
コンテキスト= "from-internal";
Exten = "74952293042";
優先度= "1";
タイムアウト= "";
CallerID = "MIKO_Abonent";
変数= "";
アカウント= "miko";
アプリケーション= "";
データ= "";
非同期= "1";
ActionID = "114";
結果= "";

Component.Originate(チャネル、コンテキスト、拡張、優先度、タイムアウト、CallerID、変数、アカウント、アプリケーション、データ、非同期、ActionID、結果)

アクティブな接続中に、コンポーネントは1Cで外部イベントハンドラーを呼び出すため、チャネルのステータス、発信者番号に関する情報、キューのステータスをキャッチし、リアルタイムでコールルーティングを管理することもできます。

新しいレベルの相互作用1Cとアスタリスク


その結果、アスタリスクベースのテレフォニーと統合された新しいレベルの1Cビジネスソリューションの開発に移行しました。 これで、1C開発者は利用可能なすべてのPBX機能を1C:Enterprise 8環境で使用できるようになり、ソリューションの機能は彼の想像力によってのみ制限されます。
コンポーネントに基づいたテストとして、私たちは会社の仕事で使用する「1C用アスタリスクテレフォニーパネル:CRM」を開発し、1Cロジックのみを使用してスマートクライアントルーティングの機能を担当マネージャーに追加し、「イベント」ドキュメントに会話レコードを保存するようにパネルに教えました、コール履歴をアスタリスクから1Cに転送するメカニズム、およびさまざまなコール転送と1C:Enterprise 8からのコールを直接管理するメカニズムを考案しました。かなり便利なテレフォニーパネルであることが判明しました。 最初はサードパーティの開発者から。

商用製品とアフィリエイトネットワーク


1Cとアスタリスクを統合するためのソリューションを開発、記述、テストするのが好きでした。 1C開発者向けのSDKとしてコンポーネントを停止およびリリースしないことにしました。 1Cステータス:互換性のために、1Cで製品認証を行いました。 エージェントおよびアフィリエイトプログラムを開発しました。

コンポーネントのデモンストレーション




より詳細な情報へのリンク




更新しました。 2月24日に、SDK は1C:Compatibleの認定を受けました 。 その結果、1Cとアスタリスクを統合する最初の1C認定ソリューションを作成しました。

Source: https://habr.com/ru/post/J137999/


All Articles