組織の開発のある段階で、VoIPテレフォニーに切り替えることが決定されました。 プラットフォームとして無条件にアスタリスクPBXが選択されました。 端末機器は手頃な予算-DLink DPH-150から取得されました。
完了した作業の結果として、標準のMS ActiveDirectoryスナップインを介して制御される自動VoIPシステムが取得されました。
アスタリスク1.8.4は、Ubuntu 9.04のソースからコンパイルされました。
「アスタリスクアクティブディレクトリ」という検索フレーズを使用してインターネットを歩くと、アスタリスクの構成ファイルを生成するperlスクリプトに基づく部分統合を使用することが決定されました。 Asteriskコアに基づいたADとの完全な統合は、インターネット上でこれに関する情報が不足しているため、気のめいるように見えました。 選択した統合オプションを使用する理由は、クラウンによって起動され、構成ファイル「users.conf」を生成した単純なperlスクリプト(残念ながら見つかりませんでした)でした。その後、アスタリスクサービスが再起動されました。 アスタリスクの機能を徹底的に調査し、見つかったスクリプトの機能を拡張すると、次のことが判明しました。
users.confの構成と接続
以下のスクリプトは、「phone」属性が指定されているすべてのユーザーをADで検索し、users.conf構成形式でstdoutのユーザーのリストを表示します。
users.conf構成ファイルでは、スクリプトは次のように接続されています。
users.plスクリプト自体:
ADグループに基づく電話グループの形成
メインの番号計画は、extensions.conf構成ファイルに手動で描かれます。 しかし、私たちの組織では、多くの場合、従業員が部署間を移動します。そのため、extensions.conf configを絶えず再フォーマットする必要があり、人的要因とともに不可避なエラーにつながります。 代替ソリューションの本質は、ADで、特定のOU($ ADGroupsSearchBaseスクリプト内)にグループが作成され、そのグループの電話番号が書き込まれる「説明」と、「メンバー」にグループ番号をダイヤルしたときに電話を受けるサブスクライバーが含まれることです。
設定内のスクリプトは同じ方法で接続されます:
スクリプト:
スクリプト出力は次のようなものです。
exten => 605,1,Dial(sip/157&sip/130&sip/444&sip/103&sip/119&sip/151&sip/117)
exten => 602,1,Dial(sip/122&sip/110&sip/106)
exten => 607,1,Dial(sip/444&sip/122&sip/110&sip/100&sip/101)
exten => 601,1,Dial(sip/155&sip/101)
exten => 606,1,Dial(sip/444&sip/110&sip/100&sip/101)
自動化
ADから新しいデータを自動的にロードするために、アスタリスク構成をリロードするタスクがcronに追加されました。
asterisk -rx reload
このような再起動では、サービス全体を再起動するのとは異なり、電話セッションは中断しません。
継続
記事がコミュニティの関心を引くものである場合、次のトピックを含めたい物語を続ける準備ができています。
- DLINK DPH-150電話および自動プロビジョニングをサポートするその他のデバイスの構成を自動的に展開します
- ADを介したNTLM認証による自動ダイヤルのためのDialFoxソフトウェアの使用。 特に、mod_ntlmをapache2にねじ込む
ご清聴ありがとうございました。
PSスクリプトを書く過程で、普遍性のためにすべてのコメントを英語で作成しようとしました。 しかし、残念ながら外国語の文法には、多くの要望が残されています。 コメントの主な意味が明確になることを願っています。
UPD:スクリプトを更新しました。 追加者:
1. DNSサーバーからのコントローラーのドメインの定義。
2.パラメータを使用してスクリプトを実行する機能-stdoutが書き込まれるファイルの名前。