panduan panduan instalasi dan konfigurasi asterisk - wiki ugos

31
8/15/13 panduan:panduan_instalasi_dan_konfigurasi_asterisk - WIKI UGOS ugos.ugm.ac.id/wiki/panduan:panduan_instalasi_dan_konfigurasi_asterisk 1/31 Panduan Instalasi dan Konfigurasi Asterisk Sebuah sistem PBX yang sederhana Seperti apa sistem pbx yang sederhana? sistem pbx yang sederhana yaitu sistem yang hanya memerlukan dua telepon dan sebuah “kotak hitam” yang menghubungkan keduanya. Dalam kasus ini, ”kotak hitam adalah sebuah PC konvensional yang akan kita install Asterisk; dan dua telepon itu kita sebut “softphone”, dinamakan seperti itu karena memang hanya diimplementasikan dalam software. Kita akan menginstall softphone pada sebuah PC. Sebagai contoh, persyaratan untuk kasus ini cukup sederhana: kita cukup memakai PC pada umumnya yang dapat kita install distribusi linux saat ini. Tujuan Mengubah sebuah PC dengan sebuah distribusi linux yang baru terinstall menjadi sebuah mini PBX. Install dan mengkonfigurasi dua telepon VoIP dan memberi nomor extension 2000 dan 2001 Panggil extension 2001 dari 2000 dan sebaliknya Persyaratan Anda akan membutuhkan sebuah PC modern dengan memory yang cukup. Meskipun memungkinkan untuk meninstall pada sebuah hardware yang lebih tua, prosesnya akan lebih lama dan30 menit tidak akan cukup. (Bekerja pada harware yang cukup tua juga membuat frustasi). Sebagai syarat minimal, anda harus mempunyai sebuah pentium 500 Mhz dengan miniaml 512 MB RAM dan minimal 20GB hardisk. Asterisk akan jalan pada semua distribusi linux terkini. Pastikan distribusi yang anda pakai adalah yang terbaru. Pada contoh berikut, kami asumsikan anda menggunakan distro linux debian atau turunannya. Instruksi konfigurasi individu dimasukkan pada bari perintah. Versi asterisk yang mana? Asterisk Version 1.4 telah direlease pada akhir 2006 dan dianggap telah stable. Pembahasan ini akan fokus pada versi 1.4; kecuali dengan catatan lain, penjelasan perintah disini juga bisa digunakan untuk Asterisk 1.2. Distro linux yang mana yang bagus untuk Asterisk? Diskusi tentang distro linux yang paling cocok untuk Asterisk adalah terserah pengguna. Kalau disini menggunakan Debian atau RedHat bukan berarti distro itu paling cocok. Tapi contoh yang ada disini hanya cocok untuk distro Debian. Mengapa kita tidak memakai paket asterisk dengan aptget atau rpm? Alasan sederhana untuk ini adalah: yang berlaku saat ini.Sampai saat tulisan ini dibuat, tidak ada distro linux yang memiliki versi asterisk yang stable. Proyek Asterisk aktif secara ekstrim dan selalu berubah. Tidak akan ada artinya untuk menginstall versi 1 ketika versi 1.4 telah direlease dalam waktu setahun dan lebih baik. Kembali untuk bekerja dengan mengkompile paket sumber, anda akan mendapatkan pengetahuan sistem Asterisk anda adalah yang terbaru dan anda tidak perlu berharap dari pemelihara paket untuk distro spesifik anda. Menginstall dari sumber Asterisk terbaru Anda dapat mencari cara menginstall Asterisk untuk berbagai distro linux di Internet. Setelah dapat menginstall kembali ke petunjuk sini. Mengkonfigurasi Asterisk Server Anda dapat mencari semua file konfigurasi Asterisk untuk instalasi standar dalam directory /etc/asterisk:

Upload: adie-gibraltar

Post on 28-Oct-2015

298 views

Category:

Documents


7 download

DESCRIPTION

voip dengan asterisk

TRANSCRIPT

Page 1: Panduan Panduan Instalasi Dan Konfigurasi Asterisk - WIKI UGOS

8/15/13 panduan:panduan_instalasi_dan_konfigurasi_asterisk - WIKI UGOS

ugos.ugm.ac.id/wiki/panduan:panduan_instalasi_dan_konfigurasi_asterisk 1/31

Panduan Instalasi dan Konfigurasi Asterisk

Sebuah sistem PBX yang sederhana

Seperti apa sistem pbx yang sederhana? sistem pbx yang sederhana yaitu sistem yang hanya memerlukan duatelepon dan sebuah “kotak hitam” yang menghubungkan keduanya. Dalam kasus ini, ”kotak hitam adalahsebuah PC konvensional yang akan kita install Asterisk; dan dua telepon itu kita sebut “softphone”, dinamakanseperti itu karena memang hanya diimplementasikan dalam software. Kita akan menginstall softphone padasebuah PC. Sebagai contoh, persyaratan untuk kasus ini cukup sederhana: kita cukup memakai PC padaumumnya yang dapat kita install distribusi linux saat ini.

Tujuan

Mengubah sebuah PC dengan sebuah distribusi linux yang baru terinstall menjadi sebuah mini PBX.

Install dan mengkonfigurasi dua telepon VoIP dan memberi nomor extension 2000 dan 2001

Panggil extension 2001 dari 2000 dan sebaliknya

Persyaratan Anda akan membutuhkan sebuah PC modern dengan memory yang cukup. Meskipun memungkinkan untukmeninstall pada sebuah hardware yang lebih tua, prosesnya akan lebih lama dan30 menit tidak akan cukup.(Bekerja pada harware yang cukup tua juga membuat frustasi). Sebagai syarat minimal, anda harus mempunyaisebuah pentium 500 Mhz dengan miniaml 512 MB RAM dan minimal 20GB hardisk. Asterisk akan jalan padasemua distribusi linux terkini. Pastikan distribusi yang anda pakai adalah yang terbaru. Pada contoh berikut,kami asumsikan anda menggunakan distro linux debian atau turunannya. Instruksi konfigurasi individudimasukkan pada bari perintah.

Versi asterisk yang mana? Asterisk Version 1.4 telah direlease pada akhir 2006 dan dianggap telah stable. Pembahasan ini akan fokuspada versi 1.4; kecuali dengan catatan lain, penjelasan perintah disini juga bisa digunakan untuk Asterisk 1.2.

Distro linux yang mana yang bagus untuk Asterisk? Diskusi tentang distro linux yang paling cocok untuk Asterisk adalah terserah pengguna. Kalau disinimenggunakan Debian atau RedHat bukan berarti distro itu paling cocok. Tapi contoh yang ada disini hanyacocok untuk distro Debian.

Mengapa kita tidak memakai paket asterisk dengan aptget atau rpm? Alasan sederhana untuk ini adalah: yang berlaku saat ini.Sampai saat tulisan ini dibuat, tidak ada distro linux yangmemiliki versi asterisk yang stable. Proyek Asterisk aktif secara ekstrim dan selalu berubah. Tidak akan adaartinya untuk menginstall versi 1 ketika versi 1.4 telah direlease dalam waktu setahun dan lebih baik. Kembaliuntuk bekerja dengan mengkompile paket sumber, anda akan mendapatkan pengetahuan sistem Asterisk andaadalah yang terbaru dan anda tidak perlu berharap dari pemelihara paket untuk distro spesifik anda.

Menginstall dari sumber Asterisk terbaru Anda dapat mencari cara menginstall Asterisk untuk berbagai distro linux di Internet. Setelah dapat menginstallkembali ke petunjuk sini.

Mengkonfigurasi Asterisk Server Anda dapat mencari semua file konfigurasi Asterisk untuk instalasi standar dalam directory /etc/asterisk:

Page 2: Panduan Panduan Instalasi Dan Konfigurasi Asterisk - WIKI UGOS

8/15/13 panduan:panduan_instalasi_dan_konfigurasi_asterisk - WIKI UGOS

ugos.ugm.ac.id/wiki/panduan:panduan_instalasi_dan_konfigurasi_asterisk 2/31

debian:/usr/src# cd /etc/asteriskdebian:/etc/asterisk# ls adsi.conf cdr_tds.conf indications.conf privacy.conf adtranvofr.conf codecs.conf logger.conf queues.conf agents.conf dnsmgr.conf manager.conf res_odbc.conf alarmreceiver.conf dundi.conf meetme.conf rpt.conf alsa.conf enum.conf mgcp.conf rtp.conf asterisk.adsi extconfig.conf misdn.conf sip.conf asterisk.conf extensions.ael modem.conf sip_notify.conf cdr.conf extensions.conf modules.conf skinny.conf cdr_custom.conf features.conf musiconhold.conf telcordia1. adsi cdr_manager.conf festival.conf osp.conf voicemail.conf cdr_odbc.conf iax.conf oss.conf vpb.conf cdr_pgsql.conf iaxprov.conf phone.conf zapata.conf debian:/etc/asterisk#

Untuk miniPBX kita, kita hanya perlu dua buah file. pertama, kita perlu menyalin file yang dibuat dengan makesamples ke /etc/asterisk/backup/ (Kita dapat mengambilnya untuk keperluan nanti; secara umum, tindakan yangbagus untuk menyalin file asli ke directory backup ketika anda melakukan perubahan)

debian:/etc/asterisk# mkdir backup debian:/etc/asterisk# mv sip.conf backup/ debian:/etc/asterisk# mv extensions.conf backup/ debian:/etc/asterisk#

Dengan menggunakan favorite editor anda, buat sebuah file baru / etc/asterisk/sip.conf dan masukkan berikut ini:

[general]port = 5060 bindaddr = 0.0.0.0 context = others [2000] type=friend context=myphones secret=1234 host=dynamic [2001] type=friend context=myphones secret=1234 host=dynamic

Kita menulis sebuah dialplan sederhana pada /etc/asterisk/extensions.conf:

[others] [myphones] exten => 2000,1,Dial(SIP/2000) exten => 2001,1,Dial(SIP/2001)

Apakah beberapa baris tersebut cukup untuk mengkonfigurasi PBX? Mari kita coba! Jalankan Asterisk dengan

Page 3: Panduan Panduan Instalasi Dan Konfigurasi Asterisk - WIKI UGOS

8/15/13 panduan:panduan_instalasi_dan_konfigurasi_asterisk - WIKI UGOS

ugos.ugm.ac.id/wiki/panduan:panduan_instalasi_dan_konfigurasi_asterisk 3/31

perintah shell

asterisk c: debian:/etc/asterisk# asterisk c Asterisk 1.4.2, Copyright (C) 1999 2005 Digium. Written by Mark Spencer * CLI>

Setelah Asterisk dijalankan, kita akan mendapatkan sebuah konsol yang memungkinkan kita untukberkomunikasi dengan proses asterisk yang berjalan. Apa yang kita lihat sekarang adalah Asterisk CLI(command line interface) yang memperbolehkan kita untuk mengendalikan Asterisk secara interacktif. Aksipertama kita adalah untuk menghentikan asterisk secara langsung dengan perintah stop now:

*CLI> stop now debian:/etc/asterisk#

