Asteriskをゼロからインストールおよび構成する個人的な経験

まず、免責事項

アスタリスクの構成は、サイト、フォーラム、およびvoip-info.orgなどのポータル全体に当てられます。 しかし、このトピックが鬱forestとした森である人々は常に存在し、製品は「昨日」発売されなければなりません。 1か月半前、私はアスタリスクについて知っていました。 この作品は、私の後に同じ状況にいる人たちの生活を楽にすることのみを目的としています。 あらゆる「ティーポット」のエラーが含まれる場合があります。 あなたがアスタリスク構成の第一人者である場合-エラーを指摘し、私はそれを修正します、子孫はあなたに感謝します。

最初は言葉でした

ある時点で、私の努力により、会社のインフラストラクチャ開発戦略は文字通り上下逆になりました。 目標と目的の概要が示され、お金を節約するために動的なモバイルサーバーインフラストラクチャが必要であることが明らかになりました。これにより、問題が発生した場合に、別の場所で迅速に回復および/または上昇し、ハードウェアの世話をしやすくするなどが可能になります。 n。

それから問題がありました

一般的に、すべてが紙の上で美しく、簡単でした。 それは単なる展開でした。
最初は気取らないサーバーを2台購入しました。 コアi7-930、SATAドライブ上のメモリ12GBおよび12TB。 これらのサーバーには無料のXen Serverがインストールされ、リモートの従業員用の仮想サーバーとワークステーションが展開されました。
外部ストレージとして、継承されたQNAP-ovsky NASが使用されます。
テラバイトのローカルストレージは、非常に大きなメディアバンクを格納するためにのみ必要です。 サーバー自体の重量は3テラバイト未満です。
サーバーの1つは、古いPanasonic TDE-200を置き換えるアスタリスクでした。 なぜなら 同社には安価な通信、さまざまな国での直接の電話番号、従業員間の自由な交渉が必要なため、12シェケルの代替手段はありません。


1日目:Make World

Citrix XenのCentOSネイティブオペレーティングシステムにアスタリスクを展開することが決定されました。 同じRedHat、側面のみ。 すぐに予約します:私はずっとWindowsを管理してきましたが、* nixは仮想マシンでのみ「プレイ」され、ハードウェア上のいくつかのWebサーバーはカウントしません。 したがって、Citrix Xenでのアスタリスクのこの展開は、経験豊富な人々の観点からはいくらかの素朴さを与えます。
一般に、私は実証済みのパスをたどりました。公式マニュアルからダミーの詳細なハウツー指示がラップトップで開かれ、文字通りサーバー上でイニシアチブなしで実行されます。 すべてが「デフォルト」状態で構成されて動作し、最初の完全バックアップが作成されると、ヒーローアジャスターを後で再生できます。

2日目:yum installアスタリスク-y

それほど驚いたわけではありませんが、実は独立したライブアスタリスクの3つの分岐(1.4、1.6、1.8)が既に存在することを発見したとき、私はおなじみのシグナルマンに助言を求めました。 それらのそれぞれは、独自のゴキブリとローションを持っています。 なぜなら 私は、アスタリスクを簡単に克服するという希望に魅了されませんでした。設定の最大限の互換性を得るために、友人のようにバージョン1.4をインストールすることにしました。 ただし、その後、1.4でTCPがサポートされなかったため、そのような必要性が生じたときに1.6に上げる必要がありました。
これを行うには、CentOSにdigiumリポジトリをインストールし、そこからAsteriskをインストールしました。
取り付けは問題なく行われました。 基本的に、 voip-infoを使用したインテリジェントな段階的なロードマップが使用されました
iptablesは、SIPポートでのトラフィックを許可するためにすぐに修正されました。
すぐにではなく、将来の世代のために、 fail2banというパッケージをすぐにインストールして構成することをお勧めします。 インターネット上で公開されているサーバー上の余分なプログラムではありません。 インストールの1日後に、iptablesから判断すると、台湾全体がドロップしました。

3日目:PBX機能のTK

