アスタリスクのメモ。 勤務スケジュールを作成します...

「私たちは、着信コールを公平に配信することにしました」と経営陣は言いました。「毎月、コールはマネージャへの異なるルートに行きます。 1か月前にスケジュールします。」
そのため、月に一度、確立されたスキームに従ってアスタリスクダイヤルプラン全体をシャベルでシャベルする必要があります。 非常に満足しています...
以前の仕組み。

すべての着信コールは秘書によって受信され、次のようなマネージャーに転送されます。
exten => 555.1、ダイヤル(SIP / 22&SIP / 23&SIP / 24&SIP / 25)

つまり 同時に、すべてのデバイスが鳴り始めます。 誰が最初に携帯電話をつかんだか-「それとスリッパ」。
しかし、このスキームは好まれなくなりました。 ランダムな優先度分布をリクエストしました。 まあ、質問はありません:

exten => 555.1、Set(variant = $ [RAND(1,5)])
exten => 555、n、Goto(n($ {variant})
exten => 555、n(1)、ダイヤル(SIP / 22)
...

この設計はほぼ数ヶ月間続き、誰も不満を言いませんでした。 それはちょうど販売シーズンが落ち着き始めた...コールの順序を変更することにしました。 月曜日のように、最初の22、次に25、次に23など。
GotoIFTime型の構築に頼り、曜日に従ってシーケンスをグループにスローする必要がありました。
その結果、2か月間、すべてが順調でした。
そして今、彼らは毎月のスケジュールを立てることにしました! さて、手順を簡素化します。

解決策。

まず、MySQLデータベースに次の形式のプレートを作成しました:Dat(月の日付)およびvariant(マネージャーのsip番号のシーケンスをリストする行)。 「12.10.2011」〜「2324252122」のようなものでした
さらに、被害を受けないようにするために、今日のこのテーブルからエントリを返すビューを作成しました。

作成
ビュー `view_grafik`
として
SELECTバリアントFROM grafik_work WHERE dat = CURDATE();

残った単なる些細なこと:

exten => s、n、MYSQL(接続uid localhostアスタリスク12345678アスタリスク)
exten => s、n、MYSQL(クエリ結果$ {uid} view_grafikから `variant`を選択)
exten => s、n、MYSQL(行$ {result}バリアントをフェッチ)
exten => s、n、NoOp(-$ {row}-$ {variant})
exten => s、n、MYSQL(切断$ {uid})

つまり、出力では変数$ {variant}でシーケンス自体を取得します。 変数の「空」を確認することを忘れないでください、呼び出しに行きます:
exten => s、n、Set(count = 0)
exten => s、n、While($ [$ {count} <= 5])
exten => s、n、Set(begin = $ [$ {count} * 2]}
exten => s、n、Set(nomer = $ {variant:$ [$ {begin}]:2})
exten => s、n、Dial(SIP / $ {nomer})
exten => s、n、Set(count = $ [$ {count} +1])
exten => s、n、EndWhile()

それだけです! その日までにWebインターフェースに入力する必要があります。
ところで。
解決する際に興味深い問題に直面しました。 構造に注意してください: $ {variant:$ [$ {begin}]:2}。
それはもともと異なる種類のものでした$ {variant:$ {begin}:2} 、しかし...私はこれを得ました:
232425
2425
25
つまり 正しいようですが、行は2桁で構成されていません。 しかし、正方形の引用符が導入されて初めて、すべてが正しく機能し始めました。

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


All Articles