Kemudian, kita harus menghubungkan dua SIP phone ke miniPBX.Jika anda tidak memiliki ip phone, andadapat menggunakan software phone (”softphones”) yang dapat diunduh dari Internet. Untuk konfigurasipengguna pada telepon, gunakan informasi extension yang telah kita set di /etc/asterisk/sip.conf. Extension Sip2000 harus dikonfigurasi untun ini:

User: 2000

Password: 1234SIPRegistrar: IP address server asterisk kita

SIPProxy: IP address server asterisk kita

Jika anda tidak mengetahui alamat IP dari server astersik, anda dapat mencari dengan perintah berikut:

ifconfig | grep Bcast | sed s/Bcast.*//

Sekarang kita jalankan Asterisk kembali, untuk kali ini dengan konsole verbose yang lebih banyak, sehingga kitadapat melihat apa yang sedang terjadi ketika kita mencoba melakukan panggilan. Kita lakukan denganmenambahkan parameter vvvvvc setelah perintah (5 v artinya “verbosity level 5”). Dengan ini kita dapat melihatkapan SIP phone terdaftar pada PBX:

debian:/etc/asterisk# asterisk vvvvvc […] Asterisk Ready. *CLI>

Sekali anda mengkonfigurasi SIP telepon, saatnya untuk mendaftarkannya ke server. Untuk meyakinkannya,matikan telepon dan hidupkan kembali (atau jika menggunakan softphone, tutup dan buka kembali aplikasinya).Ini memerlukan kesabaran, beberapa SIP phone sangat lambat dan membutuhkan beberapa menit untuk selesairebooting. Jika semua berjalan baik, kita akan melihat telepon terdaftar dengan Asterisk:

*CLI> — Registered SIP ‘2000 at 87.143.3.144 port 5060 expires 120 — Unregistered SIP ‘2000 *CLI> — Registered SIP ‘2001 at 87.143.3.145 port

Page 4: Panduan Panduan Instalasi Dan Konfigurasi Asterisk - WIKI UGOS

8/15/13 panduan:panduan_instalasi_dan_konfigurasi_asterisk - WIKI UGOS

ugos.ugm.ac.id/wiki/panduan:panduan_instalasi_dan_konfigurasi_asterisk 4/31

5060 expires 120 — Unregistered SIP ‘2001

Setelah telephone terdaftar, kita dapat melakukan beberapa panggilan. Bagian ini cukup mudah gunakanextension 2000, tekan 2001. Jika anda berhasil melakukan percakapan, anda telah berhasil! miniPBX pertamaanda dengan Asterisk telah bekerja. Anda dapat menghentikan Asterisk kapan saja dengan menuliskan stopnow pada CLI Asterisk.

Sebuah mesin penjawab Asterisk dilengkapi dengan modul voicemail, tetapi perlu dikonfigurasi terlebih dahulu di/etc/asterisk/voicemail.conf sebelum kita dapat menggunakannya. Sebagai langkah awal (seharusnya dijadikankebiasaan) Kita salin file default ke dalam directory backup yang pernah kita buat:

debian:/# cd /etc/asteriskdebian:/etc/asterisk# mv voicemail.conf backup/

Sekarang kita dapat membuat sebuah file baru /etc/asterisk/voicemail.conf dan ketikkan konfigurasi berikut:

[general]format = wav[default]2000 => 4711,Coba voicemail,[email protected] => 0815,Coba lagi,[email protected]

Kita telah mengkonfigurasi dua mailbox default (ya, memang sederhana). Kita belum selesai. Kita perlumenambahkan beberapa baris dalam / etc/asterisk/extensions.conf untuk menghubungkan mailbox tersebut ketelephone kita dan membuatnya dapat diakses. Pastikan untuk menambah “,20 p ada akhir perintah Dial():

[others][myphones]exten => 2000,1,Dial(SIP/2000,20)exten => 2000,2,VoiceMail(2000,u)exten => 2001,1,Dial(SIP/2001,20)exten => 2001,2,VoiceMail(2001,u)exten => 2999,1,VoiceMailMain(${CALLERID(num)},s)

Selesai! Sekarang jalankan asterisk dengan perintah asterisk vvvvvc dan buat panggilan ke extension 2000.Setelah 20 detik (”20 pada akhir perintah Dial()), panggilan akan dialihkan ke voicemail. Jika extension 2000sibuk, panggilan langsung menuju voicemail. Anda dapat mengecek pesan pada extension 2000 denganmenekan 2999, yang akan mengarahkan anda ke menu untuk mendapatkan voicemail. Untuk lebih rinci tentangkonfigurasi email (seperti menambahkan password atau penjelasan pada menu voicemail) akan dijelaskankemudian.

Apa yang baru saja kita lakukan? Setelah berhasil menjalankan perintah di atas, sekarang mari kita lihat file konfigurasi baris demi baris, dimulaidari /etc/asterisk/sip.conf. Ini akan membantu kita memahami apa yang dilakukan Asterisk dan mengapa.

[general]port = 5060bindaddr = 0.0.0.0context = others

Page 5: Panduan Panduan Instalasi Dan Konfigurasi Asterisk - WIKI UGOS

8/15/13 panduan:panduan_instalasi_dan_konfigurasi_asterisk - WIKI UGOS

ugos.ugm.ac.id/wiki/panduan:panduan_instalasi_dan_konfigurasi_asterisk 5/31

Pada seksi pertama, disebut [general], kita mengatur nilai variabel global. Port standard untuk koneksi SIPconnections adalah 5060. Nilai bindaddr = 0.0.0.0 memberitahukan Asterisk untuk mendengarkan koneksipada semua alamat IP yang terkonfirugasi pada sistem. Kebanyakan sistem hanya mempunyai sebuah alamat IP.Jika kita memiliki beberapa konfigurasi antarmuka fisik atau virtual, atau mungkin beberapa instance dariAsterisk yang berjalan, dan anda ingin menentukan alamat IP mana Asterisk akan menerima koneksi, andadapat menentukan alamat address tersebut dengan mengisi bindaddr. Nilai context adalah spesial dan perlupenjelasan lebih, maka akan dijelaskan lebih detail kemudian. Selama anda mengikuti perintah dan contoh, andaakan menjadi lebih nyaman dan memahami dengan ide dari “context” yang diterapkan pada Asterisk dan belajarbagaimana untuk memakainya.

[2001]type=friendcontext=myphonessecret=1234host=dynamic

Bagian [2001] memberikan parameter untuk extension SIP 2001. Kita menggunakan nomor sebagai ketentuan;meskipun kebanyakan orang menginginkan extensions memiliki nomor, extension SIP dapat juga dibuat dengansebuah alphanumeric — sebagai contoh, [Operator1]. Parameter type=friend menunjukkan bahwa extensionSIP dapat menerima dan membuat panggilan Selanjutnya, context. Kita memanggil context myphones pada/etc/asterisk/extensions.conf; Ketika kira melihat pada file bagian berikutnya, aplikasi dari kontek akan lebihjelas. isi dari secret adalah sebuah password untuk extension SIP. Kita menggunakannya untuk menghindari alatyang tak diijinkan mendaftar sebagai extension 2001. Lebih baik menggunakan angka disini, karena lebih mudahmemasukkan angka pada kebanyakan telepon. Istilah host=dynamic memberitahukan Asterisk bahwa alamat IPdari extension SIP dapat berupa apa saja. extensions.conf Asterisk dialplan /etc/asterisk/extensions.conf — dikenal sebagai “dialplan” — adalah jantung dari setiap konfigurasi Asterisk(Kita akan membahas pada pemrograman dalam dialplan). Sebagai gambaran, anda dapat menyamakannyadengan sebuah switchboard yang digunakan oleh sistem telepon dahulu. Dialplan menentukan telepon manadapat menelepon telepon lain, dan bagaimana. Dialplan dibagi dalam contexts.

[others]

Pada bagian pertama pada konfigurasi ini adalah context [others]. Karena kita tidak memakai dalam contoh ini,maka bisa dikosongkan.

[myphones]exten => 2000,1,Dial(SIP/2000,20)exten => 2000,2,VoiceMail(2000,u)

Asterisk selalu menggunakan context ketika menangani sebuah panggilan telepon satu ke lainnya. Nama contextname hanya dibatasi dari imajinasi kita, tetapi harus selalu konsisten antar file konfigurasi. Ini artinya bahwa jikaanda menyukai sebuah context myphones dalam /etc/asterisk/sip.conf, anda harus menggunakan nama yangsama pada bagian yang sesuai di /etc/asterisk/extensions.conf. context sangat penting pada beroperasinyatelepon! Karena menentukan nomor extension apa dapat dipanggil dan aksi apa yang diperbolehkan. Penulisan dialplan selalu mengikuti peraturan berikut:

exten => Nomor,Prioritas,Aplikasi

Page 6: Panduan Panduan Instalasi Dan Konfigurasi Asterisk - WIKI UGOS

8/15/13 panduan:panduan_instalasi_dan_konfigurasi_asterisk - WIKI UGOS

ugos.ugm.ac.id/wiki/panduan:panduan_instalasi_dan_konfigurasi_asterisk 6/31

Ketika sebuah nomor dipanggil, Asterisk akan mengecek untuk mengetahui apakah sesuai dengan dialplan. Jikaditemukan kesesuaian, makan masukan itu akan dibaca dan dijalankan. Jika terdapat lebih dari sebuah masukanuntuk nomor yang dipanggil, Asterisk akan menjalankan isi dengan prioritas 1 lebih dahulu. Parameter ketiga(”Application”) menentukan apa yang akan dilakukan Asterisk dengan panggilan itu. Berdasarkan padakonfigurasi contoh kita, yang terjadi ketika sebuah panggilan dari 2001 ke 2000 adalah:

Asterisk melihat context dari extesion yang memanggil (2001) dalam /etc/asterisk/sip.conf. Pada contoh

kita, Contextnya adalah [myphones]. Asterisk menggunakan context ini untuk menentukan kelompak

mana yang digunakan dalam /etc/asterisk/extensions.conf.

Setelah menemukan context [myphones] dalam /etc/asterisk/extensions.conf, Asterisk menjalankan isi

yang sesuai dengan nomor yang dipanggil, 2000, dengan prioritasnya. Kita memiliki dua baris yang sesuai

pada contoh kita.Isi yang sesuai dengan prioritas 1 akan dijalankan terlebih dahulu, Tidak pedulu urutan secara fisik dalam

isian. Disini, isian dengan prioritas 1 memiliki aplikasi Dial(SIP/2000,20). Aplikasi Dial() dijalankan

dengan paramater yang telah diberikan; seperti pada isian nomor 2000 dalam /etc/asterisk/sip.conf dan

bunyikan dalam 20

detik(angka “,20 s etelah SIP/2000).

Jika extension SIP 2000 tidak menjawab dalam 20 detik, Dial()selesai dan prioritas ditambah 1.

Isi yang sesuai selanjutnya — exten ⇒ 2000,2,VoiceMail(2000,u)— dijalankan. Asterisk menjalankan

aplikasi VoiceMail() dengan parameter “2000 dan “u”. “2000 adalah untuk nomor mailbox seperti yang

dikonfigurasi dalam /etc/asterisk/voicemail.conf; “u” memberitahukan Asterisk untuk menggunakan pesan

standar “unavailable”.

tentu saja, voicemail tidak ada gunanya kecuali anda dapat mengambil pesan yang ditinggalkan kepada anda.Kita dapat memberi akses dengan mengisi:

