アスタリスク Dialplan Askozia 6.発信コール

この記事では、無料のPBX Askoziaバージョン6について説明します。 電話交換を開発するとき、最初のタスクの1つは発信通話の編成でした。

どうでしたか


古いバージョンのAskoziaでは、標準の「ダイヤルプラン」 テンプレートが使用されていました。


コンテキストの例を概略的に説明できます。

[outgoing] exten => _XXXXXX!,1,NoOp(Start outgoing calling...) same => n,Dial… 

このアプローチは十分に柔軟性がないように思われました。 次のルールを説明する方法はありません。


カットの下で、私たちのアプローチと開発の結果が説明されています。

現在の実装


REGEXを使用して 、この機能を異なる方法で実装することにしました。

テンプレートの例:

 79(25|26)[1-9]{7} 


REGEX関数の構文は次のとおりです。

 REGEX("regular expression" string) Return '1' on regular expression match or '0' otherwise 

Askozia 6での使用例:

 [outgoing] exten => _X!,1,NoOp(Start outgoing calling...) same => n,Ringing() same => n,ExecIf($["${REGEX("^[0-9]{6}$" ${EXTEN})}" == "1"]?Gosub(SIP-PR-1-out,${EXTEN},1)) same => n,ExecIf($["${REGEX("^(7|8)[0-9]{10}$" ${EXTEN})}" == "1"]?Gosub(SIP-PR-2-out,${EXTEN},1)) same => n,Hangup() 

発信コールの場合、1つのエントリポイントが編成されます-「 発信 」コンテキスト、「 ExecIf 」関数が呼び出されます。

 ExecIf($["${REGEX("^[0-9]{6}$" ${EXTEN})}" == "1"] 

変数「 $ {EXTEN} 」で指定された電話番号がパターンと一致する場合、「 Gosub 」機能を使用してコールがサブコンテキストにルーティングされます。

呼び出しがサブコンテキストで中断されなかった場合、セットは次の適切なルールに従って進みます。

このようにして、単一チャネル回線で問題を解決しました。 回線がビジーの場合、コールは応答されるまで次の回線を通過します。

コンテキストの例:

 [SIP-PR-1] exten => _X!,1,ExecIf($["${number}x" == "x"]?Hangup()) same => n,Dial(SIP/PR-1/${EXTEN},600,TeK)) same => n,ExecIf($["${DIALSTATUS}" = "ANSWER"]?Hangup()) same => n,return [SIP-PR-2] exten => _X!,1,ExecIf($["${number}x" == "x"]?Hangup()) same => n,Dial(SIP/PR-2/${EXTEN},600,TeK)) same => n,ExecIf($["${DIALSTATUS}" = "ANSWER"]?Hangup()) same => n,return 

sub 」では必須-コンテキストは「 DIALSTATUS 」をチェックします。 通話に応答すると、会話の後、「 ハングアップ() 」機能を使用してチャネルが終了します。 これが行われない場合、クライアントによるコールの終わりに、クライアント番号の再ダイヤルが発生する場合があります。

重要な微妙な点の1つは、「 Gosub 」または「 Goto 」を使用する場合、意図的に$ {EXTEN}を変更しないことです。 電話番号を変更する必要がある場合でも(プレフィックスの追加/削除)。

実際には、 EXTENが変更されると、アスタリスクはCDR変数(dst)の値を変更し、CDRコール履歴テーブルでの予測結果が不十分になります。 歴史上、従業員がダイヤルした番号を保持することが重要だと思います。

正規表現を記述するときは注意してください。 文字「 ^ 」、行の先頭、および「 $ 」-行の末尾を使用してください。そうしないと、予期しない結果が生じる場合があります。

たとえば、パターン「 [0-9] {6} 」は、6桁以上のすべての数字に対応します。 パターン「 ^ [0-9] {6} $ 」は、6桁の数字のみに一致します。

まとめ


PBXへのアウトバウンドルーティングを記述するための柔軟なサブシステムを得ました。
ルールのリストは次のように表示されます。

画像

特定の「ルール」カードの例:

画像

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


All Articles