最も興味深いこと-​​計画を開始します。 構成プロセスの前に、顧客のすべての要望を記録および構成し、「いいえ、まったく違う」というフォームのさらなる競合を避けるために、必ず契約に署名する必要があります。 私の場合、顧客は私が働いている会社ですが、何も変わりません。 機能の技術的なタスクを作成し、責任者と話し合い、違いを取り除き、最終バージョンに署名します。
構成のTKは次のことを明らかにしました。
  • 電話番号は4桁です。
  • 番号の最初の数字は、オフィスがある国の記号です。
  • 各部門の番号は、次の100の最初の桁から始まります。
  • 各部門は個別のコールグループです。
  • 呼び出されたサブスクライバーが何らかの方法でコールに使用できない場合、コールはグループ全体に転送されます。
  • 着信サービスロジック:
    1.受話器を持ち上げます。
    2.挨拶を失います。
    3.現在のプロモーションに関する広告を再生します。
    4.さまざまな部門の通話オプションを再生するか、加入者番号のダイヤルを申し出ます。
    5.ポイント2から開始して、コマンドを入力します。
    6.ステップ4を完了した後、さらに10秒間待ってコマンドを入力します。
    7.コマンドがない場合は、通話オプションをもう一度再生します。
    8.サブスクライバーがまだ口がきけない場合は、コールを秘書に転送します。
  • このようなサービスが必要なユーザーの場合、ボイスメールを固定します。 この場合、ユーザーが何らかの方法で通話できない場合は、通話をボイスメールに転送します。
  • デフォルトでは、通話はロシアとイタリア(当社が主に勤務している国)にのみ許可されています。 他の方向は、最も狭いマスクによって必要に応じて開かれます。 「キューバの電話オペレーター」に関する恐ろしい話を誰もが覚えています。ある日、PBXがシエラレオネの14チャンネルすべてを1チャンネルあたり14ドルで突然呼び出し始めないようにしています。


一見、タスクは簡単ですが、実際にはその調整にかなりの量の血液が費やされました。 特に、明示的に許可されているものを除き、すべての方向の禁止の承認について。 このクライアントでは、PBXに接続された各デバイスでVPNを構成する必要性がなければ、避けられないものにのみ同意する必要がありました。 私は、最も単純で最も理解しやすい構成を厳守しようとしていますが、クライアントには、システムにいくつかの機能を追加することは「押すだけのボタンが2つ」であるように思えます。

4日目:nano sip.conf

楽しみは始まります:設定プロセス。
すでに長い記事を遅らせないために、初期設定とその後のチューニングの苦痛の詳細な説明を負担して、私は現在の設定に何のコメントを付けて表示するだけです。

[general] context=default ;   allowguest=no ; ,     allowoverlap=no ;           .  –  . alwaysauthreject=yes ;  ,         –  .    . useragent=Orgue de Barbaris ; –     .      ,         , ..     . defaultexpiry=360 ;   . callevents=yes ;  ,       music on hold limitonpeer=yes ;      . tcpenable=yes ; TCP   SIP. rtptimeout=60 ;     ,      . language=ru ; .    . bindport=5060 ;  .        ,   . bindaddr=0.0.0.0 ;   , ..         . srvlookup=yes tos_sip=cs3 ; <a href="http://www.voip-info.org/wiki/view/Asterisk+sip+tos">http://www.voip-info.org/wiki/view/Asterisk+sip+tos</a> tos_audio=ef disallow=all ;    allow=alaw ;,   ,   .    . allow=g729 allow=g723 allow=ulaw dtmfmode=rfc2833 ; Asterisk-   info,       rfc. rtpholdtimeout=300 rtpkeepalive=5 canreinvite=no ;     .     .               g.729,        . ,      alaw<->g.729a         .    Core i7-930     . externip=xxx.xxx.xxx.xxx ;   IP.   -,   Asterisk   NAT,     .  . allowexternaldomains=yes ; <a href="http://www.voip-info.org/wiki/view/Asterisk+config+sip.conf"></a>  , -  . domain=mydomain.com,default fromdomain=mydomain.com ;      .    SIP-       Asterisk        .         . ,       ,    .          . register => tcp://@multifon.ru::@sbc.megafon.ru/~60 ;   SIP-   -    [multifon] ;   ,      type=peer secret= username= host=sbc.megafon.ru port=5060 insecure=port,invite call-limit=1 context=incoming canreinvite=no qualify=yes transport=tcp dtmfmode=inband ;  –  .     , ,        ,   .   : [defaults](!) canreinvite=no ;     disallow=all allow=alaw allow=g729 allow=g723 [peer](!,defaults) type=peer host=dynamic ;    qualify=yes ;     nat=yes ;,      NAT call-limit=1 ; -   busylevel=1 ;,     “” rtpkeepalive=5 ;     . [ext1000](peer) secret=secretsecretsecret [ext1001](peer) secret=secretsecretsecret [ext1002](peer) secret=secretsecretsecret ;   -   ,     : [ext1101](peer) secret=secretsecretsecret transport=tcp ;   SIP  TCP. 