exten => 2999,1,VoiceMailMain(${CALLERID(num)},s)

terdapat fungsi dialplan pertama kita di Asterisk! kita memanggil aplikasi VoiceMailMain() dengan fungsi${CALLERID(num)} sebagai parameter. fungsi ${CALLERID(num)} mengembalikan nomor dari pihak yangmemanggil. Dengan cara ini, VoiceMailMain() selalu tahu untuk mengambil pesan untuk telepon yangmemanggilnya. Jika parameter tidak diisi, kita akan ditanya nomor mailbox. parameter “,s” memberitahuVoiceMailMain() untuk tidak meminta password untuk pemanggil.

Memanggil jaringan telepon umum (PSTN) Sekarang, anda mungkin berpikir “Memang bagus kalau memilik sistem telepon yang sudah bekerja, tetapibagaimana kalau tidak bisa memanggil ke dunia luar yang lainnya?” Dengan sedikit konfigurasi dan koneksiinternet, kita akan mengatasi permasalahan tersebut. Anda perlu sebuah akun dengan sebuah penyedia jasatelepon SIP. Contoh berikut memberikan contoh konfiguras untuk sebuah koneksi ke sebuah penyedia teleponSIP. Ada tersedia banyak sekali penyedia SIP. Gunakan Google™ untuk mencari penyedia SIP yang akananda coba. Sekali terkonfigurasi, anda akan dapat memanggil ke PSTN atau penyedia SIP laindari extensiAsterisk anda. Pertama, informasi akun penyedia SIP harus dimasukkan dalam /etc/asterisk/sip.conf:

[general]port = 5060bindaddr = 0.0.0.0context = othersregister => 5587572:UHDZJD@penyediaSIP.

Page 7: Panduan Panduan Instalasi Dan Konfigurasi Asterisk - WIKI UGOS

8/15/13 panduan:panduan_instalasi_dan_konfigurasi_asterisk - WIKI UGOS

ugos.ugm.ac.id/wiki/panduan:panduan_instalasi_dan_konfigurasi_asterisk 7/31

com/5587572; ̂ ̂ ̂ ̂; | | | |; User Password Provider User[2000]type=friendcontext=myphonessecret=1234host=dynamic[2001]type=friendcontext=myphonessecret=1234host=dynamic[extsipaccount]type=friendcontext=darivoipproviderusername=5587572fromuser=5587572secret=UHDZJDhost=penyediaSIP.comfromdomain=penyediaSIP.comqualify=yesinsecure=verynat=yes

Ketika kita membuka sebuah akun, penyedia SIP akan memberikan sebuah username (dalam contoh ini adalah5587572) dan password (dalam contoh ini adalah UHDZJD). Sekali akun SIP terkonfigurasi, kita masih harusmenambahkan beberapa baris dalam /etc/asterisk/extensions.conf untuk memakai panggilan keluar:

[others][myphones]exten => 2000,1,Dial(SIP/2000,20)exten => 2000,2,VoiceMail(2000,u)exten => 2001,1,Dial(SIP/2001,20)exten => 2001,2,VoiceMail(2001,u)exten => 2999,1,VoiceMailMain(${CALLERID(num)},s)exten => _0[19].,1,Dial(SIP/${EXTEN}@extsipaccount)

Sesudah kita memasukkan baris baru, simpan file dan jalankan asterisk seperti sebelumnya, dengan asterisk -vvvvvc dan kita akan mendapatkan CLI. Tunggu beberapa detik telepon SIP akan terdaftar. Sekarang tekannomor keluar. Jike segala sesuatu berjalan sesuai yang diharapkan, anda akan mendengar saluran tujuanberbunyi dan dapat melihat proses panggilan melalui CLI.

Menerima panggilan dari PSTN Langkah terakhir cukup singkat: kita menginginkan untuk dapat menerima panggilan dari penyedia SIP kita padaextensi 2000. Untuk melakukan ini, kita perlu untuk menambahkan kontek lain pada/etc/asterisk/extensions.conf:

[others][myphones]exten => 2000,1,Dial(SIP/2000,20)exten => 2000,2,VoiceMail(2000,u)exten => 2001,1,Dial(SIP/2001,20)exten => 2001,2,VoiceMail(2001,u)

Page 8: Panduan Panduan Instalasi Dan Konfigurasi Asterisk - WIKI UGOS

8/15/13 panduan:panduan_instalasi_dan_konfigurasi_asterisk - WIKI UGOS

ugos.ugm.ac.id/wiki/panduan:panduan_instalasi_dan_konfigurasi_asterisk 8/31

exten => 2999,1,VoiceMailMain(${CALLERID(num)},s)exten => _0[19].,1,Dial(SIP/${EXTEN}@extsipaccount)[darivoipprovider]exten => 18885556266,1,Dial(SIP/2000)

Selesai!! Pada contoh kita, nomor 18885556266 adalah nomor PSTN number (juga disebut sebagai DID;) diberikan keakun anda oleh penyedia SIP. Tentu saja anda juga dapat menambahkan voicemail untuk menerima panggilandari PSTN:

[others][myphones]exten => 2000,1,Dial(SIP/2000,20)exten => 2000,2,VoiceMail(2000,u)exten => 2001,1,Dial(SIP/2001,20)exten => 2001,2,VoiceMail(2001,u)exten => 2999,1,VoiceMailMain(${CALLERID(num)},s)exten => _0[19].,1,Dial(SIP/${EXTEN}@extsipaccount)[darivoipprovider]exten => 18885556266,1,Dial(SIP/2000,20)exten => 18885556266,2,VoiceMail(2000,u)

Pada bahasan ini hanya menunjukkan bagaimana anda dapat secara cepat membuat sebuah sistem asteriskbekerja. Pada bahasan selanjutnya, kita akan menambahkan sedikitsedikit dan menunjukkan kepada andaseberapa banyak anda dapat melakukannya dengan Asterisk.

Dasar-dasar Dialplan

Dialplan adalah jantung dari Asterisk, dan segala sesuatu bermula disini. Untuk membuat dialplan dibutuhkandua file penting di /etc/asterisk. Pertama adalah extensions.conf, masih menggunakan model asli dan prioritas;yang kedua adalah extensions.ael, yang menggunakan bahasa ekstensi Asterisk yang baru; kita akan melihatlebih detail pada bahasan berikut. Untuk saat ini, kita akan menggunakan model prioritas tradisional, meskipunpada versi 1.4, extension.ael telah diubah dalam format prioritas dan ditambahkan ke extensions.conf ketikaAsterisk dijalankan.

Context Asterisk dialplan dibagi dalam dua bagian, dan masing-masing bagian disebut sebagai context. Setiap dialplanharus dimulai dari sebuah context [general] tempat untuk memasukkan konfigurasi global, tetapi contextselanjutnya dapat memiliki nama apa saja. Contexts dapat berarti peralatan fisik (biasanya telephone, tetapitidak selalu; sebagai contoh, SIP atau ZAP) yang dikatikan terhadapnya. Konfigurasi untuk setiap peralatan,bisa softphone, hardphone atau outgoing trunk, harus ditentukan context defaultnya. Berikut contoh darisip.conf:

[2000]type=friendcontext=internalphonessecret=1234host=dynamic

Peralatan SIP yaitu 2000 selalu memulai panggilan dalam context internalphones. Maksudnya bahwa jika

Page 9: Panduan Panduan Instalasi Dan Konfigurasi Asterisk - WIKI UGOS

8/15/13 panduan:panduan_instalasi_dan_konfigurasi_asterisk - WIKI UGOS

ugos.ugm.ac.id/wiki/panduan:panduan_instalasi_dan_konfigurasi_asterisk 9/31

penelepon menggunakan telepon ini untuk melakukan panggilan, Asterisk akan melihat pada context internalphones untuk sebuah extensi yang cocok dengan nomor panggilan. Jika tidak ada yang cocok, tidak akandilakukan apaapa.

Syntax Contexts dibuat dengan sebuah nama dalam kurung siku (”[” dan “]”). Idealnya, namanya harus sesuai danmembantu penggunaan dari context itu. Nama ini juga akan digunakan untuk mengacu pada context lainnya,mungkin dalam context lain atau di file konfigurasi Asterisk lain. Semua baris sesudah nama context adalahbagian dari context itu, sampai terdapat context berikutnya:

[general][internalphones]Aturan, perintah, dsb.[widgets]Aturan, perintah, dsb.

Extension Setiap masukan di extensions.conf disebut extensions. Extensions diterjemahkan oleh Asterisk setiap panggilandibuat, tetapi extensions.conf hanya dibaca oleh Asterisk pada waktu pertama dijalankan. Anda juga dapatmemperbarui dialplan selama beroperasi melalui CLI (Command Line Interface) dengan memasukkan perintahreload now (yang akan memanggil kembali semua konfigurasi) atau extensions reload (yang hanya akanmemanggil kembali dialplan)

Syntax Sebuah extension terdiri dari beberapa bagian:

Extension (Nama atau nomor)

Prioritas (semacam nomor baris program)

Applikasi sebuah aplikasi yang memberitahukan Asterisk apa yang harus dilakukan dengan panggilan.

exten => Extension,Prioritas,Aplikasicontoh:exten => 123,1,Answer()

Aplikasi-aplikasi Penting Untuk membuat contoh dialplan pada bahasan ini, kita perlu aplikasi-aplikasi dasar berikut:

Answer()

Aplikasi Answer() bertugas untuk menjawab sebuah panggilan. Ketika sebuah kanal berbunyi, Answer()memberitahu Asterisk untuk “menerima secara maya.”

Hangup()

Hangup() kebalikan dari Answer(). Sebuah koneksi aktif dihentikan, dan Asterisk “menutup” penerimaan maya.

Playback(Filesuara)

Aplikasi ini memberitahu Asterisk untuk memainkan file suara tertentu. Secara default, akan memainkan filesuara yang terdapat dalam /var/lib/asterisk/sounds/, tetapi anda dapat juga menentukan directory lainnya. Tidakada extension file yang diberikan karena directory mungkin berisi suara yang sama dalam format yang berbeda.Asterisk akan memilih format yang paling sesuai.

Page 10: Panduan Panduan Instalasi Dan Konfigurasi Asterisk - WIKI UGOS

8/15/13 panduan:panduan_instalasi_dan_konfigurasi_asterisk - WIKI UGOS

ugos.ugm.ac.id/wiki/panduan:panduan_instalasi_dan_konfigurasi_asterisk 10/31

Wait(angka)

Wait() bisa diartikan sebagai jeda/pause; Angka mengindikasikan berapa detik untuk jeda.

NoOp(string)

Aplikasi ini tidak melakukan apa-apa. “NoOp” berarti “no operation.” Aplikasi ini berguna ketika andamencoba mengatasi permasalahan dengan dialplan anda. Ketika NoOp(string) dijalankan, Asterisk mencetakstring pada CLI, hanya kelihatan jika tingkat verbosity diatur ke 3 (anda dapat melakukan dengan mudahdengan memasukkan perintah set verbose 3 pada CLI).

VoiceMail(mailbox,u) ; Memungkinkan pemanggil meninggalkan pesan suara dalam mailbox yang dibuat.

VoiceMailMain() ; Menyediakan akses ke sistem voicemail. Pemilik mailbox akan menggunakannyauntuk mengambil pesannya.

