Tutorial Asterisk VI
15/07/08 09:49
Pattern Matching/Pencocokan pola
Sebelumnya, kita harus menuliskan extension terpisah untuk setiap telepon. Karena sistem terus bertambah, maka penulisan extension akan semakin besar dan pencarian kesalahan akan lebih sulit. Sebagai contoh, misalkan kita memerlukan nomor 100 sampai 109 untuk memainkan file suara “hello world”. Extensions.conf kita akan tampak seperti berikut:
[general] [hello-world] exten => 100,1,Answer() exten => 100,2,Playback(hello-world) exten => 100,3,Hangup() exten => 101,1,Answer() exten => 101,2,Playback(hello-world) exten => 101,3,Hangup() exten => 102,1,Answer() exten => 102,2,Playback(hello-world) exten => 102,3,Hangup() exten => 103,1,Answer() exten => 103,2,Playback(hello-world) exten => 103,3,Hangup() exten => 104,1,Answer() exten => 104,2,Playback(hello-world) exten => 104,3,Hangup() exten => 105,1,Answer() exten => 105,2,Playback(hello-world) exten => 105,3,Hangup() exten => 106,1,Answer() exten => 106,2,Playback(hello-world) exten => 106,3,Hangup() exten => 107,1,Answer() exten => 107,2,Playback(hello-world) exten => 107,3,Hangup() exten => 108,1,Answer() exten => 108,2,Playback(hello-world) exten => 108,3,Hangup() exten => 109,1,Answer() exten => 109,2,Playback(hello-world) exten => 109,3,Hangup()
Jika kita menggunakan sebuah pattern (pola), dialplan yang sama akan menjadi lebih ringkas dan baik seperti berikut:
[general] [hello-world] exten => _10X,1,Answer() exten => _10X,2,Playback(hello-world) exten => _10X,3,Hangup()
Extension ‘_10X’ menunjukkan nomor antara 100 sampai 109.
Penulisan
Pola Dialplan selalu dimulai dengan karakter garisbawah (_):
exten => _Pola,Prioritas,Aplikasi
Pola dialplan Asterisk dapat berupa elemen sebagai berikut:
[abc]
digit a, b dan c. Contoh, untuk pencocokan dengan angka 34, 37, dan 38:
exten => _3[478],1,NoOp(Test)
[a-b]
Sembarang digit dalam jangkauan a sampai b. Contoh, untuk pencocokan dengan nomor antara 31 dan 35:
exten => _3[1-5],1,NoOp(Test)
(contoh: [25-8] juga bisa digunakan untuk digit 2,5,6,7,8)
X
Sembarang digit dari 0 sampai 9. Contoh, untuk pencocokan antara nomor 300 dan 399:
exten => _3XX,1,NoOp(Test)
Z
Sembarang digit dari 1 sampai 9. Contoh, untuk pencocokan antara nomor 31 sampai 39:
exten => _3Z,1,NoOp(Test)
N
Sembarang digit antara 2 sampai 9. Contoh, untuk pencocokan antara nomor 32 dan 39:
exten => _3N,1,NoOp(Test)
.
Sembarang nomor digit apa saja. Contoh, untuk pencocokan dengan semua angka dimulai dengan 011:
exten => _011.,1,NoOp(Test)
Jangan gunakan pola ‘_.’ , Pola ini juga akan memasukkan ekstensi khusus seperti i, t dan h. Gunakan _X. atau _X jika anda memperluas pencocokan pola
jika tidak bermakna ganda, karakter khusus ‘wildcard’ akan cocok dengan nomor yang dipanggil segera; Contoh, ketika nomor ditekan, nomor itu tidak langsung cocok dengan extesion dalam context (karena bisa terdapat dua kecocokan atau lebih). ketika diteruskan menekan dan jika hanya terdapat sebuah kecocokan (tidak bermakna ganda), nomor akan diambil dan dipanggil.
Urutan pencocokan pola
Pemanfaatan pencocokan pola dalam dialplan Asterisk, disamping sangat membantu tetapi juga sedikit tricky. Sangat mudah untuk memahami Asterisk dialplan dengan urutannya; dan pada kasus umumnya, Asterisk melakukan prioritas berdasarkan pola dengan kualitas kecocokannya.
Alasan sederhananya: lebih dari satu pola mungkin akan sesuai dengan nomor panggilan. Jika ada dua extension yang cocok dengan nomor yang dipanggil, Asterisk akan selalu memilih yang paling cocok. Sebelum menentukan extension mana yang paling cocok, Asterisk akan memproses semua context.
Sebagai contoh:
[produksi] exten => _12X.,1,NoOp(12X) exten => 12345,1,NoOp(12345) exten => _1234.,1,NoOp(1234.)
Dari contoh di atas, ketika kita menekan ‘12345‘′, kita belum pasti, extension mana yang akan dijalankan. Untuk mencari tahu, kita gunakan dialplan show 12345@produksi:
*CLI> dialplan show 12345@produksi [ Context 'produksi' created by 'pbx_config' ] '12345' => 1. NoOp(12345)) [pbx_config] '_1234.' => 1. NoOp(1234.)() [pbx_config] '_12X.' => 1. NoOp{12X)() [pbx_config] -= 3 extensions (3 priorities) in 1 context. =- *CLI>
Asterisk akan menampilkan semua extension dengan pola yang akan cocok dengan 12345, tetapi menampilkan 12345,1,NoOP(12345) dengan prioritas pertama. Ekstension dengan prioritas tertinggi selalu ditampilkan di atas.
Mari kita coba dengan ‘12346‘′ menggunakan perintah dialplan show 12346@produksi:
*CLI> dialplan show 12346@produksi [ Context 'produksi' created by 'pbx_config' ] '_1234.' => 1. NoOp{1234.)() [pbx_config] '_12X.' => 1. NoOp{12X)() [pbx_config] -= 2 extensions (2 priorities) in 1 context. =- *CLI>
Sekali lagi, pola yang paling cocok dengan digit yang dipanggil akan ditampilkan paling atas.
dikirim oleh: M. Zudha Ghofur
Artikel Terkait
Install Asterisk 1.2 + oh323 pada server 64 Bit untuk interkoneksi dengan PBX SiemenTutorial Asterisk II
Tutorial Asterisk IV