Mengehadkan panggilan dengan DIDs untuk pengguna FreePBX, dengan parameter boleh dikonfigurasikan dinamik (Repost)

Jadi, kami menghadapi cabaran ini oleh pelanggan kami untuk melakukan ini kerana mereka menggunakan PRI dan menyokong berbilang pelanggan. Setiap pelanggan perlu terhad kepada n bilangan saluran pada PRI. Apabila mereka menggunakan analog yang mudah sahaja, ia adalah garis fizikal, jadi tiada banyak yang boleh anda lakukan tentang "mengehadkan" ia adalah terhad oleh reka bentuk! Panduan berikut membolehkan anda mengehadkan panggilan berdasarkan

  • Satu tunggal DID
  • Satu kumpulan DIDs (dalam panduan ini jumlah DIDs setiap kumpulan adalah terhad kepada 5, tambah lagi, tambah baik mengikut kehendak anda)
  • Kumpulan DIDs akan menjadi makna kesatuan, jika anda mempunyai DID1 dan DID2 dengan had 3 panggilan, pada satu-satu masa sama ada panggilan datang

kepada mereka DIDs ditambah dan jika melebihi 3, ia akan ditutup.

mage Sumber: http://appcrawlr.com/android-apps/best-apps-restrict-access Sumber gambar: http://appcrawlr.com/android-apps/best-apps-restrict-access