Prioritas Ekstensi pada umumnya terbentuk dari beberapa baris. Masing-masing baris mempunyai prioritas, jadi Asterisktahu urutan dalam menjalankan perintah-perintah itu. Jika anda pernah mengenal versi pertama dari BASIC,Anda mungkin sudah biasa dengan nomor baris; prioritas bekerja dengan cara yang sama, tetapi dengan satuperbedaan penting. Aplikasi dijalankan dengan urut nomor dari yang kecil ke besar, tetapi tidak ada selisih! JikaAsterisk menjalankan isian dengan prioritas n, maka akan dilihat isi selanjutnya pada n+1. Jika tidak dapatmenemukan pada n+1, maka akan berhenti menjalankan tanpa menampilkan kesalahan pada CLI.

Sebuah contoh “Hello World!” Extension berikut akan dijalankan ketika sebuah telephone dengan context default widgets menelpon 8888.Asterisk akan mengangkat saluran, memainkan file suara helloworld (yang telah tersintall dengan Asterisk) dankemudian memutuskan.

[widgets]exten => 8888,1,Answer()exten => 8888,2,Playback(helloworld)exten => 8888,3,Hangup()

n priority Untuk membuat kerja dengan prioritas menjadi mudah, Mulai dari Asterisk versi 1.2 ke atas telah mendukungprioritas n. Prioritas n seperti penomoran otomatis; ketika Asterisk menjalankan dialplan dan mendapatkan isiandengan prioritas n, langsung saja dijalankan karena sama juga dengan prioritas sebelumnya ditambah 1. Hal iniberguna ketika anda memiliki ekstensi dengan banyak isian dan anda perlu menambah atau menghilangkansebuah isian, karena menghemat tenaga daripada menulis ulang nomornomor pada extension. Contoh berikutmengilustrasikan apa yang kami maksud. Sebuah standar extensi akan kelihatan seperti berikut:

exten => 1234,1,Answer()exten => 1234,2,Wait(2)exten => 1234,3,Playback(helloworld)exten => 1234,4,Wait(2)exten => 1234,5,Hangup()

Anda dapat membuat extension yang sama dengan prioritas n:

exten => 1234,1,Answer()exten => 1234,n,Wait(2)

Page 11: Panduan Panduan Instalasi Dan Konfigurasi Asterisk - WIKI UGOS

8/15/13 panduan:panduan_instalasi_dan_konfigurasi_asterisk - WIKI UGOS

ugos.ugm.ac.id/wiki/panduan:panduan_instalasi_dan_konfigurasi_asterisk 11/31

exten => 1234,n,Play(helloworld)exten => 1234,n,Wait(2)exten => 1234,n,Hangup()

Anda dapat memulai menggunakan prioritas n di sembarang baris pada ekstensi, selama semua isianmenggunakannya:

exten => 1234,1,Answer()exten => 1234,2,Wait(2)exten => 1234,3,Play(helloworld)exten => 1234,n,Wait(2)exten => 1234,n,Hangup()

Pattern Matching Dengan pengetahuan kita sejauh ini, kita perlu menulis extension terpisah untuk setiap telepon. Karena sistemterus bertambah, maka penulisan extension akan semakin besar dan pencarian kesalahan akan lebih sulit. Untukcontoh, misalkan kita memerlukan nomor 100 sampai 109 untuk memainkan file suara “hello world”.Extensions.conf kita akan tampak seperti berikut:

[general][widgets]exten => 100,1,Answer()exten => 100,2,Playback(helloworld)exten => 100,3,Hangup()exten => 101,1,Answer()exten => 101,2,Playback(helloworld)exten => 101,3,Hangup()exten => 102,1,Answer()exten => 102,2,Playback(helloworld)exten => 102,3,Hangup()exten => 103,1,Answer()exten => 103,2,Playback(helloworld)exten => 103,3,Hangup()exten => 104,1,Answer()exten => 104,2,Playback(helloworld)exten => 104,3,Hangup()exten => 105,1,Answer()exten => 105,2,Playback(helloworld)exten => 105,3,Hangup()exten => 106,1,Answer()exten => 106,2,Playback(helloworld)exten => 106,3,Hangup()exten => 107,1,Answer()exten => 107,2,Playback(helloworld)exten => 107,3,Hangup()exten => 108,1,Answer()exten => 108,2,Playback(helloworld)exten => 108,3,Hangup()exten => 109,1,Answer()exten => 109,2,Playback(helloworld)exten => 109,3,Hangup()

Jika kita menggunakan sebuah pattern (pola), dialplan yang sama akan menjadi lebih ringkas dan baik:

[general][widgets]exten => _10X,1,Answer()

Page 12: Panduan Panduan Instalasi Dan Konfigurasi Asterisk - WIKI UGOS

8/15/13 panduan:panduan_instalasi_dan_konfigurasi_asterisk - WIKI UGOS

ugos.ugm.ac.id/wiki/panduan:panduan_instalasi_dan_konfigurasi_asterisk 12/31

exten => _10X,2,Playback(helloworld)exten => _10X,3,Hangup()

Extension ‘_10X’ menjelaskan nomor antara 100 sampai 109.

Syntax Pola Dialplan selalu dimulai dengan karakter garisbawah (_):

exten => _Pola,Prioritas,Aplikasi

[abc] digit a, b dan c. Sebagai contoh, untuk cocok dengan 34, 37, dan 38:

exten => _3[478],1,NoOp(Test)

[ab] Sembarang digit dalam jangkauan a sampai b. Contoh, untuk cocok dengan nomor antara 31 dan 35:

exten => _3[15],1,NoOp(Test)

(contoh. [258] juga bisa diterima untuk digit 2,5,6,7,8)

X Sembarang digit dari 0 sampai 9. Contoh, untuk cocok antara nomor 300 dan 399:

exten => _3XX,1,NoOp(Test)

Z Sembarang digit dari 1 sampai 9. Contoh, untuk cocok antara nomor 31 sampai 39:

exten => _3Z,1,NoOp(Test)

N Sembarang digit antara 2 sampai 9. Contoh, untuk cocok antara nomor 32 dan 39:

exten => _3N,1,NoOp(Test)

. Sembarang nomor digit apa saja. Contoh, untuk cocok dengan semua angka dimulai dengan 011:

exten => _011.,1,NoOp(Test)

Peringatan!! Jangan gunakan pola ‘_.’ ! Pola ini juga akan memasukkan ekstensi khusus seperti i, t dan h. Gunakan _X. atau

Page 13: Panduan Panduan Instalasi Dan Konfigurasi Asterisk - WIKI UGOS

8/15/13 panduan:panduan_instalasi_dan_konfigurasi_asterisk - WIKI UGOS

ugos.ugm.ac.id/wiki/panduan:panduan_instalasi_dan_konfigurasi_asterisk 13/31

_X jika anda memperluas penyamaan pola.

! Karakter khusus ‘wildcard’ akan cocok dengan nomor yang dipanggil segera jika tidak bermakna ganda;Contoh, ketika nomor ditekan tidak dapat langsung cocok dengan extesion dalam context. Sekali terdapatkecocokan, nomor akan diambil dan dipanggil.

Mencoba pola menggunakan dialplan showSebuah contoh dialplan tampak seperti berikut:

[general][myphones]exten => 23,1,Answer()exten => 23,2,Playback(helloworld)exten => 23,3,Hangup()

Kita dapat menulis dialplan show dari CLI (jalankan asterisk -r jika Asterisk telah berjalan) untuk memastikanbahwa dialplan kita telah dimuat:

*CLI> dialplan show[ Context 'default' created by 'pbx_config' ][ Context 'myphones'created by 'pbx_config' ]'23' => 1. Answer() [pbx_config]2. Playback(helloworld)[pbx_config]3. Hangup() [pbx_config][ Context 'parkedcalls' created by 'res_features' ]'700' => 1. Park() [res_features]=2 extensions (4 priorities) in 3 contexts. =*CLI>

Tampilan dari perintah tersebut akan memasukkan semua aturan dialplan yang Asterisk ketahui. Perhatikanbahwa disitu terdapat context ‘parkedcalls’ yang yang belum pernah kita lihat sebelumnya; ini diaktifkan secaradefault dalam features.conf dan kita abaikan untuk saat ini. Bagaiaman jika kita hanya ingin melihat contextmyphones? Kita dapat membuat lebih khusus dengan dialplan show myphones:

*CLI> dialplan show myphones[ Context 'myphones'created by 'pbx_config' ]'23' => 1. Answer() [pbx_config]2. Playback(helloworld)[pbx_config]3. Hangup() [pbx_config]=1 extension (3 priorities) in 1 context. =*CLI>

Perintah dialplan show dapat juga digunakan untuk melihat apa yang dilakukan Asterisk jika kita menekannomor tertentu. Misalnya kita ingin menekan nomor ‘25' dari telepon dalam context myphones. Kita dapatmelihat apa yang akan terjadi dengan perintah dialplan show 25@myphones:

Page 14: Panduan Panduan Instalasi Dan Konfigurasi Asterisk - WIKI UGOS

8/15/13 panduan:panduan_instalasi_dan_konfigurasi_asterisk - WIKI UGOS

ugos.ugm.ac.id/wiki/panduan:panduan_instalasi_dan_konfigurasi_asterisk 14/31

*CLI> dialplan show 25@myphonesThere is no existence of 25@myphonesextension*CLI>

Tidak ada yang terjadi karena memang tidak ada yang cocok dengan ‘25 dalam context tersebut. Jika kitamenekan nomor ‘23 misalnya, kita akan mendapat tampilan seperti ini:

*CLI> dialplan show 23@myphones[ Context ‘myphones’created by ‘pbx_config’ ]‘23 => 1. Answer() [pbx_config]2. Playback(helloworld)[pbx_config]3. Hangup() [pbx_config]=1 extension (3 priorities) in 1 context. =*CLI>

Jika kita ingin mengecek ‘23' dengan semua kemungkinan context, kita dapat menggunakan dialplan show 23@:

*CLI> dialplan show 23@[ Context 'myphones'created by 'pbx_config' ]'23' => 1. Answer() [pbx_config]2. Playback(helloworld)[pbx_config]3. Hangup() [pbx_config]=1 extension (3 priorities) in 1 context. =*CLI>

Mari kita kembangkan dialplan kita dengan menambah context tambahan dengan mengubah extensions.confseperti:

[general][myphones]exten => 23,1,Answer()exten => 23,2,Playback(helloworld)exten => 23,3,Hangup()[departmentq]exten => _2X,1,Answer()exten => _2X,2,Playback(helloworld)exten => _2X,3,Hangup()

Sekarang kita dapat kembali ke CLI, dan setelah mereload dialplan dengan perintah reload, jalankan dialplanshow 23@:

*CLI> dialplan show 23@[ Context 'departmentq'created by 'pbx_config' ]

Page 15: Panduan Panduan Instalasi Dan Konfigurasi Asterisk - WIKI UGOS

8/15/13 panduan:panduan_instalasi_dan_konfigurasi_asterisk - WIKI UGOS

ugos.ugm.ac.id/wiki/panduan:panduan_instalasi_dan_konfigurasi_asterisk 15/31

