Navbat

(Queue) Kiruvchi qo'ng'iroqlarni operatorlar o'rtasida navbat asosida taqsimlash

Bu nima?

Navbat (Queue) — kiruvchi qo'ng'iroqlarni bir yoki bir nechta operator o'rtasida avtomatik taqsimlash uchun mo'ljallangan modul. Agar barcha operatorlar band bo'lsa, mijoz muzika eshitib kutadi; operator bo'shaganda qo'ng'iroq unga yo'naltiriladi.


Ajratilgan raqamlar


Maydonlar

Nomititle
Navbatning nomi. Masalan: Savdo bo'limi, Texnik yordam
Kutish musiqasiaudio
Mijoz kutayotgan vaqtda eshitadigan musiqa (MOH). Agar tanlanmasa — standart musiqa ijro etiladi.
Operatorlarusers
Navbatga tegishli operatorlar ro'yxati. Har bir operator ichki raqami bilan ko'rsatiladi (masalan, 101, 102). Tashqi trunk orqali yo'naltirish uchun mobil_raqam@trunk_nomi formatida ham kiritish mumkin.
Strategiyatype
Operatorlarga qo'ng'iroq taqsimlash tartibi. Quyida batafsil.
Javob vaqti (s)ring_time
Har bir operator uchun kutish vaqti (soniyada). Shu vaqt ichida javob bermasa — navbat boshqacha harakat qiladi (strategiyaga qarab).
Band bo'lsa ham chaqirring_in_use
Yoqilgan bo'lsa — allaqachon qo'ng'iroqda bo'lgan operator ham chaqiriladi.
Boshlang'ich kechikish (s)delay
Birinchi operator chaqirishdan oldin kutish vaqti (soniyada). Odatda 0.
Pozitsiyani e'lon qilishsay_position
Mijozga navbatdagi o'rnini ovozli e'lon qilish tili: O'zbek, Rus yoki Ingliz.
Faqat o'zgarganda e'lon qilsay_when_change
Yoqilgan bo'lsa — pozitsiya faqat o'zgarganda e'lon qilinadi. O'chirilgan bo'lsa — belgilangan vaqt oraliqlarda takrorlanadi.
E'lon qilish davomiyligi (s)say_freq
Pozitsiyani necha soniyada bir marta e'lon qilish. Faqat Faqat o'zgarganda o'chirilganda ishlaydi.
Hammasi offline bo'lsa o'tkazib yuborskip_if_offline
Yoqilgan bo'lsa — barcha operatorlar offline bo'lsa, mijoz navbatda kutmaydi va darhol Chiqish moduliga yo'naltiriladi.
Hammasi band bo'lsa o'tkazib yuborskip_if_in_use
Yoqilgan bo'lsa — barcha operatorlar band bo'lsa, mijoz navbatda kutmaydi va darhol Chiqish moduliga yo'naltiriladi.
Chiqishoutput
Navbat tugaganda (timeout, barcha operatorlar javob bermasa yoki skip shartlari bajarilsa) qo'ng'iroq qaysi modulga o'tadi.

Strategiyalar

Navbat qaysi operatorni qachon chaqirishini strategiya belgilaydi.

1. Hammasi bir vaqtda (Ring All)

Barcha bo'sh operatorlar bir vaqtda chaqiriladi. Birinchi javob bergan operator qo'ng'iroqni oladi. Tezkor javob uchun mos.

Operator 101 ──┐
Operator 102 ──┼── hammasi bir vaqtda jiringlaydi
Operator 103 ──┘

2. Navbatma-navbat (Linear)

Operatorlar ro'yxat tartibida ketma-ket chaqiriladi. Birinchisi javob bermasa — ikkinchisi chaqiriladi va h.k. Navbatdan chiqib ketmaguncha ro'yxat boshidan qaytariladi.

1-urinish: Operator 101 → javob yo'q
2-urinish: Operator 102 → javob yo'q
3-urinish: Operator 103 → JAVOB BERDI ✓

3. Eng kam chaqirilgan (Least Recent)

So'nggi qo'ng'iroqdan keyin eng ko'p vaqt o'tgan operator chaqiriladi. Yukni bir tekis taqsimlash uchun mos.

Operator 101 — oxirgi qo'ng'iroq: 5 daqiqa oldin
Operator 102 — oxirgi qo'ng'iroq: 2 daqiqa oldin  ← eng yaqin
Operator 103 — oxirgi qo'ng'iroq: 8 daqiqa oldin  ← birinchi chaqiriladi ✓

4. Tasodifiy (Random)

Bo'sh operatorlardan tasodifiy biri tanlanadi. Oddiy yuk taqsimlash uchun mos.


Qanday ishlaydi?

Mijoz qo'ng'iroq qildi
        │
        ▼
Navbat moduli ishga tushdi
        │
        ├─► Barcha operatorlar offline? ──► skip_if_offline ──► Chiqish
        │
        ├─► Barcha operatorlar band?    ──► skip_if_in_use  ──► Chiqish
        │
        ▼
Mijoz musiqa eshita boshlaydi (MOH)
Pozitsiyasi e'lon qilinadi
        │
        ▼
Strategiya bo'yicha operator(lar) chaqiriladi
        │
        ├─► Operator javob berdi ──► Qo'ng'iroq ulandi ✓
        │
        └─► Javob yo'q / band ──► Keyingi operator → ... → Chiqish

Tashqi trunk orqali yo'naltirish

Operatorlar ro'yxatiga mobil yoki tashqi raqamni ham qo'shish mumkin. Buning uchun raqam@trunk_nomi formatidan foydalaniladi.


Eslatmalar

  • Bir tizimda 200 tagacha navbat yaratish mumkin.
  • Operatorlar ro'yxati bo'sh bo'lsa — navbat darhol Chiqish ga yo'naltiradi.
  • Javob vaqti navbat umumiy timeoutiga emas, har bir urinishga tegishli.
  • Hammasi offline bo'lsa o'tkazib yubor va Hammasi band bo'lsa o'tkazib yubor bayroqlari birgalikda ishlatilishi mumkin.