5日目:nano extensions.conf

PBXのロジック全体を規定した、それほど興味深いファイルではありません。 これらの記事は、ダイヤルプランのロジックを理解するのに非常に役立つことが判明しました: http : //inhibitz.ucoz.ru/publ/9-1-0-21、http//asterisk-pbx.ru/wiki/doku.php / asterisk_dialplan
それでは、行きましょう:

 [general] static=yes ;    CLI writeprotect=yes ;    CLI [globals] ;  ,     . [macro-dial-ext] ; “    4- ” exten => s,1,Answer() ;  exten => s,2,Dial(SIP/ext${ARG1},20,tT) ; ,        20       . exten => s,3,Goto(s-${DIALSTATUS},1) ;     Dial. exten => s-NOANSWER,1,Macro(group-dial,${ARG1:0:2}00) ;   exten => s-BUSY,1,Macro(group-dial,${ARG1:0:2}00) exten => s-CONGESTION,1,Macro(group-dial,${ARG1:0:2}00) exten => s-CHANUNAVAIL,1,Macro(group-dial,${ARG1:0:2}00) exten => _s-.,1,Hangup ;  [macro-dial-vip] ;     exten => s,1,Answer() exten => s,2,Dial(SIP/ext${ARG1},20,tT) exten => s,3,Goto(s-${DIALSTATUS},1) exten => s-NOANSWER,1,Voicemail(${ARG1}) ;     . exten => s-BUSY,1,Voicemail(${ARG1}) exten => s-CONGESTION,1,Voicemail(${ARG1}) exten => s-CHANUNAVAIL,1,Voicemail(${ARG1}) exten => _s-.,1,Hangup [macro-secretary] ;     exten => s,1,Answer() exten => s,3,Dial(SIP/ext2222,15,tTm) ;   exten => s,n,Goto(s-${DIALSTATUS},1) exten => s-NOANSWER,1,Macro(group-dial,${ARG1}) ;       exten => s-CHANUNAVAIL,1,Macro(group-dial,${ARG1}) exten => s-BUSY,1,Macro(group-dial,${ARG1}) exten => s-UNKNOWN,1,Macro(group-dial,${ARG1}) exten => s-CONGESTION,1,Macro(group-dial,${ARG1}) exten => s-CHANUNAVAIL,1,Macro(group-dial,${ARG1}) exten => _s-.,1,Hangup [macro-group-dial] ;    exten => s,1,Answer() exten => s,n,Queue(${ARG1}) ; queue,     queues.conf exten => s,n,Goto(s-${DIALSTATUS},1) exten => s,n,Hangup exten => s-BUSY,1,Playback(all-circuits-busy-now) exten => s-BUSY,n,Macro(secretary,1100) ;  ,    exten => s-NOANSWER,1,Macro(secretary,1100) exten => s-CHANUNAVAIL,1,Macro(secretary,1100) exten => s-CONGESTION,1,Macro(secretary,1100) exten => _s-.,1,Hangup ;     . [default] ; Default context including all specials include => incoming include => multifon ;  default    ;     exten => _[123]X00,1,Macro(group-dial,${EXTEN}) exten => _1[1-689]XX,1,Macro(dial-ext,${EXTEN}) exten => _17XX,1,Macro(dial-vip,${EXTEN}) exten => _[2]XXX,1,Macro(dial-vip,${EXTEN}) exten => _[3]XXX,1,Macro(dial-ext,${EXTEN}) ;       . ;            : ;<a href="http://sbelikov.ru/2009/03/golosovoe-menyu-v-asterisk/">http://sbelikov.ru/2009/03/golosovoe-menyu-v-asterisk/</a> ;  ,          .       : <a href="http://www.ivrvoice.ru/">http://www.ivrvoice.ru/</a> ;      Asterisk : <a href="http://www.voip-info.org/wiki/view/Convert+WAV+audio+files+for+use+in+Asterisk">http://www.voip-info.org/wiki/view/Convert+WAV+audio+files+for+use+in+Asterisk</a> [incoming] exten => s,1,Goto(s-${CHANNEL(peername)},1) ;-,         .       . exten => s-sipcity,1,Answer() ;   exten => s-sipcity,2,Background(it-greet) ;     exten => s-sipcity,3,Background(advert) exten => s-sipcity,4,Background(it-route) exten => s-sipcity,n,Waitexten() exten => s-sipcity,n,Macro(group-dial,1100) exten => ,1,Answer() ; - exten => ,2,Macro(dial-vip,2001) ;      exten => _s-zebra,1,Answer() ;   exten => _s-zebra,2,Background(ru-greet) ;,   exten => _s-zebra,3,Background(advert) exten => _s-zebra,4,Background(ru-route) exten => _s-zebra,n,Waitexten() exten => _s-zebra,n,Macro(group-dial,1100) exten => s-eng,1,Answer() ;   exten => s-eng,2,Background(en-greet) ; - - exten => s-eng,3,Background(advert) exten => s-eng,4,Background(en-route) exten => s-eng,n,Waitexten() exten => s-eng,n,Background(en-route) exten => s-eng,n,Waitexten() exten => s-eng,n,Macro(group-dial,1100) exten => 5000,1,Answer() ;       IVR,     .  . exten => 5000,2,Background(ru-greet) exten => 5000,3,Background(advert) exten => 5000,4,Background(ru-route) exten => 5000,5,Waitexten() exten => 5000,6,Background(ru-route) exten => 5000,n,Waitexten() exten => 5000,n,Macro(group-dial,1100) ;   IVR   exten => 1,1,Macro(group-dial,1100) ;  “1”,     1100 exten => 2,1,Macro(group-dial,1200) exten => 3,1,Macro(group-dial,1300) exten => 4,1,Macro(group-dial,1400) exten => 5,1,Macro(group-dial,1500) exten => 6,1,Macro(group-dial,1100) exten => 9,1,Goto(s-sipcity,1) ;       -   exten => 0,1,Goto(s-eng,1) exten => _1[1-689]XX,1,Macro(dial-ext,${EXTEN}) ;   exten => _17XX,1,Macro(dial-vip,${EXTEN}) exten => _2XXX,1,Macro(dial-vip,${EXTEN}) exten => _3XXX,1,Macro(dial-ext,${EXTEN}) exten => i,1,Goto(s-zebra,4) ;    exten => t,1,Goto(s-zebra,4) ; –   ;       [zebra] ;   “”,       e164. ..   ,   “+”. : 74951234567. exten => _99ZXXXXXX,1,Dial(SIP/zebra/7495${EXTEN:2}) ;          495. “99” –  “    ”, ZXXXXXX –   7-  ,        1.      zebra       7495,      “99”    Asterisk . ;  .   ,   ,    . ;############################# ; International ;############################# ;Italy exten => _9939.,1,Dial(SIP/zebra/${EXTEN:2}) exten => _99+39.,1,Dial(SIP/zebra/${EXTEN:3}) ;   ,       ,    .      SIP  .      rewrite,        . ;Belorussia exten => _9937517XXXXXXX,1,Dial(SIP/zebra/${EXTEN:2}) exten => _99+37517XXXXXXX,1,Dial(SIP/zebra/${EXTEN:3}) ;Kazakhstan exten => _997727XXXXXXX,1,Dial(SIP/zebra/${EXTEN:2}) exten => _99+7727XXXXXXX,1,Dial(SIP/zebra/${EXTEN:3}) ;Ukraine exten => _99380XXXXXXXXX,1,Dial(SIP/zebra/${EXTEN:2}) exten => _99+380XXXXXXXXX,1,Dial(SIP/zebra/${EXTEN:2}) ;############################# ; cellular ;############################# exten => _99790[3-9]XXXXXXX,1,Dial(SIP/zebra/${EXTEN:2}) exten => _99791[0-79]XXXXXXX,1,Dial(SIP/zebra/${EXTEN:2}) exten => _99792[569]XXXXXXX,1,Dial(SIP/zebra/${EXTEN:2}) exten => _997930XXXXXXX,1,Dial(SIP/zebra/${EXTEN:2}) exten => _99793[1-4678]XXXXXXX,1,Dial(SIP/zebra/${EXTEN:2}) exten => _99795[0-3]XXXXXXX,1,Dial(SIP/zebra/${EXTEN:2}) exten => _99796[0-578]XXXXXXX,1,Dial(SIP/zebra/${EXTEN:2}) exten => _99798[0-5789]XXXXXXX,1,Dial(SIP/zebra/${EXTEN:2}) exten => _997997XXXXXXX,1,Dial(SIP/zebra/${EXTEN:2}) ;############################# ; cities starting at 3 ;############################# exten => _99730[12]XXXXXXX,1,Dial(SIP/zebra/${EXTEN:2}) exten => _99734[1-35-79]XXXXXXX,1,Dial(SIP/zebra/${EXTEN:2}) exten => _99735[1-3]XXXXXXX,1,Dial(SIP/zebra-out/${EXTEN:2}) exten => _99738[1-5]XXXXXXX,1,Dial(SIP/zebra/${EXTEN:2}) exten => _997388XXXXXXX,1,Dial(SIP/zebra/${EXTEN:2}) exten => _99739[01]XXXXXXX,1,Dial(SIP/zebra/${EXTEN:2}) exten => _99739[45]XXXXXXX,1,Dial(SIP/zebra/${EXTEN:2}) ;############################# ; cities starting at 4 ;############################# exten => _997401XXXXXXX,1,Dial(SIP/zebra/${EXTEN:2}) exten => _99741[1356]XXXXXXX,1,Dial(SIP/zebra/${EXTEN:2}) exten => _99742[13467]XXXXXXX,1,Dial(SIP/zebra/${EXTEN:2}) exten => _99747[1-5]XXXXXXX,1,Dial(SIP/zebra/${EXTEN:2}) exten => _99748[1-7]XXXXXXX,1,Dial(SIP/zebra/${EXTEN:2}) exten => _99749[1-689]XXXXXXX,1,Dial(SIP/zebra/${EXTEN:2}) ;############################# ; cities starting at 8 ;############################# exten => _99781[1-8]XXXXXXX,1,Dial(SIP/zebra/${EXTEN:2}) exten => _997820XXXXXXX,1,Dial(SIP/zebra/${EXTEN:2}) exten => _997821XXXXXXX,1,Dial(SIP/zebra/${EXTEN:2}) exten => _99783[13-6]XXXXXXX,1,Dial(SIP/zebra/${EXTEN:2}) exten => _99784[0-8]XXXXXXX,1,Dial(SIP/zebra/${EXTEN:2}) exten => _99785[15]XXXXXXX,1,Dial(SIP/zebra/${EXTEN:2}) exten => _99786[1-35-7]XXXXXXX,1,Dial(SIP/zebra/${EXTEN:2}) exten => _99787[1-37-9]XXXXXXX,1,Dial(SIP/zebra/${EXTEN:2}) 


