Next Dial Plan

dalam proses konfigurasi sebuah sentral telepon apapun adalah konfigurasi dialplan. Konfigurasi dialplan asterisk terdapat pada file /etc/asterisk/extensions.conf.
Dialplan mengontrol apa yang harus dikerjakan jika ada call yang masuk atau call yang keluar. Dengan kata lain, dialplan mengontrol semua perilaku sambungan yang masuk / keluar dari sentral telepon kita.
extensions.conf di atur berdasarkan beberapa bagian / modul yang berisi definisi maupun settingan parameter secara statik, dalam menjalankan komponen dialplan maka bagian / modul tersebut di kenal sebagai context.
Bagian yang ada adalah general dan global, dan nama context di definisikan oleh system administrator. Makro adalah tipe spesial dari context, dilabeli oleh nama yang di definisikan oleh user biasanya menggunakan prefix marco-. makro dapat di eksekuasi berulang kali, kira-kira mirip dengan subroutine dalam bahasa pemrogramman.
Setiap bagian di extensions.conf dimulai dengan nama bagian yang ditulis dalam kurung siku (square brackets). Hal ini supaya extensions.conf mempunyai struktur yang mirip dengan format file .ini di Windows.
Mulai Asterisk v 1.2, opsi baru "autofallthrough" di extensions.conf di set ke Yes. Maksudnya jika tidak ada lagi perintah extensions yang dapat dijalankan maka sambungan yang masuk akan diputuskan dengan BUSY, CONGESTION, atau HANGUP tergantung dari tebakan terbaik dari Asterisk.
  • [general] - Berada di bagian paling atas dari extensions.conf, melalui [general] kita dapat menset beberapa konfigurasi umum untuk extensions di asterisk.
  • [globals] - Bagian [globals], memungkinkan kita mendefinisikan beberapa variabel atau konstanta global dan menginisialisasi nilainya.
  • Context dan Extensions - Setelah kategori [general] dan [globals], sisa isi file extensions.conf di ambil oleh Dialplan. Dialplan berisi kumpulan dari context, setiap context berisi kumpulan dari extension.

Pola Extension

Pada saat kita mendefinisikan extension dalam sebuah context, kita dapat menggunakan tidak hanya nomor biasa saja, juga tidak hanya nama / huruf, tapi jika kita dapat mendefinisikan extension yang merupakan matching dari sekumpulan nomor yang di dial menggunakan pola extension.

Mengkaitkan Context

Sebuah context berisi extension dapat dimasukan / dikaitkan dengan yang lainnya. Contoh, perhatikan context berikut
Context "default":
  Extension  Keterangan
  101   Mark Spencer 
  102   Wil Meadows 
  0   Operator 
Context "local": 
  Extension  Keterangan
  _9NXXXXXX Local calls 
  include => "default" 
Context "longdistance": 
  Extension  Keterangan 
  _91NXXNXXXXXX Long distance calls 
  include => "local" 
Kita telah mendefinisikan tiga (2) extension.
  • Context default mengijinkan kita untuk mendial tiga (3) telepon extension, yaitu, Mark, Will dan Operator.
  • Context lokal hanya ada satu pola extension yang mengijinkan kita mendial nomor 7 digit. Di samping itu, kita memasukan jika context default ke context local. Oleh karena itu, pada context local kita juga di ijinkan untuk mendial ke Mark, Will dan Operator.
  • Context long distance mempunyai satu pola extension yang mengijinkan kita untuk melakukan panggilan jarak jauh. Context long distance juga memasukan context local, oleh karenanya juga mengijinkan kita untuk menelepon lokal maupun ke extension Mark, Wil dan Operator.
Menggunakan context di extension, kita dapat secara hati-hati mengatur siapa saja yang dapat mengakses ke jaringan yang lebih besar.
Hati-hati, jika ada lebih dari satu pola yang cocok di nomor yang di dial, Asterisk kemungkinan tidak akan menggunakan nomor yang kita inginkan.

Pengurutan pola Extension