'_2X' => 1. Answer() [pbx_config]2. Playback(helloworld)[pbx_config]3. Hangup() [pbx_config][ Context 'myphones'created by 'pbx_config' ]'23' => 1. Answer() [pbx_config]2. Playback(helloworld)[pbx_config]3. Hangup() [pbx_config]=2 extensions (6 priorities) in 2 contexts. =*CLI>

Semua extesion yang cocok akan ditampilkan. Mari kita coba dengan perintah dialplan show 25@:

*CLI> dialplan show 25@[ Context 'departmentq'created by 'pbx_config' ]'_2X' => 1. Answer() [pbx_config]2. Playback(helloworld)[pbx_config]3. Hangup() [pbx_config]=1 extension (3 priorities) in 1 context. =*CLI>

Hanya ada satu yang cocok, dalam context department-q. Dalam contoh ini, jika kita menekan ‘25 dari telepondengan context myphones, kita tidak dapat mendengar suara ‘hello world’. Extension ‘25' hanya bekerjadengan telepon dalam context department-q.

Urutan pencocokan pola/Pattern matching order Memanfaatkan pencocokan pola dalam dialplan Asterisk kita, disamping sangat membantu tetapi juga sedikittricky. Sangat mudah untuk memahami Asterisk dialplan dengan urutannya; dan pada kasus umumnya, Asteriskmelakukan prioritas berdasarkan pola dengan kualitas kecocokannya. Alasannya sederhana: lebih dari satu polamungkin akan sesuai dengan nomor panggilan. Jika ada dua extension yang cocok dengan nomor yangdipanggil, Asterisk akan selalu memilih yang paling cocok. Sebelum menentukan extension mana yang palingcocok, Asterisk akan memproses semua context. Sebagai contoh:

[sales]exten => _12X.,1,NoOp{12X}exten => 12345,1,NoOp(12345}exten => _1234.,1,NoOp{1234.}

Dari contoh di atas, ketika kita menekan ‘12345', kita kurang jelas, extension mana yang akan dijalankan.Untuk mencari tahu, kita gunakan dialplan show 12345@sales:

*CLI> dialplan show 12345@sales[ Context 'sales' created by 'pbx_config' ]'12345' => 1. NoOp(12345}) [pbx_config]'_1234.' => 1. NoOp{1234.}() [pbx_config]'_12X.' => 1. NoOp{12X}() [pbx_c

Page 16: Panduan Panduan Instalasi Dan Konfigurasi Asterisk - WIKI UGOS

8/15/13 panduan:panduan_instalasi_dan_konfigurasi_asterisk - WIKI UGOS

ugos.ugm.ac.id/wiki/panduan:panduan_instalasi_dan_konfigurasi_asterisk 16/31

onfig]=3 extensions (3 priorities) in 1 context. =*CLI>

Asterisk menampilkan semua, 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@sales:

*CLI> dialplan show 12346@sales[ Context 'sales' created by 'pbx_config' ]'_1234.' => 1. NoOp{1234.}() [pbx_config]'_12X.' => 1. NoOp{12X}() [pbx_config]=2 extensions (2 priorities) in 1 context. =-*CLI>

Lagi, pola yang cocok terbaik dengan digit yang dipanggil ditampilkan paling atas.

Pernyataan include Include adalah alat bantu yang sangat hebat untuk menyederhanakan dan mengatur dialplan yang lebih besar.Dengan menggunakan pernyataan include, anda dapat memasukkan contexts dalam context yang ada.

Syntaxinclude ⇒ namadaricontextlain Contoh:

[general][komunikasi]include => internalinclude => external[internal]exten => 2000,1,Dial(SIP/2000)[external]exten => 17005551212,1,Dial(SIP/5551212)

Urutan menjalankan ketika menggunakan pernyataan include Asterisk selalu melihat kecocokan dalam context saat itu terlebih dahulu sebelum mengacu pada context yangdimasukkan dengan include. Jika isian ditemukan, isian itu akan digunakan. Jika tidak ditemukan, Asterisk akanmelihat yang cocok pada context yang dimasukkan pertama, kemudian berikutnya, dan seterusnya. Danmemungkinkan juga untuk memakai include bersarang; yaitu, includes dalam includes. Jika masih ragu-ragu,anda dapat memastikan isian apa yang digunakan Asterisk untuk menangani sebuah panggilan denganmemasukkan perintah dialplan show nomor@namacontext pada Asterisk CLI. Catatan: Pengguna Asterisk 1.2menggunakan show dialplan dan bukan dialplan show. Beberapa contoh:

[general][komunikasi]include => internalinclude => external[internal]exten => 2000,1,Dial(SIP/2000)[external]exten => 17005551212,1,Dial(SIP/5551212)

Page 17: Panduan Panduan Instalasi Dan Konfigurasi Asterisk - WIKI UGOS

8/15/13 panduan:panduan_instalasi_dan_konfigurasi_asterisk - WIKI UGOS

ugos.ugm.ac.id/wiki/panduan:panduan_instalasi_dan_konfigurasi_asterisk 17/31

Katakan kita ingin mengetahui bagaimana Asterisk menangani panggilan ke nomor 2000 dalam contextkomunikasi. Untuk melakukan hal tersebut, kita memasukkan dialplan show 2000@komunikasi dalam CLI:

*CLI> dialplan show 2000@komunikasi[ Included context ‘internal’ created by‘pbx_config’ ]‘2000 => 1. Dial(SIP/2000) [pbx_config]=1 extension (1 priority) in 1 context. =*CLI>

Jika kita memperluas context komunikasi menjadi seperti:

[general][komunikasi]include => internalinclude => externalexten => 2000,1,Answer()exten => 2000,2,Playback(helloworld)exten => 2000,3,Hangup()[internal]exten => 2000,1,Dial(SIP/2000)[external]exten => 17005551212,1,Dial(SIP/5551212)exten =>03012345678,1,Dial(SIP/03012345678)

Kita akan melihat keluaran CLI seperti berikut:

*CLI> dialplan show 2000@komunikasi[ Context 'komunikasi' created by 'pbx_config' ]'2000' => 1. Answer() [pbx_config]2. Playback(helloworld)[pbx_config]3. Hangup() [pbx_config][ Included context 'internal' created by'pbx_config' ]'2000' => 1. Dial(SIP/2000) [pbx_config]=2 extensions (4 priorities) in 2 contexts. =*CLI>

Asterisk akan memainkan file suara helloworld sound dan tidak mengirim panggilan ke nomor 2000, meskipuninclude ada di atas dalam dialplan. Hal ini karena Asterisk selalu melihat kecocokan pada context yangbersangkutan terlebih dahulu sebelum mengecek context yang dimasukkan.

Pernyataan include berdasarkan waktuSebuah pernyataan includedapat dibuat kondisi berdasarkan waktu atau hari. Ini akan membuat lebih mudahuntuk mengimplementasikan aksi yang berbeda pada waktu yang berbeda.

Syntax

include => context|<waktu>|<hari>|<haridaribulan>|<

Page 18: Panduan Panduan Instalasi Dan Konfigurasi Asterisk - WIKI UGOS

8/15/13 panduan:panduan_instalasi_dan_konfigurasi_asterisk - WIKI UGOS

ugos.ugm.ac.id/wiki/panduan:panduan_instalasi_dan_konfigurasi_asterisk 18/31

bulan>

Hari dan bulan menggunakan tiga karakter pertama dari nama hari atau bulan. Contoh, nama hari menjadi mon,tue, wed, thu, fri, sat, sun, dan nama bulan menjadi jan, feb, mar, apr, dst. Waktu dalam format 24 jam. Contoh: Waktu kerja dimulai dari jam 7:00 a.m. sampai 4:00 p.m. Senin sampai Jum’at dan dari jam 7:00 a.m. sampai12:00 p.m. pada hari sabtu. Dialplan akan menjadi seperti berikut:

include => masuk|07:0016:00|monfri|*|*include => masuk|07:0012:00|sat|*|*include => libur[masuk]exten => 2000,1,Dial(SIP/2000)[libur]exten => 2000,1,VoiceMail(2000,u)

Pemrograman Dialplan

Dengan Asterisk, fungsi atau program dapat diterapkan secara eksternal, melalui sebuah script AGI (samadengan script CGI pada web) atau secara internal, melalui fungsi dan aplikasi dalam dialplan. Bahasan kali iniakan memfokuskan pada fungsi internal. Dialplan ditentukan dalam file konfigurasi extensions.conf. Dialplan sendiri seperti program BASIC. Seorangadmin dapat menerapkan fitur dan alur panggilan menggunakan bahasa script sederhana.

Programming “Howto”Struktur programSetiap nomor telepon yang dibuat dalam dialplan Asterisk (/etc/asterisk/extensions.conf) sesungguhnya adalahprogram kecil. Di Asterisk, program disebut “extension.” Sebuah extension tampak seperti ini:

exten => 1001,1,Answer()exten => 1001,n,Playback(helloworld)exten => 1001,n,Hangup()

Prioritas juga dinomori secara urut:

exten => 1001,1,Answer()exten => 1001,2,Playback(helloworld)exten => 1001,3,Hangup()

Dua extension di atas secara fungsi adalah sama. Jika anda menggunakan n, akan memudahkan menambah danmenghapus baris kemudian.

VariablesGunakan aplikasi Set() untuk membuat dan merubah variable:

exten => 1002,1,Set(Favoriteanimal = "Tiger")exten => 1002,n,Set(Favoritenumber = 23)

Page 19: Panduan Panduan Instalasi Dan Konfigurasi Asterisk - WIKI UGOS

8/15/13 panduan:panduan_instalasi_dan_konfigurasi_asterisk - WIKI UGOS

ugos.ugm.ac.id/wiki/panduan:panduan_instalasi_dan_konfigurasi_asterisk 19/31

Gunakan syntax ${VARIABLENAME} untuk membaca dan mencetak variables. Anda dapat mencetak nilaivariable dalam CLI dengan NoOp() (dengan tingkat verbosity 3 atau lebih):

exten => 1003,1,NoOp(${Favoriteanimal})exten => 1003,n,NoOp(${Favoritenumber})

Ada beberapa macam variabel:

Global variables