6日目:nano Voicemail.conf、nano queues.conf

ボイスメールを添付します。

実際、ここでもほとんど何も変更されておらず、どの変更が非常に具体的であるため、構成を広めることにも意味がありません。 私にとっての主な問題は、非標準のポートとsmtp認証を使用してメールを送信するようにMTAを設定することでした。 喫煙フォーラムで半日殺した後、私はついにEximをインストールし、それを通してメール転送をセットアップしました。
私が注意を向けたい2つのポイント-私の音声メッセージは、送信直後にアスタリスクで殺されます。 ネジを詰まらせないように。 このようなメッセージの関連性は数分で測定されるため、ユーザーにボイスメールボックスをたどらせることも愚かに思えます。 さらに、メッセージにwav49形式を設定しました。 ファイルをmp3に圧縮するのが面倒で、メーラーではマルチメディアアプリケーションでは厳しいルールが非人道的です-すべてのmp3はmp3の形式のSpectrum "Exolon"に置き換えられます。

queues.confでも、すべてが簡単です。
 [general] persistentmembers = yes ; ,     autofill = yes ;   autopause = no ;   ,   -  monitor-type = MixMonitor ;   [1100] ;  strategy = ringall ;   –    eventwhencalled = yes ;     Fop2 ringinuse = no ;   timeout = 20 ; retry = 1 ;     1  wrapuptime = 0 ;       () maxlen = 0 ;     . 0= ; –     member => SIP/2222 member => SIP/1101 member => SIP/1102 member => SIP/1103 member => SIP/1104 member => SIP/1105 member => SIP/1106 member => SIP/1107 member => SIP/1108 member => SIP/1109 member => SIP/1110 