Pada saat Asterisk menerima sambungan yang masuk pada sebuah channel, Asterisk akan melihat context yang di definisikan untuk channel tersebut untuk melihat perintah apa yang harus dilakukan Asterisk. Context akan mendefinisikan sekumpulan perintah tergantung pada extension yang dihubungi si pengguna. Contoh, sebuah context mungkin akan memberikan sekumpulan perintah jika pengguna menelepon ke nomor "123", dan sekumpulan perintah lain jika pengguna menelepon ke "9", kita dapat juga membuat sekumpulan perintah lagi misalnya jika pengguna menelepon nomor yang di awali dengan "555" dan masih banyak lagi.
Jika ada hubungan yang masuk - seperti hubungan masuk dari saluran telepon di luar - pengguna belum mendial sebuah extension. Pada kasus ini, Asterisk akan beraksi seperti pengguna yang mendial extension spesial yang namakan "s" (dari asal kata Start). Asterisk akan mencari / melihat extension "nomor" s dalam definisi context untuk channel tersebut dan mencari instruksi apa yang harus dikerjakan untuk extension "s".
Misalnya, kita mempunyai sebuah channel "Zap/1" yang tersambung ke pesawat telepon di kantor. Misalnya, di konfigurasi Zap channel (zapata.conf) kita sudah mendefinisikan context=john untuk Zap channel 1. Oleh karena itu, jika kita menggunakan handset untuk mendial sebuah nomor, Asterisk akan mencari context dengan nama "john" di extensions.conf untuk melihat apa yang harus dikerjakan. Kita dapat memulai sebuah context dengan menuliskan nama yang ditutup dengan kurung siku
[john]
Untuk setiap context, kita dapat mendefinisikan satu atau lebih extension yang dapat digunakan Asterisk untuk membandingkan dengan nomor yang di dial. Untuk setiap extension, kita dapat memberitahukan Asterisk apa saja yang harus dikerjakan dengan menuliskan sekumpulan perintah.

Extension

Sebuah extension dapat berupa salah satu dari tipe berikut, nomor atau pola.
Nomor extension dapat berupa nomor, seperti 123, dan dapat pula berisi beberapa simbol standard * dan # yang ada di pesawat telepeon. Jadi 34#76* merupakan extension yang valid. Beberapa keypad pada telepon terdapat label A,B,C, dan D, oleh karenanya extension dapat didefinisikan berdasarkan huruf juga. Jadi pada dasarnya sebuah extension dapat didefinisikan dengan huruf dan angka. Perlu di catat bahwa telepon VoIP banyak yang mampu menelepon nomor extension yang terdiri dari text sembang, seperti "Kantor". Oleh karenanya tidak masalah untuk mendefinisikan sebuah nama extension Kantor di Asterisk.
Apakah nama extension case sensitif? ya dan tidak. Extension case sensitif karena pada saat Asterisk berusaha mencocokan extension yang di dial oleh user dengan extension yang di definisikan di context, nama extension harus benar-bener cocok, termasuk huruf besar & huruf kecilnya. Oleh karena itu, bila seorang user menelepon extension "KANTOR" di telepon VoIP mereka, Asterisk tidak akan langsung menjalankan perintah-perintah yang kita definisikan untuk extension "Kantor". Tetapi kenyataannya, nama extension tidak case sensitif dalam artian kita tidak dapat mendefinikan extension yang berbeda huruf besar / huruf kecil saja pada satu context yang sama. Artinya kita tidak dalam mendefinisikan perintah untuk extension "Kantor" dan "KANTOR" pada satu context.

Nama Extension Predefined

Asterisk mendefinisikan beberapa nama extension untuk keperluan khusus, yaitu,
i : Invalid 
s : Start 
h : Hangup 
t : Timeout 
T : AbsoluteTimeout 
o : Operator 
Dan masih banyak lagi.

Mendefinisikan Extension

