アスタリスク:BLFキーのDNDモード

アスタリスクを上司とその秘書のニーズに適合させる一環として、BLF(ビジーランプフィールド)キーのDNDモード(「邪魔しない」-「邪魔しない」)の表示に戸惑いました。 Habréには対応する投稿がありました(また、コメントには代替方法への便利なリンクもありました)。



「DnDはかなり要求の厳しい機能ですが、通常はアスタリスクに通知せずに電話自体でモードがオンになります。そのため、ユーザーの電話に戻り、所定の位置にあり、通話に応答する準備ができていると考えます。 アスタリスク自体でDnDモードを有効にし、DnDがアクティブになったときに電源ボタンが赤く点滅するようにするにはどうすればよいですか?”© xtelekom



ただし、うまくいかなかったため、BLFでDNDを使用し始めました。



1.一見、最初の方法は複雑に見えます。 詳細な説明なしに学校でコードを使用することは困難ですが、本番では怖いです。 さらなる調査が示しているように、より少ないコードで実行できます。

2.赤色のライトが点滅しないようにします(加入者が呼び出され、電話を取りません、たぶん通話を傍受する必要がありますか?)、そして常に点灯します(加入者がビジーです)。

3. 2番目の方法では、DNDの現在のステータスをチェックすると常にtrue



が返されました。 当然、メソッドは機能しませんでした。

4.加入者でDNDを示す問題。 さて、電話にDNDの削除/インストール時にダイヤルする機能がある場合。 私のキタフォンではそのような可能性はなく、DNDボタン自体は驚くほど不便です。これは電話の背面にあるトグルスイッチです。 もちろん、多機能キーにDND(ダイアル、* 76など)をぶら下げても問題はありません。また、隣接するMFキーの番号にヒントを示します。 ただし、すべてのDND機能(スイッチングと表示の両方)が1つのキー上にある場合は論理的です。 DNDを有効にするには、加入者が自分の番号をダイヤルすると、観察された番号とダイヤルされた番号が一致するという結論に達しました。これは必要です。



ドーピングの過程で、この手法は非常に大きく進化したため、作業の結果を共有することにしました。 結果を最も理解しやすくし、可能であればコメントを付けようとしました。



したがって、アスタリスク1.8.18.0があり、サブスクライバーは既にそこにいて、BLF機能を使用しています。



まず、同僚の作業を使用し、少し修正した形式でセットにDNDを実装します* 76。 次のコンテキストをダイヤルプランに追加します。

 [dnd-on-off] exten => *76,1,Answer ;     DND? exten => *76,n,GotoIf($["${DB(DND/${CALLERID(number)})}" = ""]?activate:deactivate) ;  DND  —  exten => *76,n(activate),Set(STATE=BUSY) ;   "" (  hint) exten => *76,n,Set(DEVICE_STATE(Custom:DND${CALLERID(number)})=${STATE}) ;       DND exten => *76,n,Set(DB(DND/${CALLERID(number)})=1) exten => *76,n,Hangup ;;;   DND  —  exten => *76,n(deactivate),Set(STATE=NOT_INUSE) ;   "" (  hint) exten => *76,n,Set(DEVICE_STATE(Custom:DND${CALLERID(number)})=${STATE}) ;       DND exten => *76,n,Set(DB(DND/${CALLERID(number)})=) exten => *76,n,Hangup
      
      





次に、番号をダイヤルして、DNDを含むコンテキストを追加します。

 [dnd-on-off-2] ;     - ? exten => _7XXX,1,GotoIf($["${CALLERID(number)}" = "${EXTEN}"]?godnd:gonext) ;   -   DND exten => _7XXX,n(godnd),Goto(dnd-on-off,*76,1) ;   -      (       10) exten => _7XXX,n(gonext),Goto(10)
      
      





次に、アスタリスクに着信側のステータスを確認するように指示し、DNDモードが検出されたら電話を切ります。 これを行うには、加入者を呼び出す直前に行を追加します。

 ;  ,        DND exten => _7XXX,n,GotoIf($["${DB(DND/${EXTEN})}" = "1"]?gooff) exten => _7XXX,n,Dial(SIP/${EXTEN},20,Tt) exten => _7XXX,n(gooff),Hangup()
      
      





必要に応じて、新しいコンテキストを利用することは残ります。

 ;  ,       SIP- [outcoming-sip] ;;; : / DND     include => dnd-on-off-2 ;;;     "exten => _X.,1,Goto(10)" include => goto10 ;;; : / DND   *76 include => dnd-on-off ;;;   SIP- (     10) include => sip-phones
      
      





保存して、 asterisk -rx "dialplan reload"



ます。



その後、お気に入りの多機能キーを電話機のBLFモードに転送し、サブスクライバーのヒントを割り当てます。 ピックアップコードは指定されていないため、必要ありません。 もちろん、それはすべて電話機に依存します(私はFlying Voice IP-622を持っています)。



これで、Do Not Disturbキーを押すと、加入者へのコールが受信されなくなり、キー自体が赤く点灯し、秘書のチーフボタンが赤く点灯し、ミッションが完了します。



PS Flying Voice IP622電話に特別な感謝を表明したいのですが、これは古いファームウェアでは少し不適切に動作し、更新中に少しさびたものになりましたが、今ではよくできています。 機能は豊富で、サポートは勤勉で、ファームウェアインターフェイスv1.4とv3はほぼ同じです。 その価格は単に豪華です。



All Articles