Berlaku dalam dialplan mana saja dan dibuat atau diubah dengan Set(

Channel variables

Berlaku hanya pada channel saati itu (sebuah channel dapat berupa koneksi antara dua orang dengan sebuahpercakapan telepon). Dibuat atau diubah dengan Set( (tanpa g)

exten => 1004,1,Set(READABLEANYWHERE = 23,g)exten => 1006,1,NoOp(Dialed number: ${EXTEN})

Labels and Goto() Goto() memungkinan untuk melompat dari satu dialplan ke yang lainnya. Jika anda menggunakan prioritas n,dapat menjadi masalah. Solusinya adalah dengan menggunakan label untuk menandai isian khusus dan kemudianpanggil isian dengan label pada Goto(). Contoh:

Dalam sebuah extension:

exten => 1007,1,Answer()exten => 1007,n(Start),Wait(1)exten => 1007,n,Playback(helloworld)exten => 1007,n,Goto(Start)

Antar extensions:

exten => 1008,1,Answer()exten => 1008,n,Goto(1009,Ping)exten => 1009,1(Ping),Playback(helloworld)exten => 1009,n,Wait(2)exten => 1009,n,Goto(1010,Pong)exten => 1010,1(Pong),Playback(ttweasels)exten => 1010,n,Wait(2)exten => 1010,n,Goto(1009,Ping)

Antar contexts:

[hq]exten => 1011,1,Answer()exten => 1011,n,Playback(helloworld)exten => 1011,n,Goto(sales,1012,1)[sales]

Page 20: Panduan Panduan Instalasi Dan Konfigurasi Asterisk - WIKI UGOS

8/15/13 panduan:panduan_instalasi_dan_konfigurasi_asterisk - WIKI UGOS

ugos.ugm.ac.id/wiki/panduan:panduan_instalasi_dan_konfigurasi_asterisk 20/31

exten => 1012,1,Playback(helloworld)exten => 1012,n,Hangup()

While() loops Gunakan While() untuk mengulang dalam dialplan:

exten => 1013,1,Answer()exten => 1013,n,Set(i=1)exten => 1013,n,While($[${i} < 10])exten => 1013,n,SayNumber(${i})exten => 1013,n,Wait(1)exten => 1013,n,Set(i=$[${i} + 1])exten => 1013,n,EndWhile()exten => 1013,n,Hangup()

GotoIf() conditionalAnda dapat melompat ke bagian lain dari dialplan tergantung dari kondisi tertentu yang sesuai dengan GotoIf():

exten => 1014,1,Answer()exten => 1014,n,Set(Favoritestation = 0815)exten => 1014,n,NoOp(Check to see if${Favoritestation} is calling.)exten => 1014,n,GotoIf($[${CALLERID(num) =${Favoritestation}]?yes,no)exten => 1014,n(yes),Playback(helloworld)exten => 1014,n,Hangup()exten => 1014,n(no),Playback(ttmonkeys)exten => 1014,n,Hangup()

Gosub() subroutinesDengan Gosub() panggilan akan ditersukan ke sebuah subroutine; subrutin ini dapat mengembalikan ke prioritasasal dengan Return():

exten => 1015,1,Gosub(cidset)exten => 1015,n,Dial(SIP/${EXTEN})exten => 1015,n(cidset),Set(CALLERID(all)=ApfelmusGmbH <012345678>)exten => 1015,n,Return()

VariablesSebuah variabel adalah tempat untuk sebuah nilai sebenarnya. Secara tepat nilai tergantung dati jenis variabel.Pada Asterisk, variables dapat berisi nomor, huruf dan string (angka dan huruf secara berurutan). Variablessangat berguna karena dia memungkinkan kita untuk membuat aturan untuk alur panggilan berubah sesuaikeadaan dan membuat mudah untuk mengakomodasi perubahan akan datang pada aplikasi atau sistem telepon.Pada Asterisk, variable memiliki jangakauan yang berbeda. Ada variabel lokal (disebut sebagai channelvariables dalam Asterisk), yang hanya dapat ditentukan nialinya untuk variabel global, aktif, dan saat itu, yangakan mengubah nilai untuk seluruh channels. Kita seharusnya sudah terbiasa dengan beberapa variabel Asteriskdari konfigurasi yang telah kita bahas (misalnya sip.conf). Kita juga dapat dengan bebas membuat variabel kitasendiri dan menggunakannya pada file konfigurasi.

Memperluas variabel dalam extensionNilai dari variabel dapat diperoleh dengan syntax ${VARIABLENAME}. Ada beberapa variables yand di isi

Page 21: Panduan Panduan Instalasi Dan Konfigurasi Asterisk - WIKI UGOS

8/15/13 panduan:panduan_instalasi_dan_konfigurasi_asterisk - WIKI UGOS

ugos.ugm.ac.id/wiki/panduan:panduan_instalasi_dan_konfigurasi_asterisk 21/31

secara otomatis oleh Asterisk. Sebagai contoh, nomor yang dipanggil selalu disimpan dalam variabel sistemAsterisk ${EXTEN}. Menggunakan patterns dan variables, dengan itu dapat mempesingkat penulisan dialplan.Sebelum:

exten => 100,1,Dial(SIP/100)exten => 101,1,Dial(SIP/101)exten => 102,1,Dial(SIP/102)exten => 103,1,Dial(SIP/103)exten => 104,1,Dial(SIP/104)exten => 105,1,Dial(SIP/105)exten => 106,1,Dial(SIP/106)exten => 107,1,Dial(SIP/107)exten => 108,1,Dial(SIP/108)exten => 109,1,Dial(SIP/109)

Sesudah:

exten => _10X,1,Dial(SIP/${EXTEN})

Pertimbangan Umumnama variable tidak harus dalam huruf besar semua seperti pada contoh di atas, atau tidak casesensitive. Tetapiide bagus untuk menggunakan nama variabel dalam huruf besar karena membudahkan untuk identifikasi dankode dialplan lebih mudah untuk dibaca. Kekurangannya adalah anda tidak dapat membedakan nama variabeldari besar kecilnya nama.Contoh :${FOO} adalah sama dengan ${foo}.[Penting] Variabel sistem Asterisk seperti ${EXTEN} selalu menggunakan huruf besar.

Variable stringVariabel string (maksudnya variable yang berisi text dan bukan angka) harus didefinisikan menggunakan petikdua, meskipun Asterisk masih menerimanya tanpa petik duas dua contoh berikut memiliki fungsi yang sama:

exten => 1234,1,Set(FRUIT=Apple)exten => 1234,2,Set(FRUIT=”Apple”)

Jika string berisi koma atau spasi, anda harus menggunakan petik dua:

exten => 1234,1,Set(FRUITTYPES=”Apple, Pear, etc.”)

Maka dari itu, alangkah baiknya membiasakan menuliskan petik dua untuk variabel string yang kita definisikan.

Karakter cadangan Kadang sebuah variabel berisi karakter cadangan (karakter yang memiliki fungsi khusus dan diterjemahkanberbeda). Sebagai contoh, jika anda ingin membuat variabel dengan karakter garis bawah (”_”) anda harusmenggunakan sebuah karakter “escape” untuk memberitahu Asterisk bahwa karakter tersebut bukan karaktercadangan. Karakter berikut harus di escape ketika menggunakan dalam sebuah variabel: [ ] $ ” \ Karakter escape dalam extensions.conf adalah “\” (backslash): Contoh:

Page 22: Panduan Panduan Instalasi Dan Konfigurasi Asterisk - WIKI UGOS

8/15/13 panduan:panduan_instalasi_dan_konfigurasi_asterisk - WIKI UGOS

ugos.ugm.ac.id/wiki/panduan:panduan_instalasi_dan_konfigurasi_asterisk 22/31

exten => 1234,1,Set(AMOUNT=”\$10.00)

Jika anda ingin menggunakan karakter backslash dalam variabel, anda juga harus melakukan escape:

exten => 1234,1,Set(ROOMNUMBER=”48\\10)

IntegersJika variabel berisi sebuah integer, variabel itu tidak dapat memiliki angka lebih dari 18 digit. Jika lebih dari ituakan menyebabkan kesalahan yang akan disimpan dalam file log.

Mendefiniskan variabel global dalam extensions.confVariabel global ditentukan di awal dari extensions.conf. Anda harus menaruhnya dalam context khusus [globals],setelah [general].Contoh:

[general][globals]RINGTIME=90[fromintern]exten => _XXX,1,Dial(SIP/${EXTEN},${RINGTIME})exten => _XXX,n,VoiceMail(${EXTEN})

Mendefiniskan variabel dengan Set()Set() digunakan untuk mendefinisikan sebuah variabel pada sebuah extension.

SyntaxSet(=[,=][,]) Pengaturan opsi g membuat variabel global; tanpa g, variabel dianggap sebagai variabel channellokal.Contoh:

; Buat variabel global:exten => 10,1,Set(RINGTIME=90,g); Buat variable channel:exten => 10,2,Set(FAVORITEFRUIT="Apple"); Buat dua variabel sekaligus:exten => 10,3,Set(VAR1=10,VAR2=23); Cetak variabel pada CLIexten => 10,4,NoOp(RINGTIME = ${RINGTIME})exten => 10,5,NoOp(FAVORITEFRUIT =${FAVORITEFRUIT})exten => 10,6,NoOp(VAR1 = ${VAR1})exten => 10,7,NoOp(VAR2 = ${VAR2})

Menurunkan variabel channelChannel baru akan dibuat jika ada percakapan, dan akan memiliki variabel channel sendiri.

Turunan tingkat satuJika kita ingin memiliki sebuah variabel channel tetap berada pada channel yangbaru, kita dapat melakukannyadengan menambah awalan variabel dengan sebuah karakter “_” (garis bawah). Ketika variabel diturunkan olehchannel yang baru, Asterisk secara otomatis akan menghilangkan awalan.Ini untuk memastikan bahwa variabel hanya diturunkan sekali.

Page 23: Panduan Panduan Instalasi Dan Konfigurasi Asterisk - WIKI UGOS

8/15/13 panduan:panduan_instalasi_dan_konfigurasi_asterisk - WIKI UGOS

ugos.ugm.ac.id/wiki/panduan:panduan_instalasi_dan_konfigurasi_asterisk 23/31

Contoh:

exten => 1234,1,Set(_CAKE=”Marble cake”)

Turunan bertingkat Jika kita menginginkan penurunan variabel channel tidak terbatas, kita dapatmelakukannya dengan menambahkan dua karakter “_” (garis bawah) di awal variabel. Variable yang diawalidengan cara ini selalu diturunkan oleh channel bentukan yang baru. Ketika memanggil sebuah variabel turunan,pemanggilan nama variabel tidak membedakan apakah menggunakan awalan atau tidak. Contoh berikut akanmemberikan keluaran yang sama pada CLI:

exten => 1234,1,NoOp(${__CAKE})exten => 1234,n,NoOp(${CAKE})

Variabel channel sistemDaftar berikut menjelaskan pentingnya variabel channel sistem. Variabel berikut dapat dibaca tetapi tidak dapatdiberi nilai dalam extensions.conf, karena telah didefinisikan oleh Asterisk. Beberapa variabel yang dijelaskandisini tidak benarbenar sebagai variabel tetapi adalah fungsi bawaan Asterisk. Pada prakteknya, merekamemiliki peranan yang mirip, maka variabel tersebut dimasukkan dalam daftar berikut.${ANSWEREDTIME}Waktu kumulatif untuk sebuah koneksi aktif (dengan kata lain adalah waktu sejak pembicaraan dimulai).${BLINDTRANSFER}Nama channel pada sisi lain dari blind transfer.${CHANNEL}Nama dari channel saat itu.${CONTEXT}Nama context saat itu.${EPOCH}Waktu unix saat ini (jumlah waktu yang dilalui sejak dimulai unix “epoch”, yang dimulai pada tengah malamUTC, January 1st, 1970)${EXTEN}Extensi yang dipanggil saat itu.${ENV(VARIABLENAME)}Variable luar VARIABLENAME${HANGUPCAUSE}Penyebab koneksi putus.${INVALID_EXTEN}Digunakan dalam extensi i dan berisi extensi yang dipanggil.${PRIORITY}Prioritas saat itu pada extension yang dijalankan.${TRANSFER_CONTEXT}Context dari panggilan yang dialihkan.${UNIQUEID}ID unik untuk koneksi saat itu.${SYSTEMNAME}Nama sistem yang didefinisikan dengan systemname dalam / etc/asterisk/asterisk.conf.

Memanipulasi variabelVariable sangat berguna ketika kita mengganti nilainya pada waktu eksekusi, karena akan memberikan kitafleksibilitas untuk melakukan sesuatu pada program kita.

Page 24: Panduan Panduan Instalasi Dan Konfigurasi Asterisk - WIKI UGOS

8/15/13 panduan:panduan_instalasi_dan_konfigurasi_asterisk - WIKI UGOS

ugos.ugm.ac.id/wiki/panduan:panduan_instalasi_dan_konfigurasi_asterisk 24/31

SubstringSecara umum, sebuah string terdiri dari rangkaian karakterkarakter. Ukuran string ditentukan oleh jumlahkarakter yang ada didalamnya. Contoh, “pohon apel” terdiri dari 10 karakter (kita harus memasukkan spasi).Semua string dapat dipecah dalam substrings. Contoh, “apel”, “pohon”, “ape” dan “hon ap” semuanya adalahsubstrings dari “pohon apel”. Secara teori, sebuah string dapat berukuran berapa saja; dalam bahasan ini adajuga string tunggal, meskipun tidak diterapkan. Manipulasi string adalah teknik yang penting dalam aplikasipemrograman. Asterisk memungkinkan kita memanipulasi string dan substrings menggunakan karakter : (titikdua). Dengan menggunakan karakter :, kita dapat mengeluarkan bagian terntentu dari variabel string yang ada.

Syntax

${VARIABLENAME[:mulai[:panjang]]}

Contoh:Banyak sistem telepon memerlukan nomor awal untuk mendapatkan saluran luar(Biasanya “0”). Nomor tujuantidak dapat memasukkan nomor awal ini. Jika kita menekan 02741234567 , kita dapat menyimpan nomor luarsebenarnya dalam ${OUTGOINGNUMBER} menggunakan dialplan berikut.

exten => _0X.,1,Set(OUTGOINGNUMBER=${EXTEN:1})

Jika pilihan panjang dihilangkan, seluruh string akan diambil secara otomatis. Bagaimana jika kita hanyamenginginkan 7 digit terakhir dari nomor yang dipanggil? Dalam kasus ini kita menggunakan nomor negatif untukparameter mulai. Isian berikut akan menyimpan 1234567 dari contoh berikut dalam variabel${LOCALNUMBER}.

exten => _0X.,1,Set(LOCALNUMBER=${EXTEN:7})

Kita juga dapat mendapatkan kode area:

exten => _0X.,1,Set(AREACODE=${EXTEN:1:3})

Berikut cara untuk mendapatkan informasi yang berguna dari nomor yang dipanggil:

exten => _0X.,1,Set(AREACODE=${EXTEN:1:3})exten => _0X.,n,Set(LOCALNUMBER=${EXTEN:4})

Extension khususKarena semua logika pemograman harus tampak melalui extension, kit aperlu beberapa extension tambahanyang telah didefinisikan system.

Extension hh merupakan standar extension “hangup”. Extension h, jika dikonfigurasi, dipanggil ketika penelpon menutuptelepon. Segera setelah telepon ditutup, isi dari ${EXTEN} berubah menjadi h.Contoh:Katakan kita ingin variabel global KONEKSI berisi jumlah percakapan yang aktif saat itu pada waktu yangditentukan. Artinya kita perlu menambah satu isi KONEKSIT setiap ada koneksi dan mengurangi satu setiapkoneksi putus. Dialplan berikut menggambarkan ide dasarnya:

Page 25: Panduan Panduan Instalasi Dan Konfigurasi Asterisk - WIKI UGOS

8/15/13 panduan:panduan_instalasi_dan_konfigurasi_asterisk - WIKI UGOS

ugos.ugm.ac.id/wiki/panduan:panduan_instalasi_dan_konfigurasi_asterisk 25/31

[global]KONEKSI=0[frominternal]exten => _X.,1,Set(KONEKSI=$[${KONEKSI} + 1]|g)exten => _X.,2,Dial(SIP/${EXTEN})exten => h,1,Set(KONEKSI=$[${KONEKSI} 1]|g)

Extension iUntuk membuat sebuah context menangani berbagai keadaan dengan baik, kita menggunakan extension khusus i(”i” singkatan dari invalid) yang menangai semua panggilan yang tidak ditangani dalam context. Mirip denganextension h, sekali extension i dikerjakan ${EXTEN} tidak akan berisi nomor yang dipanggil lagi. Untukmendapatkan nomor yang dipanggil pada extension i, gunakan ${INVALID_EXTEN}.Contoh:pada sebuah perusahaan minuman, PT. Ngelak, pegawai di departemen B hanya dapat menelpon extension 100sampai 199. Penelpon yang memanggil nomor lain akan mendengar pesan, “I’m sorry. That is not a validextension. Please try again.”

[departmentb]exten => _1XX,1,Dial(${EXTEN})exten => i,1,NoOp(Sebuah nomor salah${INVALID_EXTEN} telah dipanggil.)exten => i,2,Answer()exten => i,3,Playback(invalid)exten => i,4,Hangup()

Extension o dan aJika operator=yes dibuat dalam voicemail.conf, panggilan akan diteruskan ke extension o (o adalah untukoperator) jika penelpon menekan “0. Tekan * (bintang) akan meneruskan panggilan ke extension a (abort).

Extension t dan TExtension t dan T untuk menangani batas waktu dalam context.

Extension tJika tidak ada masukan dalam sebuah menu IVR dalam batas waktu tertentu, extesnion t akan dipanggil.Contoh:

[mainmenu]exten => 10,1,Answer()exten => 10,n,Background(marryme) ; “Marry me?Press 1 for yes, 2 for no.”exten => 1,1,Playback(thankyoucooperation) ; 1 =>“Thank you.”exten => 1,n,Hangup()exten => 2,1,Playback(hanguptryagain) ; 2 =>“Hang up and try again.”exten => 2,n,Hangup()exten => t,1,Hangup() ; no input => hang up

Extension TExtension T dipanggil setelah batas waktu absolut (pasti) habis. Anda dapat mengatur batas waktu ini denganSet(TIMEOUT(absolute)= Penghitungan berjalan ketika nilai timeout ditentukan (dengan kata lain, tidakotomatis dijalankan, tetapi harus dijalankan secara jelas dengan perintah Set()). Set(TIMEOUT(absolute)=0)menonaktifkan batas waktu absolute.

Page 26: Panduan Panduan Instalasi Dan Konfigurasi Asterisk - WIKI UGOS

8/15/13 panduan:panduan_instalasi_dan_konfigurasi_asterisk - WIKI UGOS

ugos.ugm.ac.id/wiki/panduan:panduan_instalasi_dan_konfigurasi_asterisk 26/31

Contoh:

exten => 20,1,Answer()exten => 20,2,Set(TIMEOUT(absolute)=120)exten => 20,3,Playback(helloworld)exten => 20,4,Wait(1)exten => 20,5,Goto(3)exten => T,1,Wait(1)exten => T,2,Playback(thankyouforcalling)exten => T,3,Wait(1)exten => T,4,Hangup()

Extension sMasukan pertama pada semua extension selalu nama ata nomor yang dipanggil. Ketika sebuah panggilan datangdari PSTN, Asterisk tidak mengerti apa yang dipanggil dan siapa yang memanggil. Untuk keadaan tidak dapatmenentukan nomor yang dipanggil, kita menggunakan extension s.Contoh:

exten => s,1,Answer()exten => s,2,Wait(1)exten => s,3,Play(ttmonkeys)exten => s,4,Wait(1)exten => s,5,Hangup()

MacroMacro adalah bentuk dari subroutine. Dapat berupa rangkaian extension yang complex tetapi dipanggil melaluisebuah perintah. Dengan macro akan mengurangi pengulangan dalam dialplan dan membuat sederhana dan lebihkecil. Contoh sederhana seperti berikut:

[macroincoming]exten => s,1,Dial(SIP/${MACRO_EXTEN},10)exten => s,n,VoiceMail(${MACRO_EXTEN})[sales]exten => _2XXX,1,Macro(incoming)[buildingmgr]exten => _2XXX,1,Macro(incoming)

Penggunaan macro cenderung memisahkan pengguna dalam dua kelompok komunitas. Salah satu merasa macromembuat dialplan lebih mudah dipahami, dan yang lain membuat dialplan semakin membingungkan.

Dasardasar MacroKetika mendefinisikan macro, perhatikan beberapa catatan berikut:

Ketika mendefinisikan macro, hanya sebuah extension extension s

yang diperbolehkan.

${EXTEN} yang asli dan variabel ${CONTEXT} tidak dapat digunakan

dalam macro. Kita harus menggunakan ${MACRO_EXTEN} dan ${MACRO_CONTEXT}.

Ketika memanggil sebuah macro, argumen dengan comma (”,”) atau

Page 27: Panduan Panduan Instalasi Dan Konfigurasi Asterisk - WIKI UGOS

8/15/13 panduan:panduan_instalasi_dan_konfigurasi_asterisk - WIKI UGOS

ugos.ugm.ac.id/wiki/panduan:panduan_instalasi_dan_konfigurasi_asterisk 27/31

pemisah (”|”) dapat diberikan. Argument ini dipanggil dalam macro dengan ${ARGn} ( n adalah bilangan bulatpositif yang mengindikasikan urutan argumen).

Sebuah macro ditentukan dalam kurung siku ([macronamamacro]) dan

dipanggil dengan aplikasi Macro() dalam sebuah extension.

Contoh lain sebuah macro:

[macrotohg1500]exten => s,1,Answer()exten => s,2,Dial(OOH323/${ARG1}@192.168.0.51,30,tTr)exten => s,3,Goto(s${DIALSTATUS},1)exten => s,4,Hangup()exten => t,1,Hangup()exten => T,1,Hangup()exten => h,1,Hangup()exten => sBUSY,1,Playback(thepartyyouarecalling)exten => sBUSY,2,Playback(iscurntlybusy)exten => sBUSY,3,Goto(s,4)exten => sCONGESTION,1,Playback(thepartyyouarecalling)exten => sCONGESTION,2,Playback(iscurntlyunavail)exten => sCONGESTION,3,Goto(s,4)exten => _s.,1,Goto(sBUSY,1)exten => _.,1,Goto(s,4)[default]exten => 209,1,Goto(mainmenu,s,1)exten => _5.,1,Macro(tohg1500,${EXTEN})

Interactive Voice Response (IVR)

Sebuah sistem interactive voice response atau penjawab suara interaktif membuat sistem komputer berinteraksidengan penelepon, yang menyediakan masukan ke sistem dengan cara menekan keypad pada pesawat telepon(DTMF,“dualtone multifrequency”, atau disebut Touch Tone®) atau mengatakan sesuatu (dengan pengenalsuara alamai. Kebanyakan sistem IVR menyediakan menu pilihan untuk mengalihkan panggilan tanpa campurtangan operator, tetapi sistem IVR modern dapat juga berupa aplikasi komplek yang menangani informasi ataumengendalikan peralatan.

Prinsip dasar dari semua sistem IVR secara umum yaitu, penelepon mendengarkan sebuah menu dan memilihpilihan dari menu untuk melaksanakan perintah, atau, alternatifnya, memasukkan informasi (dalam format nomor,dengan menekan keypad). IVR dapat digunakan untuk mendapatkan infromasi saham, jadwal kereta, atauprakiraan cuaca.; juga dapat digunakan untuk sistem pembayaran otomatis, seperti tiket konser. Aplikasi IVRhanya dibatasi oleh pikiran Anda sendiri. Kompleksitas sistem bervariasi. Sistem yang lebih canggih dapatmenghasilkan suara dari text secara langsung menggunakan sistem textto speech dan menerima masukan suarapengguna dengan pengenal suara. Ketika diimplementasikan dengan benar, IVR dapat memberikan sebuahkenyamanan tingkat tinggi, tetapi implementasinya sangat komplek sehingga jarang digunakan kecuali dalamorganisasi yang besar. Bentuk IVR paling sederhana adalah yang paling umum. Pesan direkam sebelumnyadiputarkan ke penelepon; Penelepon menjawab dengan menekan keypad DTMF, dan Asterisk dapat mengenalsecara mudah pada instalasi default. Pendapat umum pada IVR berbedabeda.

Beberapa orang menganggap bentuk otomasi yang sangat membantu, dan pendapat lain menyebabkan frustasi.

Page 28: Panduan Panduan Instalasi Dan Konfigurasi Asterisk - WIKI UGOS

8/15/13 panduan:panduan_instalasi_dan_konfigurasi_asterisk - WIKI UGOS

ugos.ugm.ac.id/wiki/panduan:panduan_instalasi_dan_konfigurasi_asterisk 28/31

Biasanya karena hasil dari perancangan menu yang jelek atau pengenalan suara dengan ratarata kesalahan yangtinggi. Sebuha IVR yang berfungsi baik dapat menyenangkan pelanggan, tetapi implementasi yang jelek dapatmenyebabkan pelanggan pergi. Hatihati ketika merencanakan sebuah sistem IVR. Beri perhatian padarancangan menu dan beri waktu untuk pengembangan dan penerapan yang baik. Ujicoba terus menerus danpengawasan setelah penerapan pada penutupan telepon lebih awal harus menjadi bagian dari rutinitas. Ingatbahwa sistem IVR bukan akhir segalanya, atau solusi segala masalah. Pikirkan pengguna anda!

Sebuah IVR sederhanaAsterisk menyertakan file suara standard termasuk file marryme.gsm, berisi ucapan “Will you marry me? Press 1for yes or 2 for no.” Untuk membuat aplikasi “lamaran pernikahan”, dialplan berikut sudah cukup:

exten => 30,1,Answer()exten => 30,2,Background(marryme)exten => 30,3,Hangup()exten => 1,1,Playback(thankyoucooperation)exten => 1,2,Hangup()exten => 2,1,Playback(sorry)exten => 2,2,Hangup()

Jika penelpon menekan ekstensi 30, Asterisk menjawab dan memutar file marryme.gsm. Selama penggunaanaplikasi Background(), pengguna dapat memasukkan pilihan kapanpun selama diputar. Masukan akanditerjemahkan sebagai sebuah extension dan panggilana panggilan akan diteruskan ke ekstension tersebut. Jikapenelepon menekan 1, dia akan mendengar “Thank you for your cooperation,” Setelah itu Asterisk putus.

Perbedaan antara Playback() dan Background()Playback() hanya memainkan file suara; masukkan diabaikan. Background() memainkan file suara sambilmenerima masukan dari penelpon, yang diterjemahkan sebagai extension dan masukan akan dijadikan extensiontersendiri.

Perbedaan antara 10 dan 1000Untuk melihat extension yang dimulai dengan angka yang sama, mari kita perhatikan contoh berikut:

exten => 30,1,Answer()exten => 30,2,Background(marryme)exten => 30,3,Hangup()exten => 1,1,Playback(thankyoucooperation)exten => 1,2,Hangup()exten => 10,1,NoOp(Test mit 10)exten => 10,2,Hangup()exten => 100,1,NoOp(Test mit 100)exten => 100,2,Hangup()exten => 2,1,Playback(sorry)exten => 2,2,Hangup()

Background() menunggu beberapa waktu setiap nomor yang dimasukkan untuk membedakan antara 1, 10 and100. Sekali waktu (TIMEOUT) telah habis, Masukan dianggap selesai. Tip: TIMEOUT untuk mengatur bataswaktu. Untuk informasi, masukkan fungsi TIMEOUT dalam Asterisk CLITIMEOUT ditentukan dalam satuan detik dan dapat diatur dalam dialplan.

exten => 123,1,Set(TIMEOUT(digit)=3)

“Pengaturan waktu yang pintar”

Page 29: Panduan Panduan Instalasi Dan Konfigurasi Asterisk - WIKI UGOS

8/15/13 panduan:panduan_instalasi_dan_konfigurasi_asterisk - WIKI UGOS

ugos.ugm.ac.id/wiki/panduan:panduan_instalasi_dan_konfigurasi_asterisk 29/31

Pada dialplan di atas, Asterisk akan memproses secara langsung ketika nomor 2 ditekan, tetapi setelah waktuhabis ketika 1 ditekan. Asterisk secara pintar menentukan sebuha nomor yang dimasukkan apakah cocokdengan beberapa extension atau tidak dan bertindak sesuai ada tidaknya.

Invalid input (extension i)Masukan yang salah (sembarang masukan yang tidak terdapat kecocokan extension pada dialplan) dapatditangani dengan extension i. Contoh:

exten => 30,1,Answer()exten => 30,2,Background(marryme)exten => 30,3,Hangup()exten => 1,1,Playback(thankyoucooperation)exten => 1,2,Hangup()exten => 2,1,Playback(sorry)exten => 2,2,Hangup()exten => i,1,Background(sorry)exten => i,2,Hangup()

PausesCara yang mudah untuk menghentikan sementara adalah dengan memainkan file kosong. Beberapa file diamantara 1 sampai 9 detik terdapat pada /var/lib/asterisk/sounds/silence/. Jika kita akan memeberikan jeda 5detik, berikut contohnya:

exten => 30,1,Answer()exten => 30,2,Background(marryme)exten => 30,3,Background(silence/5)exten => 30,4,Hangup()exten => 1,1,Playback(thankyoucooperation)exten => 1,2,Hangup()exten => 2,1,Playback(sorry)exten => 2,2,Hangup()exten => i,1,Background(marryme)exten => i,2,Hangup()

Multilevel IVR systemsMasalah pada IVR multilevel adalah penelpon harus memasukkan digit tunggal beberapa kali (sering juga digityang sama), tetapi menghasilkan jawaban yang berbeda tergantung pada tingkat menu. Karena nomor hanyabisa dipakai seklai pada context tertentu, penelpon akan terhenti pada menu tingkat pertama. Jika kitamemerlukan menu bertingkat yang menyediakan jawaban berbeda untuk angka yang sama, kita harusmenempatkan submenu pada context yang berbeda ([kantin] pada contoh kita). Kita melompat antar contextdengan menggunakan aplikasi Goto(). Mari kita asumsikan anda memiliki file suara yang tersimpan di/var/lib/asterisk/sounds/:

mainmenu.gsm

“Tekan 1 untuk penjualan, 2 untuk layanan, atau 3 untuk kantin.”

cafeteria.gsm

“Tekan 1 untuk mendengar menu minggu ini atau 2 untuk mendengar menu minggu depan.”

cafeteriamenuthisweek.gsm

“Senin: Bakmi Goreng. Selasa: Ayam bakar…”

Page 30: Panduan Panduan Instalasi Dan Konfigurasi Asterisk - WIKI UGOS

8/15/13 panduan:panduan_instalasi_dan_konfigurasi_asterisk - WIKI UGOS

ugos.ugm.ac.id/wiki/panduan:panduan_instalasi_dan_konfigurasi_asterisk 30/31

cafeteriamenunextweek.gsm

“Senin: Nasi goreng, telur ceplok..”Jika penjualan di extensi 100d an divisi layanan ada di 150, dialplan untuk IVR akan seperti berikut:

[exampleivr]; Menu akan diulang sampai penelepon memasukkan pilihan.;exten => 30,1,Answer()exten => 30,2,Background(mainmenu)exten => 30,3,Background(silence/3)exten => 30,4,Goto(2)exten => 1,1,Dial(SIP/100)exten => 2,1,Dial(SIP/150); Goto() pergi ke context lain ([kantin]);exten => 3,1,Goto(kantin,100,1)exten => i,1,Goto(30,2)[kantin]exten => 100,1,Background(cafeteria)exten => 100,2,Background(silence/3)exten => 100,3,Goto(1)exten => 1,1,Playback(cafeteriamenuthisweek)exten => 1,2,Wait(2)exten => 1,3,Goto(1)exten => 2,1,Playback(cafeteriamenunextweek)exten => 2,2,Wait(2)exten => 2,3,Goto(1); Invalid input kembali ke menu utamaexten => i,1,Goto(exampleivr,30,2)

Kedalaman IVRMeskipun secara teori memungkinkan untuk mendukung tingkat menu IVR tanpa batas, pada prakteknyadisarankan untuk menjaga agar maksimal tingkat menunya adalah 3. Kebanyakan penelpon menutuppanggilannya setelah tingkat menu ketiga.

Rencana IVR Dinas Perijinan Pemkot Jogja

Menu utama

11.gsm“Selamat datang di layanan perijinan kota Jogjakarta.Tekan 1 untuk Informasi perijinan bangunan,Tekan 2 untuk perijinan Usaha,Tekan 3 untuk Perijinan Kepariwisataan,Tekan 4 untuk informasi lainnya,Tekan * untuk mengulang,tekan 9 untuk operator”

Informasi perijinan bangunan

111.gsm (21111)Tekan 1 untuk persyaratan imb,tekan 2 untuk persyaratan saluran,tekan 3 untuk persyaratan penyambungan air

Page 31: Panduan Panduan Instalasi Dan Konfigurasi Asterisk - WIKI UGOS

8/15/13 panduan:panduan_instalasi_dan_konfigurasi_asterisk - WIKI UGOS

ugos.ugm.ac.id/wiki/panduan:panduan_instalasi_dan_konfigurasi_asterisk 31/31

Persyaratan imb

1111.gsm1. membawa denah rumah2. membawa bukti pbb

Persyaratan saluran

1112.gsm1. membawa denah saluran2. membawa ijin warga

[IVRPerijinan]; Menu akan diulang sampai penelepon memasukkan pilihan.;exten => 290274,1,Answer()exten => 290274,2,Background(buativr/11)exten => 290274,3,Background(silence/3)exten => 290274,4,Goto(2)exten => 1,1,Goto(bangunan,100,1)exten => 2,1,Goto(usaha,200,1)exten => 3,1,Goto(pariwisata,300,1)exten => 4,1,Goto(lain,300,1)exten => 9,1,Dial(SIP/222)exten => i,1,Goto(290274,2)[bangunan]exten => 100,1,Background(buativr/111)exten => 100,2,Background(silence/3)exten => 100,3,Goto(1)exten => 1,1Background(buativr/1111)exten => 1,2,Wait(2)exten => 1,3,Goto(1)exten => 2,1,Background(buativr/1112)exten => 2,2,Wait(2)exten => 2,3,Goto(1)exten => i,1,Goto(IVRPerijinan,290274,2)