7日目:あとがき

まず、私自身の間違いとそのような決定の明らかな欠点に注目したいと思います。
-エラー:従来のヘッドセットのバッグがユーザー用に購入され、SkypeまたはTSを介した通信に自宅で使用されています。 これは完全に不適切なオフィスソリューションです。 ヘッドセットを耳に刺したまま一日中座っているのは、普通の人にとって非常に疲れる。 プロのカメラヘッドセットは、オービットチケットのようなものです。 さらに、女性チームはヘッドバンド付きヘッドセット(「ヘアスタイルがあります!」)を受け入れません。 解決策は、予算の良い人向けのUSBハンドセットまたはSIPデスクトップ電話です。
-エラー:ノミを捕まえるには急ぎが必要です。 アスタリスクが何であり、何と一緒に食べられるのかわからない場合は、今すぐ勉強を始めた方が良いでしょう。 注意深く勉強してください。 というのも、この知識は必要であり、いつものように、「昨日準備ができたように」という言葉で。 Asteriskをインストールする必要があるというのは事実ではありませんが、VoIPおよびダイヤルプラン構築の一般的な理論は非常に役立ちます。 私たちのオフィスセンターの電話会社の独占者との厳しい対立のために、私は外出先ですべてを設定して習得するために文字通りペースを「発射」しなければなりませんでした。
-信頼性。 アスタリスクのセットアッププロセスの後に白髪が成長するまで、PBXを常に監視します。 私はすべてを正しく行ったかどうかまだ分からない。 何度か彼女は理由もなく私のクライアントにサービスを提供しなくなりました、そして今私は彼女を無人で去ることを恐れています。
-ファックスはありません。 より正確には、彼らはそこにいるように見えますが、純粋にショーのためです。 鉄板を使用しないと、通常のファックス送信は非常に難しくなります。
-不当な通話品質。 どんな広いチャンネルに座っていても、とにかくうらやましい不変の状態で、あなたは「ゴロゴロ接続」のクレームを受け取ります。 技術の急速な発展とデータ伝送チャネルの拡大にもかかわらず、問題は依然として定期的に発生しています。 最も単純な例:イタリアの小さなホテルで、会社の代表者がいます。 ホテルは256Mのアップリンクで2MビットのADSLインターネットを使用しました。これはWiFi経由でゲストに無料で配信されます。 担当者はこのチャネルを使用してオフィスに連絡しますが、接続は不快です。 ホテルの誰かがクラスメートに12メガピクセルの写真を投稿することを決めたということです。 いつものこと。
-予算がそれほど大きくなく、デスクトップ電話に十分でない場合、ユーザーはZoiperやPhonerLiteなどのソフトウェアダイヤラーを使用して、電話を操作する新しい方法を学習する必要があります。 さらに、* 77をダイヤルして通話を転送することも煩わしく、レバーを短く押すだけで「以前と同じように」なりたいと思っています。
-また、私のユーザーは、「旧式の方法」810(国コード)(都市コード)(電話)ではなくe164形式で番号をダイヤルする必要があることに悩まされています。 810も残すことができますが、この場合、通常のイタリアのホテルの数は、宇宙の長さ998103912345678901になります。e164では、3桁短くなります。

