Difference between revisions of "VoIP: Lebih Jauh Dialplan Asterisk"

From OnnoWiki
Jump to navigation Jump to search
(New page: Lebih Jauh Dialplan Asterisk Salah satu hal yang paling pusing dalam proses konfigurasi sebuah sentral telepon apapun adalah konfigurasi dialplan. Konfigurasi dialplan asterisk terdapat p...)
 
 
(One intermediate revision by the same user not shown)
Line 1: Line 1:
Lebih Jauh Dialplan Asterisk
+
Salah satu hal yang paling pusing dalam proses konfigurasi sebuah [[sentral telepon]] apapun adalah konfigurasi [[dialplan]]. Konfigurasi dialplan asterisk terdapat pada file /etc/asterisk/extensions.conf.
  
Salah satu hal yang paling pusing dalam proses konfigurasi sebuah sentral telepon apapun adalah konfigurasi dialplan. Konfigurasi dialplan asterisk terdapat pada file extensions.conf yang letaknya biasanya di /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.
 
 
Dial 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.
 
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.
Line 11: Line 9:
 
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.
 
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.
  
Diskusi Umum Mengatur Dialplan
+
==Diskusi Umum Mengatur Dialplan==
  
 
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.
 
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.
+
* [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.
  
[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.
  
Pola Extension
+
==Mengkaitkan Context==
 
 
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
 
Sebuah context berisi extension dapat dimasukan / dikaitkan dengan yang lainnya. Contoh, perhatikan context berikut
  
Context "default":
+
Context "default":
Extension Keterangan
+
  Extension Keterangan
101 Mark Spencer  
+
  101 Mark Spencer  
102 Wil Meadows  
+
  102 Wil Meadows  
0 Operator  
+
  0 Operator  
  
Context "local":  
+
Context "local":  
Extension Keterangan
+
  Extension Keterangan
_9NXXXXXX Local calls  
+
  _9NXXXXXX Local calls  
include => "default"  
+
  include => "default"  
  
Context "longdistance":  
+
Context "longdistance":  
Extension Keterangan  
+
  Extension Keterangan  
_91NXXNXXXXXX Long distance calls  
+
  _91NXXNXXXXXX Long distance calls  
include => "local"  
+
  include => "local"  
  
 
Kita telah mendefinisikan tiga (2) extension.
 
Kita telah mendefinisikan tiga (2) extension.
  
Context default mengijinkan kita untuk mendial tiga (3) telepon extension, yaitu, Mark, Will dan Operator.
+
* 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 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.
+
* 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.
 
Menggunakan context di extension, kita dapat secara hati-hati mengatur siapa saja yang dapat mengakses ke jaringan yang lebih besar.
Line 57: Line 54:
  
  
Pengurutan pola Extension
+
==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.
 
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.
Line 65: Line 62:
 
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
 
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]
+
[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.
 
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
+
==Extension==
 
Sebuah extension dapat berupa salah satu dari tipe berikut, nomor atau pola.
 
Sebuah extension dapat berupa salah satu dari tipe berikut, nomor atau pola.
  
Line 78: Line 75:
  
  
 +
==Nama Extension Predefined==
  
Nama Extension Predefined
 
 
Asterisk mendefinisikan beberapa nama extension untuk keperluan khusus, yaitu,
 
Asterisk mendefinisikan beberapa nama extension untuk keperluan khusus, yaitu,
  
i : Invalid  
+
i : Invalid  
s : Start  
+
s : Start  
h : Hangup  
+
h : Hangup  
t : Timeout  
+
t : Timeout  
T : AbsoluteTimeout  
+
T : AbsoluteTimeout  
o : Operator  
+
o : Operator  
  
 
Dan masih banyak lagi.
 
Dan masih banyak lagi.
  
  
Mendefinisikan Extension
+
==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.
+
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.
 
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.
Line 100: Line 97:
 
Dalam sintax yang digunakan di file extensions.conf , setiap tahapan perintah dalam sebuan extension di tulis dalam format
 
Dalam sintax yang digunakan di file extensions.conf , setiap tahapan perintah dalam sebuan extension di tulis dalam format
  
exten = extension,priority,Command(parameter)  
+
exten = extension,priority,Command(parameter)  
  
 
Tanpa sama dengan dapat pula ditulis menjadi anak panah, "=>", seperti bentuk yang sering digunakan di banyak contoh.
 
Tanpa sama dengan dapat pula ditulis menjadi anak panah, "=>", seperti bentuk yang sering digunakan di banyak contoh.
Line 108: Line 105:
 
Komponen yang membangun tahapan perintah extension atau command line adalah sebagai berikut,
 
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.
+
* 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.
+
* 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.
+
* 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.
+
* Parameter adalah parameter yang harus diberikan kepada sebuah command. Tidak semua command / perintah membutuhkan parameter, beberapa perintah dapat dijalankan tanpa parameter.
  
 
Contoh
 
Contoh
  
exten => 123,1,Answer  
+
exten => 123,1,Answer  
exten => 123,2,Playback(tt-weasels)  
+
exten => 123,2,Playback(tt-weasels)  
exten => 123,3,Voicemail(44)  
+
exten => 123,3,Voicemail(44)  
exten => 123,4,Hangup  
+
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.
 
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.
Line 127: Line 124:
 
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
 
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,4,Hangup  
exten => 123,1,Answer  
+
exten => 123,1,Answer  
exten => 123,3,Voicemail(44)  
+
exten => 123,3,Voicemail(44)  
exten => 123,2,Playback(tt-weasels)  
+
exten => 123,2,Playback(tt-weasels)  
 
 
 
 
  
Cara lain dalam mendefinisikan perintah adalah menggunakan caller ID untuk mencocokan orang yang menelepon, misalnya,
+
Cara lain dalam mendefinisikan perintah adalah menggunakan [[caller ID]] untuk mencocokan orang yang menelepon, misalnya,
  
exten => 123/100,1,Answer()  
+
exten => 123/100,1,Answer()  
exten => 123/100,2,Playback(tt-weasels)  
+
exten => 123/100,2,Playback(tt-weasels)  
exten => 123/100,3,Voicemail(123)  
+
exten => 123/100,3,Voicemail(123)  
exten => 123/100,4,Hangup()  
+
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
 
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()  
+
exten => 1234/_256NXXXXXX,1,Answer()  
dst
+
dst
  
 
Dengan cara ini kecocokan dengan extension 1234 hanya akan terjadi jika Caller ID dimulai dengan nomor kode area 256 saja.
 
Dengan cara ini kecocokan dengan extension 1234 hanya akan terjadi jika Caller ID dimulai dengan nomor kode area 256 saja.
Line 150: Line 145:
 
Kita bahkan dapat melakukan hal berikut  
 
Kita bahkan dapat melakukan hal berikut  
  
exten => s,1,Answer  
+
exten => s,1,Answer  
exten => s/9184238080,2,Set(CALLERID(name)=EVIL BASTARD)  
+
exten => s/9184238080,2,Set(CALLERID(name)=EVIL BASTARD)  
exten => s,2,Set(CALLERID(name)=Good Person)  
+
exten => s,2,Set(CALLERID(name)=Good Person)  
exten => s,3,Dial(SIP/goodperson)  
+
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.  
 
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.  
  
  
 
+
==Beberapa Contoh Extension Yang Menarik==
Beberapa Contoh Extension Yang Menarik
 
  
 
Asterisk mampu untuk mentransfer call. Hal ini dapat dilakukan dengan cara menambahkan parameter "t" huruf kecil di context user, tersebut, seperti,
 
Asterisk mampu untuk mentransfer call. Hal ini dapat dilakukan dengan cara menambahkan parameter "t" huruf kecil di context user, tersebut, seperti,
  
exten => 250,1,Dial(SIP/alrac,10,rt)
+
exten => 250,1,Dial(SIP/alrac,10,rt)
  
 
Dengan cara itu maka transfer call dapat dilakukan dengan cara menekan tombol "#", kemudian menekan nomor extension. Asterisk akan menyebut "transfer" pada saat anda menekan tombol "#" dan menyuarakan dial tone sampai kita memasukan nomor extension yang di tuju.
 
Dengan cara itu maka transfer call dapat dilakukan dengan cara menekan tombol "#", kemudian menekan nomor extension. Asterisk akan menyebut "transfer" pada saat anda menekan tombol "#" dan menyuarakan dial tone sampai kita memasukan nomor extension yang di tuju.
Line 175: Line 169:
 
Anda harusnya mempunyai file /etc/asterisk/features.conf yang dibuat pada saat instalasi. Pastikan ada kalimat berikut,
 
Anda harusnya mempunyai file /etc/asterisk/features.conf yang dibuat pada saat instalasi. Pastikan ada kalimat berikut,
  
[general]
+
[general]
parkext => 700
+
parkext => 700
parkpos => 701-720
+
parkpos => 701-720
context => parkedcalls
+
context => parkedcalls
parkingtime => 180
+
parkingtime => 180
  
 
Anda perlu merestart server Asterisk dari console, reload tidak cukup. Anda dapat mencobanya di internal extension. Jadi jika ada panggilan yang masuk dapat di parkir dengan menekan tombol #700, dan Asterisk akan menyebutkan nomor extension tempat parkirnya. Si penelepon akan mendengarkan musik yang indah yang di jalankan melalui Music On Hold.
 
Anda perlu merestart server Asterisk dari console, reload tidak cukup. Anda dapat mencobanya di internal extension. Jadi jika ada panggilan yang masuk dapat di parkir dengan menekan tombol #700, dan Asterisk akan menyebutkan nomor extension tempat parkirnya. Si penelepon akan mendengarkan musik yang indah yang di jalankan melalui Music On Hold.
Line 187: Line 181:
 
Parameter "t" huruf kecil berarti hanya si penerima panggilan yang dapat mentransfer call. Hal ini berarti kita hanya dapat memarkir sebuah panggilan satu kali saja. jika kita menambahkan "T" huruf besar, seperti,
 
Parameter "t" huruf kecil berarti hanya si penerima panggilan yang dapat mentransfer call. Hal ini berarti kita hanya dapat memarkir sebuah panggilan satu kali saja. jika kita menambahkan "T" huruf besar, seperti,
  
exten => 250,1,Dial(SIP/alrac,10,rT)
+
exten => 250,1,Dial(SIP/alrac,10,rT)
  
 
maka kita dapat men-transfer panggilan, apakah kita sedang menerima atau sebagai pemanggil. Hal ini berarti, kita dapat meng-unpark sebuah panggilan, memarkir panggilan dan mentransfer panggilan tersebut.
 
maka kita dapat men-transfer panggilan, apakah kita sedang menerima atau sebagai pemanggil. Hal ini berarti, kita dapat meng-unpark sebuah panggilan, memarkir panggilan dan mentransfer panggilan tersebut.
  
Asterisk dapat di konfigurasi untuk hunting nomor telepon. Sebuah hunt group adalah daftar dari nomor telepon yang akan dibunyikan secara berurut sampai kita mengangkat telepon tersebut. Dalam contoh di perlihatkan dua buah telepon extension dan satu buah nomor HP. Penelepon cukup menghubungi extension 100 dan selebihnya akan dikerjakan oleh Asterisk. Setiap telepon akan berbunyi selama 20 detik, jika tidak di angkat maka Asterisk akan menelepon telepon selanjutnya.
+
Asterisk dapat di konfigurasi untuk hunting nomor telepon. Sebuah hunt group adalah daftar dari nomor telepon yang akan dibunyikan secara berurut sampai kita mengangkat telepon tersebut. Dalam contoh di perlihatkan dua buah telepon extension dan satu buah nomor [[HP]]. Penelepon cukup menghubungi extension 100 dan selebihnya akan dikerjakan oleh Asterisk. Setiap telepon akan berbunyi selama 20 detik, jika tidak di angkat maka Asterisk akan menelepon telepon selanjutnya.
  
[alrac-followme]
+
[alrac-followme]
exten => 100,1,Dial(SIP/350,20,r)
+
exten => 100,1,Dial(SIP/350,20,r)
exten => 100,2,Dial(SIP/351,20,r)
+
exten => 100,2,Dial(SIP/351,20,r)
exten => 100,3,Dial(Zap/1/1231234567,20,r)
+
exten => 100,3,Dial(Zap/1/1231234567,20,r)
exten => 100,4,VoiceMail(u350)
+
exten => 100,4,VoiceMail(u350)
exten => 100,dial+101,VoiceMail(b350)
+
exten => 100,dial+101,VoiceMail(b350)
  
 
Varisasi lain dari teknik hunting di atas adalah semua nomor akan berdering sekaligus. Hal ini di kenal sebagai ring group. Anda dapat membunyikan semua telepon di sebuah departemen jika kita inginkan. Contoh konfigurasinya adalah,
 
Varisasi lain dari teknik hunting di atas adalah semua nomor akan berdering sekaligus. Hal ini di kenal sebagai ring group. Anda dapat membunyikan semua telepon di sebuah departemen jika kita inginkan. Contoh konfigurasinya adalah,
  
[customer-service]
+
[customer-service]
exten => 666,1,Dial(SIP/604&SIP/605&SIP/606,40,tr)
+
exten => 666,1,Dial(SIP/604&SIP/605&SIP/606,40,tr)
exten => 666,2,VoiceMail(s699)
+
exten => 666,2,VoiceMail(s699)
  
 
Dalam contoh extension 604, 605, dan 606 akan di deringkan secara simultan jika seseorang menelepon ke extension 666 dari Customer Service Department. Jika tidak ada orang yang mengangkat dalam 40 detik akan di arahkan ke Voicemail.
 
Dalam contoh extension 604, 605, dan 606 akan di deringkan secara simultan jika seseorang menelepon ke extension 666 dari Customer Service Department. Jika tidak ada orang yang mengangkat dalam 40 detik akan di arahkan ke Voicemail.
  
Variabel dan Persamaan
+
==Variabel dan Persamaan==
  
 
Di Asterisk tersedia dukungan untuk menggunakan variable dengan nama ${VARIABLENAME}. Kita juga dapat menuliskan persamaan dengan konstruksi ${EXPRESSION}, dimana expression (persamaan) dapat berupa regular expression, perbandingan, penambahan, pengurangan dan masih banyak lagi.
 
Di Asterisk tersedia dukungan untuk menggunakan variable dengan nama ${VARIABLENAME}. Kita juga dapat menuliskan persamaan dengan konstruksi ${EXPRESSION}, dimana expression (persamaan) dapat berupa regular expression, perbandingan, penambahan, pengurangan dan masih banyak lagi.
  
Reloading
+
==Reloading==
 +
 
 
Setelah kita melakukan perubahan-peruban pada dialplan dll, maka untuk memasukan semua perubahan yang dilakukan ke asterisk dapat dilakukan melalui perintah CLI asterisk
 
Setelah kita melakukan perubahan-peruban pada dialplan dll, maka untuk memasukan semua perubahan yang dilakukan ke asterisk dapat dilakukan melalui perintah CLI asterisk
  
CLI> reload
+
CLI> reload
  
 
Sebuah file konfigurasi besar atau banyak file kecil?
 
Sebuah file konfigurasi besar atau banyak file kecil?
Line 221: Line 216:
 
Melalui perintah #include <namafile> di extensions.conf, maka file lain dapat di masukan. Dengan cara ini, kita dapat mengkonfigurasi extensions.conf sebagai file utama, users.conf yang berisi user lokal, services.conf berisi berbagai servis seperti conferencing. Dengan cara ini, dialplan yang kita buat lebih mudah di maintain.
 
Melalui perintah #include <namafile> di extensions.conf, maka file lain dapat di masukan. Dengan cara ini, kita dapat mengkonfigurasi extensions.conf sebagai file utama, users.conf yang berisi user lokal, services.conf berisi berbagai servis seperti conferencing. Dengan cara ini, dialplan yang kita buat lebih mudah di maintain.
  
Forward ke Asterisk Lain
+
==Forward ke Asterisk Lain==
 +
 
 
Untuk memforward call ke Asterisk server lain dapat digunakan sintax berikut,
 
Untuk memforward call ke Asterisk server lain dapat digunakan sintax berikut,
  
[iaxprovider]  
+
[iaxprovider]  
switch => IAX2/user:[key]@server/context  
+
switch => IAX2/user:[key]@server/context  
  
 
Perintah di atas akan melakukan forwarding ke server lain. User dan key perlu di definisikan di file iax.conf di server yang akan dihubungi. Context adalah context di extensions.conf dari server yang akan dihubungi.
 
Perintah di atas akan melakukan forwarding ke server lain. User dan key perlu di definisikan di file iax.conf di server yang akan dihubungi. Context adalah context di extensions.conf dari server yang akan dihubungi.
 
  
  
Line 234: Line 229:
 
==Pranala Menarik==
 
==Pranala Menarik==
  
 +
* [[Asterisk Softswitch]]
 
* [[VoIP: Softswitch / Server Internet Telepon]]
 
* [[VoIP: Softswitch / Server Internet Telepon]]
* [[Asterisk Softswitch]]
 
* [[Linux Howto]]
 
 
* [[VoIP]]
 
* [[VoIP]]
 +
* [[Internet Telepon]]

Latest revision as of 19:05, 30 December 2009

Salah satu hal yang paling pusing 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.

Diskusi Umum Mengatur Dialplan

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.


Beberapa Contoh Extension Yang Menarik

Asterisk mampu untuk mentransfer call. Hal ini dapat dilakukan dengan cara menambahkan parameter "t" huruf kecil di context user, tersebut, seperti,

exten => 250,1,Dial(SIP/alrac,10,rt)

Dengan cara itu maka transfer call dapat dilakukan dengan cara menekan tombol "#", kemudian menekan nomor extension. Asterisk akan menyebut "transfer" pada saat anda menekan tombol "#" dan menyuarakan dial tone sampai kita memasukan nomor extension yang di tuju.


Asterisk mempunyai dua puluh tempat parkir, nomor 701-720. Transfer call yang anda ingin parkir ke extension #700 dan Asterisk akan secara automatis memarkir di tempat parkir yang sedang kosong dan memberitahukan extension tempat parkirnya. Untuk mengambil kembali telepon yang kita parkir, cukup mendial extension tempar parkir tersebut.

Langkah yang perlu dilakukan agar dapat memarkir panggilan adalah,

Tambahkan include => parkedcalls ke default context, atau context yang anda inginkan memiliki fasilitas park call. Anda harusnya mempunyai file /etc/asterisk/features.conf yang dibuat pada saat instalasi. Pastikan ada kalimat berikut,

[general]
parkext => 700
parkpos => 701-720
context => parkedcalls
parkingtime => 180

Anda perlu merestart server Asterisk dari console, reload tidak cukup. Anda dapat mencobanya di internal extension. Jadi jika ada panggilan yang masuk dapat di parkir dengan menekan tombol #700, dan Asterisk akan menyebutkan nomor extension tempat parkirnya. Si penelepon akan mendengarkan musik yang indah yang di jalankan melalui Music On Hold.

Jika waktu parkir sudah habis, maka nomor extenision kita yang pertama kali di telepon akan di telepon kembali, kita dapat mempunyai pilihan untuk menerima telepon tersebut atau tidak menerimanya dan memasukan sambungan telepon ke voicemail.

Parameter "t" huruf kecil berarti hanya si penerima panggilan yang dapat mentransfer call. Hal ini berarti kita hanya dapat memarkir sebuah panggilan satu kali saja. jika kita menambahkan "T" huruf besar, seperti,

exten => 250,1,Dial(SIP/alrac,10,rT)

maka kita dapat men-transfer panggilan, apakah kita sedang menerima atau sebagai pemanggil. Hal ini berarti, kita dapat meng-unpark sebuah panggilan, memarkir panggilan dan mentransfer panggilan tersebut.

Asterisk dapat di konfigurasi untuk hunting nomor telepon. Sebuah hunt group adalah daftar dari nomor telepon yang akan dibunyikan secara berurut sampai kita mengangkat telepon tersebut. Dalam contoh di perlihatkan dua buah telepon extension dan satu buah nomor HP. Penelepon cukup menghubungi extension 100 dan selebihnya akan dikerjakan oleh Asterisk. Setiap telepon akan berbunyi selama 20 detik, jika tidak di angkat maka Asterisk akan menelepon telepon selanjutnya.

[alrac-followme]
exten => 100,1,Dial(SIP/350,20,r)
exten => 100,2,Dial(SIP/351,20,r)
exten => 100,3,Dial(Zap/1/1231234567,20,r)
exten => 100,4,VoiceMail(u350)
exten => 100,dial+101,VoiceMail(b350)

Varisasi lain dari teknik hunting di atas adalah semua nomor akan berdering sekaligus. Hal ini di kenal sebagai ring group. Anda dapat membunyikan semua telepon di sebuah departemen jika kita inginkan. Contoh konfigurasinya adalah,

[customer-service]
exten => 666,1,Dial(SIP/604&SIP/605&SIP/606,40,tr)
exten => 666,2,VoiceMail(s699)

Dalam contoh extension 604, 605, dan 606 akan di deringkan secara simultan jika seseorang menelepon ke extension 666 dari Customer Service Department. Jika tidak ada orang yang mengangkat dalam 40 detik akan di arahkan ke Voicemail.

Variabel dan Persamaan

Di Asterisk tersedia dukungan untuk menggunakan variable dengan nama ${VARIABLENAME}. Kita juga dapat menuliskan persamaan dengan konstruksi ${EXPRESSION}, dimana expression (persamaan) dapat berupa regular expression, perbandingan, penambahan, pengurangan dan masih banyak lagi.

Reloading

Setelah kita melakukan perubahan-peruban pada dialplan dll, maka untuk memasukan semua perubahan yang dilakukan ke asterisk dapat dilakukan melalui perintah CLI asterisk

CLI> reload

Sebuah file konfigurasi besar atau banyak file kecil?

Melalui perintah #include <namafile> di extensions.conf, maka file lain dapat di masukan. Dengan cara ini, kita dapat mengkonfigurasi extensions.conf sebagai file utama, users.conf yang berisi user lokal, services.conf berisi berbagai servis seperti conferencing. Dengan cara ini, dialplan yang kita buat lebih mudah di maintain.

Forward ke Asterisk Lain

Untuk memforward call ke Asterisk server lain dapat digunakan sintax berikut,

[iaxprovider] 
switch => IAX2/user:[key]@server/context 

Perintah di atas akan melakukan forwarding ke server lain. User dan key perlu di definisikan di file iax.conf di server yang akan dihubungi. Context adalah context di extensions.conf dari server yang akan dihubungi.


Pranala Menarik