VoIP: Detail Konfigurasi Asterisk untuk Panggilan Keluar dan Masuk

From OnnoWiki
Revision as of 08:15, 29 December 2009 by Onnowpurbo (talk | contribs) (New page: Konfigurasi Asterisk untuk Panggilan Keluar dan Masuk Mendefinsikan SIP Channel di sip.conf Setiap SIP client dan server di identifikasi dengan sebuah blok text yang kira-kira seperti ...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Konfigurasi Asterisk untuk Panggilan Keluar dan Masuk

Mendefinsikan SIP Channel di sip.conf

Setiap SIP client dan server di identifikasi dengan sebuah blok text yang kira-kira seperti

[xxx] type=yyy parameter1=nilai parameter2=nilai

Dimana xxx adalah nama yang diasosiasikan dengan SIP client, atau nama sembarang yang digunakan oleh file konfigurasi lain untuk mereferensikan pada sebuah peralatan SIP. Biasanya, sebuah SIP phone dengan nomor extension 123, biasanya akan mempunyai entry yang dimulai dengan [123]. Perlu dicatat bahwa anda tetap perlu mengaktifkan extension 123 di file extensions.conf agar orang dapat menelepon ke extension 123. Type harus berisi "user", "peer" atau "friend".

Asterisk akan mencocokan call yang masuk dengan nama dari device dengan type=user dari percakapan protokol SIP di kolom From: user name (dengan tidak mengindahkan SIP domain). Cara lain yang juga digunakan adalah membandingkan permohonan SIP yang cocok dengan [xxx} pada file sip.conf, akan dilihat IP address pemohon yang masuk, dan melihat informasi peer dari bagian [xxx] yang cocok dengan host=nilai. Jika host=dynamic, pencocokan tidak mungkin dilakukan sampai SIP client mendaftarkan diri.


Asterisk Sebagai SIP Client

Asterisk dapat mendaftarkan diri ke SIP server lain dan menjadi client, perintah yang digunakandi sip.conf di bawah [general] agar mendaftarkan diri ke SIP server lain adalah

register => user[:secret[:authuser]]@host[:port][/extension]

Jika anda mempunyai masalah dengan jaringan komputer anda, misalnya sambungan yang tidak stabil, sering putus, dan anda kehilangan registerasi ke SIP server anda, anda dapat menambahkan parameter registerattempts dan registertimeout di bagian general sebelum definisi register. Menset registerattempts=0 akan memaksa Asterisk untuk terus berusaha mendaftarkan diri sampai berhasil (nilai default adalah 10 kali mencoba). Nilai registertimeout mengatur lama waktu dalam detik antara usaha untuk mendaftarkan diri (nilai default adalah 20 detik).

Contoh: register => 2345:password@mysipprovider.com/1234

Perintah di atas akan mendaftarkan nomor 2345 ke mysipprovider.com dan akan di kenali sebagai extension 1234 di Asterisk yang kita operasikan. Dalam contoh di atas maka parameter yang digunakan adalah,

user - user id untuk SIP server (contoh 2345) authuser - authorization user (optional) untuk SIP server secret - user password. host - nama server (contoh mysipprovider.com). port - port SIP di Server. Default 5060. extension - nomor extension lokal di Asterisk (contoh 1234).

Nomor extension digunakan untuk menghubungi extension lokal Asterisk dari SIP Server tempat kita mendaftarkan diri. Jika tidak ada extension maka secara automatis Asterisk akan masuk ke extension "s".

Untuk melihat apakah Asterisk telah berhasil mendaftarkan diri dengan baik ke SIP Server, dapat menggunakan Command Line Interface Asterisk yang diakses melalui perintah asterisk -r di shell. Status registrasi dapat dilihat melalui perintah

sip show registry

tampaknya perintah ini akan di tiadakan di Asterisk versi 1.4, akan diganti menjadi

sip list registry

Untuk melihat pesawat telepon / extension yang terdaftar di Asterisk yang kita operasikan, dapat dilihat menggunakan perintah

sip show peers

untuk Asterisk 1.4 tampaknya akan diganti menggunakan

sip list peers

Untuk melakukan panggilan ke SIP Server diluar Asterisk, kita perlu mendefinsikan di sip.conf seperti contoh berikut

[mysipprovider-out] type=peer secret=password username=2345 host=sipserver.mysipprovider.com fromuser=2345 fromdomain=fwd.pulver.com nat=yes context=from-mysipprovider ; di definsikan lebih lanjut di extensions.conf

Di extensions.conf, kita perlu menambahkan perintah seperti

exten => _9.,1,Dial(SIP/${EXTEN:1}@mysipprovider-out,30,r)

Mohon di catat bahwa variabel ${EXTEN:1} disini akan mengambil semua karakter / huruf dari extension yang masuk kecuali satu karakter yang paling depan, dalam hal ini angka 9.

Sedang konfigurasi extensKonfigurasi SIP - generalions.conf untuk menerima call yang masuk dari SIP Server dapat juga di kembangkan dengan menambahkan perintah sebagai berikut

[from-mysipprovider] exten => 1234,1,Answer ; 1234 adalah contect extension, default contact extension adalah "s" exten => 1234,2,Dial(SIP/111,25,Ttr) ; incoming call di redirect ke SIP telepon nomor 111 exten => 1234,3,Hangup

Konfigurasi SIP - general

Pada bagian [general] di sip.conf ada beberapa variabel yang dapat kita konfigurasi, beberapa diantaranya adalah

allow = <codec>

codec yang di ijinkan berurut berdasarkan preferensi. Gunakan disallow=all terlebih dulu sebelum allow codec.

disallow = all ; Tidak mengijinkan semua codec untuk digunakan.

allowexternalinvites = yes|no ; Enable / Disable INVITE & REFER ke non-local domain. Default yes.

allowguest = yes|no ; Allow atau reject panggilan dari guest (Default yes).

allguest = yes|no ; Allow / deny panggilan dari guest. Default yes.

Autocreatepeer = yes|no

Jika di set yes, semua orang dapat dengan mudah login sebagai peer tanpa password, biasanya bermanfaat untuk beroperasi dengan SER. Default no.

autodomain = yes|no

Enable / disable kemampuan Asterisk untuk menambahkan local hostname dan local IP address ke domain list. Default no.

bindaddr = IP_Address

IP Address yang di bind (di ikat) tempat mendengarkan sambungan. Default 0.0.0.0 (semua interface).

bindport = Number

UDP Port yang di bind (di ikat) untuk mendengarkan sambungan yang masuk. Default 5060.

callerid = <string>

Informasi Caller ID yang akan digunakan jika tidak ada informasi lain. Default asterisk.

canreinvite = update|yes|no ; Hati-hati default yes.

checkmwi = Number ; Interval dalam detik untuk mencek mailbox. Default 10 detik.

compactheaders = yes|no

Apakah Asterisk akan mengirim header SIP dalam bentuk kompak (singkatan) atau lengkap. Default no.

context = <contextname>

Ini adalah default context yang akan digunakan bagi pesawat telepon yangtidak memiliki context. isi context dapat di set di extensions.conf.

defaultexpirey= Number

Default lama waktu (dalam detik) dari registrasi incoming / outgoing. Default 120 detik.

dtmfmode = inband|info|rfc2833 (global setting). ; Default rfc2833.

domain = domains

daftar domain dengan dibatasi oleh koma dimana asterisk bertanggung jawab.

dumphistory = yes|no

Mengaktifkan dukungan untuk mendumping transaksi SIP ke LOG_DEBUG. Default no.

externip = IP_Address atau hostname

Alamat yang akan kita letakan di SIP messages jika kita berada di belakang NAT. Jika hostname digunakan, maka IP address yang terkait dengan hostname tersebut akan dibaca sekali pada saat membaca sip.conf. Jika kita ingin menggunakan hostname dari dynamic IP, gunakan parameter externhost.

externhost = hostname.tld

externrefresh = Number

Menentukan berapa sering (dalam detik) pencek-an DNS dilakukan untuk 'externhost'. Default 10 detik.

ignoreregexpire = yes|no

Mengatur apakah tetap menggunakan Contact information dari sebuah peer walaupun informasi tersebut telah kadaluarsa. Default no.

language = <string> ; Default bahasa yang digunakan oleh Playback()/Background().

localnet = NetAddress/Netmask ; local network dan mask.

fromdomain= <domain>

Menset default From
domain di SIP message pada saat beroperasi sebagai SIP ua (client)

insecure = very|yes|no|invite|port

Menset cara menangani sambungan dengan peers. Default no (authenticate semua sambungan ).

maxexpirey= Number

Lama durasi (dalam detik) dari registrasi incoming. Default 3600 detik.

musicclass = salah satu kelas yang digunakan di musiconhold.conf

musdiconhold = sama dengan musicclass

nat= yes|no|never|route

Default no yang berarti menggunakan teknik rfc3581.


notifymimetype= mediatype/subtype

Mengijinkan untuk mengoveride tipe mime di MWI NOTIFY yang digunakan di voicemail online message. Default application/simple-message-summary.

notifyringing = yes|no

Memberitahukan masuk ke tahapan RINGING. Default yes.

outboundproxy = IP_address / DNS SRV name (tidak termasuk _sip._udp prefix)

SRV name, hostname, atau IP address dari outbound SIP Proxy.

outboundproxyport = Number ; Nomor UDP port untuk Outbound SIP Proxy.

pedantic = yes|no

Akan mengaktifkan sebuah proses yanglambat untuk mencek Call-ID, SIP header dengan banyak line, dan URI-encoded header. Default no.

port = <portno>

Default SIP port untuk peer. Port ini bukan port dari Asterisk untuk mendengarkan sambungan yang masuk (lihat bindport).

progressinband = never|no|yes ; Jika kita harus membangkitkan in-band ringing. Default never.

promiscredir= yes|no

Mengijinkan dukungan untuk 302 Redirects; (Catatan
akan meredirect semua ke local extension yang ada di Contact tidak ke extension di tujuan akhir). Default no.

qualify = yes|no|milliseconds

Cek apakah client dapat dihubungi. Jika yes, maka cek akan dilakukan setiap 2000 milidetik (2 detik). Default no.

realm = my realm

Mengubah authentikasi realm untuk asterisk (default) ke yang kita inginkan.

recordhistory = yes|no.

Mengaktifkan logging dari transaksi SIP. Default no.

regcontext = context

Default context yang digunakan untuk membalas SIP REGISTER dari SIP Registrar.

register => <username>:<password>:[authid]@<sip client/peer id di sip.conf>/<contact> ; Register ke SIP provider

registerattempts = Number

Jumlah message SIP REGISTER yang dikirimkan ke SIP Registrar sebelum menyerah. Default 0 (tanpa limit).

registertimeout = Number

Berapa detik yang dialokasikan untuk menunggu responds dari SIP Registrar sebelum memutiskan bahwa SIP REGISTER time out. Default 20 detik.

relaxdtmf = yes|no ; Default no.

rtautoclear = yes|no|number

Auto-Expire friends yang dilakukan sambil beroperasi. Jika yes autoexpire akan terjadi dalam 120 detik. Default yes.

rtcachefriends = yes|no

Cache realtime friends dengan cara menambahkan mereka ke daftar internal seperti friends yang ditambahkan ke file config. Default no.

rtpholdtimeout = Number

Lama waktu tidak ada aktifitas dalam detik sebelum memutuskan call on hold. Default 0 (tidak ada limit).

rtpkeepalive = Number

Jumlah detik selang untuk RTP Keepalive packet jika tidak ada ttraffic yang lewat. Default 0 (tidak ada RTP Keepalive).

rtptimeout = Number

Jumlah detik, untuk menunggu RTP traffic sebelum kita memutuskan sambungan. Default 0 (tidak ada RTP timeout).

rtupdate = yes|no

Kirim update registry ke database pada saat menggunakan dukungan Realtime. Default yes.

sendrpid = yes|no

Jika SIP header Remote-Party-ID SIP harus dikirim. Default no.

sipdebug = yes|no. Setting Default yang menentukan apakah SIP debug di aktifkan pada saat loading sip.conf. Default no.

srvlookup = yes|no

Mengaktifkan pengecekan DNS SRV pada saat dipanggil. Default no.

tos = <value>

Set parameter IP QoS untuk outgoing media streams (nilai numerik dpat di terima, seperti tos=184 )

trustrpid = yes|no

Jika SIP header Remote-Party-ID SIP dapat di percaya. Default no.

useclientcode = yes|no :

usereqphone = yes|no

Mengindikasikan apakah kita perlu menambahkan ";user=phone" ke URI. Default no.

useragent = <string>

Mengubah SIP header "User-Agent". Default asterisk.

videosupport=yes|no

Mengaktifkan dukungan untuk SIP video. Default no.

vmexten = <string>

Dialplan extension untuk menelepon mailbox. Default asterisk.

Konfigurasi SIP - peer dan client

Variabel berikut dapat digunakan pada setiap definisi peer

accountcode = <string>

Users dapat diasosiasikan ke accountcode. Ada baiknya membaca konsep tentang Asterisk billing

allow = <codec>

CODEC yang diijinkan berdasarkan urutan preferensi. Gunakan terlebih dulu DISALLOW=ALL sebelum mengijinkan CODEC.

disallow = all

Disallow semua CODEC untuk peer tersebut atau definisi user.

allowguest = yes|no

Allow atau reject panggilan dari orang yang tidak di kenal. Default yes. Dapat juga diset 'osp' jika Asterisk di compile untuk mendukung OSP.

auth = <authname> ; Isi dari Digest username= pada header SIP.

callerid = <string>

Caller ID yang digunakan jika tidak ada informasi yang tersedia. Default asterisk.

call-limit = number

Banyaknya sambung telepon simultan yang dapat dilakukan ke user / peer tertentu.

callgroup = num1,num2-num3 ; Mendefinisikan call group yang dapat mengelepon ke alat ini.

callingpres = number|descriptive_text

Set penampilan Caller-ID terhadap sebuah sambungan / call. Nilai text deskriptive yang dapat di isi adalah allowed_not_screened, allowed_passed_screen, allowed_failed_screen, allowed, prohib_not_screened, prohib_passed_screen, prohib_failed_screen, prohib, dan unavailable. Default allowed_not_screened.

canreinvite = update|yes|no

Jika client mampu mendukung SIP re-invites. Default yes.

context = <context_name>

Jika type=user, Context adalah untuk panggilan yang masuk ke definisi user SIP. Jika type=peer, Context di dialplan untuk panggilan keluar / outbound dari definisi peer SIP. Jika type=friend maka Context digunakan untuk semua hubungan inbound dan outbound ke definisi entitas SIP.

defaultip = ip.add.res.s

Default IP address untuk client host= jika tidak dispesifikasi sebagai DYNAMIC. Digunakan jika client belum pernah terdaftar menggunakan IP address yang lain. Hanya valid jika type=peer.

dtmfmode = inband|info|rfc2833

Bagaimana client menangani signal DTMF. Default rfc2833.

fromuser = <from_ID>

Menentukan user yang di letakan di "from" selain callerid (mengoverride callerid) pada saat melakukan calls _to_ peer (ke SIP proxy lain). Valid hanya untuk type=peer.

fromdomain = <domain>

Set default From
domain di message SIP pada saat melakukan calls _to_ peer. Valid hanya di bagian [general] atau type=peer.

fullcontact = <sip:uri_contact>

SIP URI kontak untuk realtime peer. Valid hanya untuk realtime peers.

host = dynamic|hostname|IPAddr

Client - IP address atau hostname. Jika anda menginginkan agar telepon mendaftarkan sendiri, gunakan keyword dynamic jangan menggunakan host IP.

incominglimit dan outgoinglimit = Number

Batasan dari jumlah panggilan aktif simultan yang dapat dilakukan oleh sebuah SIP client. Valid hanya untuk type=peer.

insecure = very|yes|no|invite|port

Menentukan bagaimana cara menangani sambungan dengan peer. Default no (authentikasi bagi semua sambungan).

ipaddr = ip.addr.dari.peer ; Valid hanya untuk realtime peer.

language = Kode bahasa seperti di definisikan di indications.conf ; Mendefinisikan bahasa untuk sapaan

mailbox = mailbox

extension untuk Voicemail. Valid hanya untuk type=peer.

md5secret = MD5-Hash dari "<user>:asterisk:<secret>" ; dapat digunakan sebagai pengganti secret.

musicclass = menentukan salah satu kelas yang di tulis di musiconhold.conf

name = <name>

Nama dari realtime peer. Valid hanya untuk realtime peer saja.

nat = yes|no

Variabel ini menentukan pola aksi Asterisk untuk client dibelakang NAT. Tapi masih belum menyelesaikan masalah jika Asterisk dibelakang NAT. Default no, yang artinya menggunakan teknik RFC3581.

outboundproxy = IP_address atau nama DNS SRV

SRV name, hostname, atau IP address dari outbound SIP Proxy. Valid hanya di section [general] dan type=peer.

progressinband = never|no|yes

Apakah kita membangkitkan ring di in-band. Default never.

promiscredir= yes|no

Mengijinkan dukungan untuk 302 Redirects. Default no.

qualify = yes|no|milliseconds

cek apakah cluent dapat dihubungi. Jika yes, cek akan dilakukan setiap 2000 milliseconds (2 detik). Valid hanya di section [general] dan type=peer.

regseconds = seconds

Waktu dalam detik antara SIP REGISTER. Valid hanya untuk realtime peer saja.

rtpkeepalive = seconds

Waktu dalam detik, pengiriman paket RTP Keepalive jika tidak ada RTP traffic di sambungan. Default 0 (tidak ada RTP Keepalive). Valid hanya untuk section [general] dan type=peer.

rtptimeout = seconds

Putuskan hubungan jika dalam x detik tidak ada aktifitas RTP dan kita tidak dalam posissi on hold. Valid hanya di section [general] dan type=peer.

rtpholdtimeout = seconds

Putuskan hubungan jika dalam x detik tidak ada aktifitas RTP dan kita dalam posisi on hold. Valid hanya untuk section [general] dan type=peer.

secret = password

Jika Asterisk berfungsi sebagai SIP Server, maka SIP client harus login menggunakan "password". Jika Asterisk berfungsi sebagai SIP client ke remote SIP server, maka membutuhkan SIP INVITE authentication, maka isi secret digunakan untuk authentikasi SIP INVITE yang dikirim Asterisk ke remote server.

sendrpid = yes|no

Jika Remote-Party-ID SIP header harus dikirim. Default no.

setvar = variable=value

Channel variable yang harus di set untuk semua sambungan ke peer/user ini.

subscribecontext = <context_name>

Set context yang spesifik untuk permohonan SIP SUBSCRIBE

trustrpid = yes|no

Jika Remote-Party-ID SIP header perlu di percaya. Default no.

type = user|peer|friend

Hubungan antara client - outbound provider atau full client?

usereqphone = yes|no

Menunjukan apakah perlu menambahkan ";user=phone" ke URI. Default no. Valid hanya untuk section [general] dan type=peer.

username = <username[@realm]>

Jika berfungsi sebagai SIP client ke remote SIP server yang membutuhkan authentikasi SIP INVITE, maka parameter ini digunakan untuk authentikasi SIP INVITE yang akan dikirim Asterisk ke remote SIP server. Jika, untuk peers yang akan mendaftarkan diri ke Asterisk, username digunakan di INVITE sampai mereka terdaftar.

vmexten = <string>

Dialplan extension untuk menghubungi mailbox. Default asterisk. Valid hanya di section [general] atau type=peer.


Beberapa contoh SIP Client

Setiap SIP Client yang tersambung ke Asterisk membutuhkan definisi di sip.conf, berikut adalah beberapa contoh

[2000] context=default type=friend username=2000 secret=123456 host=dynamic dtmfmode=rfc2833 mailbox=2000@default rfc2833compensate=yes

[xlite1] ; Matikan silence suppression di X-Lite ("Transmit Silence"=YES)! ; Karena Xlite mengirim paket NAT keep-alive, qualify=yes tidak dibutuhkan type=friend username=xlite1 callerid="Jane Smith" <5678> host=dynamic nat=yes ; X-Lite di belakang NAT router canreinvite=no ; Umumnya di set NO jika di belakang NAT disallow=all allow=gsm ; GSM mengkonsumsi bandwidth lebih sedikit dari G.711-u (ulaw) allow=ulaw allow=alaw


Contoh lain, jika kita menyambungkan diri ke Free World Dialup tanpa NAT

[general] disallow=all allow=gsm allow=ulaw allow=alaw context=from-sip maxexpirey=180 defaultexpirey=160 tos=reliability register => <FWD#>:<FWD_PASSWORD>@fwd.pulver.com/CONTACT

[fwd.pulver.com] type=friend secret=<FWD_PASSWORD> username=<FWD#> host=fwd.pulver.com insecure=very ; dibutuhkan untuk panggilan incoming dari FWD


Setelah SIP client account di definisikan di sip.conf dan kita dapat login ke asterisk server, untuk menerima panggilan, kita perlu perlu mengkonfigurasi extensions.conf. Contoh:

exten => 1010,1, Dial(SIP/user3_cisco,10,t)

Jika seseorang menelepon extension 1010, maka SIP clien yang login sebagai user3_cisco akan di hubungi untuk menerima call tersebut.


Pranala Menarik