Bagaimanapun, berikut ialah cara cepat untuk memberi anda idea bagaimana untuk melakukannya. Perbaiki seperti yang anda lihat patut 🙂 Keperluan: (sistem saya) 1) FreePBX 2.10 atau 2.11
2) Asterisk 1.8 atau lebih tinggi
3) Dahdi berasaskan PRI atau SIP atau hampir semua perkara dengan menggunakan pengisytiharan yang betul (pembolehubah)
4) Gunakan MySQL
5) Debian Wheezy
6) Pentadbir untuk menjalankan beberapa tugas MySQL seperti mencipta db/jadual, menyunting nilai di dalamnya dan lain-lain... Jadi begini caranya:

  1. Cipta pangkalan data di dalam MySQL yang dipanggil LIMITER
  2. Gunakan pentadbir dan tampal kod berikut untuk menggunakan ciri "SQL Command".
    GUNAKAN `LIMITER`;
    BUAT JADUAL `tbl_didlimiter` (
    `kumpulan` int(255) BUKAN NULL AUTO_INCREMENT,
    `data` varchar(100) LALAI NULL,
    KUNCI UTAMA (`kumpulan`)
    ) ENJIN=CHARSET LALAI MyISAM=latin1;
  3. Sekarang, kami akan mencipta pengguna super pengguna dengan kata laluan dbgod00, tampal kod berikut dalam Perintah SQL sekali lagi
    BUAT PENGGUNA 'superuser'@'localhost' DIKENALPASTI OLEH 'dbgod00';
    BERIKAN SEMUA KEISTIMEWAAN PADA PENGHAD.* KEPADA 'superuser'@'localhost';
    PRIVILEG FLUSH;
  4. Sekarang, kami mengedit pelan dail, bahagian yang paling penting! Memandangkan saya menggunakan FreePBX, kami menggunakan _custom.conf untuk menambah hacks baharu. Jadi itulah yang kami lakukan di sini, salin dan tampal kod ke dalam extensions_custom.conf, seperti di bawah #nano /etc/assterisk/extensions_custom.conf ;; DIAPLLAN MULA ;; ;; BACA SAYA DULU
    ;; copyleft [e-mel dilindungi]
    ;; 1 set trunks untuk menggunakan from-pstn, from-dahdi, from-zaptel ATAU from-trunk konteks
    ;; 2. Sorotan tebal mungkin perlu ditukar bergantung pada perkara yang anda lihat dalam
    ;; pembolehubah saluran, kebanyakan kes kita lihat sama ada EXTEN atau FROM_DID atau pun CALLERID(DNID)
    ;; 3. Pastikan nilai ini tersedia dan sepadan antara satu sama lain, dalam kes saya, nilainya
    ;; ${EXTEN} akhirnya sepadan dengan nilai ${CALLERID(DNID)} dan mereka mesti
    ;; 4. Ini hanya menyokong satu yang unik DID kemasukan dalam DB. JIKA terdapat banyak entri
    ;; secara tidak sengaja atau apa sahaja, ia akan memilih keputusan pertama yang kembali sahaja
    ;;
    ;; 5. Jangan ragu untuk menambah lebih banyak nombor G seperti yang ditunjukkan di bawah, sekarang hanya 5
    ;; 6. Maxdefault ditetapkan untuk global apabila tiada definisi DB ditemui untuk itu DID dan hadnya,
    ;; jika anda tidak mahu tetapan selimut, cuma tetapkan MAXDEFAULT kepada kosong (seperti lalai) jika anda ingin menetapkan global
    ;; had kemudian tetapkannya dengan MAXDEFAULT yang kemudiannya digunakan untuk semua DIDs tidak ditetapkan dalam DB.
    ;; Hanya bila
    terdapat nilai yang ditemui dalam DB maka had nilai DB mengatasi maxdefault [from-pstn-custom]
    exten => _X.,1,NoOp(Mengendalikan masuk untuk melakukan perkara yang menarik)
    sama => n, Set(GROUP()=${EXTEN})
    sama => n,Makro(didchoke) [makro-didchoke]
    exten => s,1,NoOp(Menyemak had masuk dan memohon jika perlu)
    exten => s,n,Set(MAXDEFAULT=””)
    exten => s,n,MYSQL(Sambung connid localhost superuser dbgod00 LIMITER)
    exten => s,n,MYSQL(Query resulted ${connid} SELECT data from tbl_didlimiter di mana data seperti '%${CALLERID(DNID)}%' HAD 1)
    exten => s,n,MYSQL(Fetch fetchid ${resulted} DBRESULT)
    exten => s,n,MYSQL(Kosongkan ${hasil})
    exten => s,n,MYSQL(Putuskan sambungan ${connid})
    exten => s,n,ExecIf($[“${DBRESULT}”=””]?Set(DBRESULT=${CALLERID(DNID)})
    exten => s,n,GotoIf($[“${DBRESULT}”=””]?pengecualian)
    ;
    exten => s,n,Set(GROUPLIMIT=${CUT(DBRESULT,:,2)})
    exten => s,n,ExecIf($[“${GROUPLIMIT}”=””]?Set(GROUPLIMIT=${MAXDEFAULT})
    exten => s,n,GotoIf($[“${GROUPLIMIT}”=””]?exception)
    ;
    exten => s,n,Set(DIDS=${CUT(DBRESULT,:,1)})
    exten => s,n,Set(DID1=${CUT(DIDS,,,1)})
    exten => s,n,Set(DID2=${CUT(DIDS,,,2)})
    exten => s,n,Set(DID3=${CUT(DIDS,,,3)})
    exten => s,n,Set(DID4=${CUT(DIDS,,,4)})
    exten => s,n,Set(DID5=${CUT(DIDS,,,5)})
    ;
    exten => s,n,ExecIf($[“${DID1}”!=””]?Set(G1=${GROUP_COUNT(${DID1})}))
    exten => s,n,ExecIf($[“${DID2}”!=””]?Set(G2=${GROUP_COUNT(${DID2})}))
    exten => s,n,ExecIf($[“${DID3}”!=””]?Set(G3=${GROUP_COUNT(${DID3})}))
    exten => s,n,ExecIf($[“${DID4}”!=””]?Set(G4=${GROUP_COUNT(${DID4})}))
    exten => s,n,ExecIf($[“${DID5}”!=””]?Set(G5=${GROUP_COUNT(${DID5})}))
    ;
    exten => s,n,ExecIf($[“${DID1}”=””]?Set(G1=0)
    exten => s,n,ExecIf($[“${DID2}”=””]?Set(G2=0)
    exten => s,n,ExecIf($[“${DID3}”=””]?Set(G3=0)
    exten => s,n,ExecIf($[“${DID4}”=””]?Set(G4=0)
    exten => s,n,ExecIf($[“${DID5}”=””]?Set(G5=0)
    ;
    exten => s,n,Set(TOTALGGROUPCHANS=$[${G1}+${G2}+${G3}+${G4}+${G5}])
    exten => s,n,NoOp(Jadi jumlah saluran di sini ialah ${TOTALGGROUPCHANS} daripada GROUPLIMIT sebanyak ${GROUPLIMIT})
    exten => s,n,GotoIf($[${TOTALGGROUPCHANS} > ${GROUPLIMIT}]?overlimit) exten => s,n,MacroExit()
    ;
    exten => s,n(overlimit),Sibuk(20)
    exten => s,n,Hangup(16)
    exten => s,n,MacroExit()
    ;
    exten => s,n(exception),MacroExit() ;; PELAN DAIL TAMAT ;;
  5. Sekarang, muat semula pelan dail asterisk, pastikan anda mengekori fail log untuk memulakan penyelesaian masalah jika perkara tidak berjalan dengan betul.
    #asterisk -rx "muat semula pelan dail"
  6. Sekarang, edit nilai DB dan tambah DIDSeperti tunjukkan dalam contoh di bawah, gunakan pentadbir atau yang serupa untuk penyuntingan yang mudah
    Cth 1 Format: DID1:3
    Lokasi DID1 ialah DID anda ingin mengehadkan kepada 3 saluran
    E.g. 2 Format: DID1,DID2,DID3,DID4,DID5:3
    Lokasi DID1-5 ialah DIDs anda ingin mengehadkan kepada 3 saluran digabungkan Berikut adalah data sampel daripada pelayan saya sendiri!
    gambar   

Jauhkan api, ujilah…! Seperti biasa, hargai maklum balas dan idea untuk menambah baik! Beritahu kami bagaimana ia berlaku untuk anda!