一般に、問題の大部分は、変化の時代に生きようとするユーザーの不本意によって引き起こされます。 うなり声から率直な妨害行為まで。 ユーザーの苦情のページを数ページリストできましたが、それは難しいトピックです。 この場合に推奨できる唯一のことは、アスタリスクへの移動を慎重に計画することです。 ユーザーにとって可能な限り不便なものにしてください。 すべてが適切に計画されていれば、古い方法で動作する可能性のある新しいことを学ぶために人々の有給の時間を費やすことは、ビジネスにとって有益ではありません。

今、ソリューションの長所:
+最初で最も明白なのはお金です。 通信コストを約15倍削減できました。 以前は、電話の平均請求額は月に約5,000ドルでした。 アスタリスクの導入後の1か月間で、300ドルも実行されませんでした。 節約の大部分は、さまざまな国の従業員間の会話です。
+モビリティ。 突然何かが起こった場合、それはまったく問題ではありません-新しいモスクワの停電でも、建物の火災でも-インポート方法を知っているホスティングでアスタリスクを使用して仮想マシンをピックアップし、クライアントに新しいIP PBXを通知します。 通常の電話での電話通信が利用できない時間を想像してみてください。
+ソリューションの単純な柔軟性とほぼ完全な無料。 もちろん、すぐに使えるソリューションでお金を節約して時間を費やしていますが、私は個人的にそれがどのように機能するかを知りたいと思っていました。