Berbeda dengan PABX tradisional, dimana extension biasanya berasosiasi dengan telepon, interface atau menu. Pada Asterisk, extension di definisikan sebagai sekumpulan perintah untuk dijalankan. Perintah-perintah ini biasanya di jalankan berdasarkan urutan dari tingkat prioritasnya. Beberapa perintah, seperti Dial atau GotoIf, mempunyai kemampuan untuk berjalan ke perintah lain berdasarkan kondisi tertentu.
Pada saat extension di dial, perintah yang diberi tanda 1 akan di jalankan, di ikuti dengan perintah nomor 2 dan seterusnya sampai telepon di letakan atau hang up.
Dalam sintax yang digunakan di file extensions.conf , setiap tahapan perintah dalam sebuan extension di tulis dalam format
exten = extension,priority,Command(parameter) 
Tanpa sama dengan dapat pula ditulis menjadi anak panah, "=>", seperti bentuk yang sering digunakan di banyak contoh.
Kesimpulannya, sebuah "context" mempunyai nama, seperti "john". Setiap context, kita dapat mendefinisikan satu atau lebih "extension". Setiap extension, kita dapat mendefinisikan sekumpulan perinah. Bagaimana cara kita medefinisikan extension-extension ini dan perintah-perintah untuk menanganinya? Untuk mendefinisikannya kita perlu mengedit file extensions.conf menggunakan editor text. Ada beberapa tool yang memungkinkan kita mengeditnya menggunakan Grafik / Web.
Komponen yang membangun tahapan perintah extension atau command line adalah sebagai berikut,
  • Extension adalah label dari extension, dapat berupa sebuah string (angka, huruf dan simbol yan diijinkan) atau pola yang harus di evaluasi secara dinamik untuk mencocokan dengan banyak kemungkinan nomor telepon. Setiap command line yang menjadi bagian dari extension tertentu harus mempunyai label yang sama.
  • Priority biasanya berupa angka integer. Merupakan urutan dari perintah yang harus dijalankan dalam sebuah extension. Perintah pertama yang akan dijalankan harus dimulai dengan prioritas 1, jika tidak ada prioritas 1 maka Asterisk tidak akan menjalankan perintah extension. Setelah prioritas 1 di jalankan, Asterisk akan menambah prioritas ke prioritas 2 dan seterusnya, tentunya jika tidak ada perintah yang menentukan prioritas mana yang selanjutnya harus dijalankan. Jika ternyata perintah selanjutnya ternyata tidak terdefinisi maka Asterisk akan menghentikan proses menjalankan perintah walaupun masih ada perintah dengan prioritas yang lebih tinggi.
  • Command atau perintah adalah "aplikasi" yang akan di jalankan oleh Asterisk.
  • Parameter adalah parameter yang harus diberikan kepada sebuah command. Tidak semua command / perintah membutuhkan parameter, beberapa perintah dapat dijalankan tanpa parameter.
Contoh
exten => 123,1,Answer 
exten => 123,2,Playback(tt-weasels) 
exten => 123,3,Voicemail(44) 
exten => 123,4,Hangup 
Dengan definisi tersebut, sebuah extension dengan nama "123". Pada saat ada panggilan masuk ke extension 123, Asterisk akan menjawab call tersebut, menjalankan file suara dengan nama "tt-weasels" dan memberikan kemungkinan bagi pemanggil untuk memasukan voicemail ke mailbox 33, dan di akhiri dengan hangup.
Asterisk sendiri sebetulnya tidak peduli urutan peletakan kalimat di extensions.conf. Jadi dengan peletakan yang berantakan, perintah yang kita inginkan tetap akan di jalankan sesuai dengan urutan yang kita inginkan
exten => 123,4,Hangup 
exten => 123,1,Answer 
exten => 123,3,Voicemail(44) 
exten => 123,2,Playback(tt-weasels) 
Cara lain dalam mendefinisikan perintah adalah menggunakan caller ID untuk mencocokan orang yang menelepon, misalnya,
exten => 123/100,1,Answer() 
exten => 123/100,2,Playback(tt-weasels) 
exten => 123/100,3,Voicemail(123) 
exten => 123/100,4,Hangup() 
Dengan cara di atas maka kecocokan dengan extension 123 hanya akan terjadi jika Caller-ID penelepon adalah 100. Hal ini dapat juga dilakukan dengan cara pencocokan pola, seperti berikut
exten => 1234/_256NXXXXXX,1,Answer() 
dst
Dengan cara ini kecocokan dengan extension 1234 hanya akan terjadi jika Caller ID dimulai dengan nomor kode area 256 saja.
Kita bahkan dapat melakukan hal berikut
exten => s,1,Answer 
exten => s/9184238080,2,Set(CALLERID(name)=EVIL BASTARD) 
exten => s,2,Set(CALLERID(name)=Good Person) 
exten => s,3,Dial(SIP/goodperson) 
Pada prioritas 2. terlihat kita dapat menandai orang yang tidak kita sukai, sedang orang selain yang tidak disukai setelah prioritas ke tiga (3) akan kembali ke jalan yang telah ditentukan.

Comments

Popular posts from this blog

Konsep Firewall pada Jaringan VoIP

Instalasi Briker