何度か質問したところ、ここに回答していなかった場合、コメントに表示されていたと思われる質問が1つあります。「Elastix、FreePBX、PiaFなどを入れなかったのはなぜですか。 それはセットアップされ、ロードマップで10分で長年にわたって機能します!」答えは簡単です。Webフェイスの背後に森は見えません。 はい、これは便利ですが、Webマズルの機能を克服するには、非標準の構成を編集する必要があります。1つのコンマですべてを壊してしまう危険があります。 そして、1年後に何が必要になるか想像もできません。 さらに、Webフェイスを使用すると、その機能と仕組みがわからなくなります。 したがって、純粋なアスタリスク、コムソモールのメンバーは困難なくしてはなりません。

現在、このような構成のアスタリスクは非常に良好に機能します。 奇妙な都市のPBXを呼び出すときのエコーや、一部の内蔵サウンドカードの嫌な作業(予算のあるマザーボードの人気のあるメーカーの1つ)といった迷惑なささいなこともありますが、これは日常的な問題です-Zoiper FreeにぴったりのUSBチューブによって解決されます。
一般に、私と私のリーダーシップは、行われた仕事に満足しています。 ファイルを操作するだけで、次のプロジェクトを開始できます。

完全な幸福のために、他に何が完了するのか。
ユーザーがどの従業員がどのような状態にあるかを見ることができるようにFop2を設定および構成します。これにより、通話が忙しい加入者に転送されるとき、通話が自動的にグループに転送されるとき、人が望む場所に着かないときに状況が発生しません
電話交換、通話、およびキューのステータスをリアルタイムで監視するために、監視システムを配置します。
いくつかの非常に単純なコールレポートシステムを配置します。 タスクは、アカウントを検証するための呼び出しの数を明確に視覚化することのみです。

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


All Articles