Tutorial Asterisk VIII

24/07/08 10:51

Extension khusus dan Macro

Extension khusus

Karena semua logika pemograman harus tampak melalui extension, kita perlu beberapa extension tambahan yang telah didefinisikan system.

Extension h
h merupakan standar extension “hang-up”. Extension h, jika dikonfigurasi, dipanggil ketika penelpon menutup telepon. 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 yang ditentukan. Artinya kita perlu menambah satu isi KONEKSI setiap ada koneksi dan mengurangi satu setiap koneksi putus. Berikut ini contoh penerapan dalam dialplan:

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

Extension i
Untuk 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 dengan extension h, sekali extension i dikerjakan ${EXTEN} tidak akan berisi nomor yang dipanggil lagi. Untuk mendapatkan nomor yang dipanggil pada extension i, gunakan ${INVALID_EXTEN}.
Contoh:
pada sebuah perusahaan minuman, PT. Ngelak, pegawai di departemen B hanya dapat menelpon extension 100 sampai 199. Penelpon yang memanggil nomor lain akan mendengar pesan, “I’m sorry. That is not a valid extension. Please try again.”

[department-b]
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 a
Jika operator=yes dibuat dalam voicemail.conf, panggilan akan diteruskan ke extension o (o adalah untuk operator) jika penelpon menekan “0”.
Tekan * (bintang) akan meneruskan panggilan ke extension a (abort).

Extension t dan T
Extension t dan T untuk menangani batas waktu dalam context.
Extension t
Jika tidak ada masukan dalam sebuah menu IVR dalam batas waktu tertentu, extension 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(thank-you-cooperation) ; 1 => “Thank you.”
exten => 1,n,Hangup()
exten => 2,1,Playback(hangup-try-again) ; 2 => “Hang up and try again.”
exten => 2,n,Hangup()
exten => t,1,Hangup() ;tidak ada input => hang up

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

exten => 20,1,Answer()
exten => 20,2,Set(TIMEOUT(absolute)=120)
exten => 20,3,Playback(hello-world)
exten => 20,4,Wait(1)
exten => 20,5,Goto(3)
exten => T,1,Wait(1)
exten => T,2,Playback(thank-you-for-calling)
exten => T,3,Wait(1)
exten => T,4,Hangup()

Extension s
Masukan pertama pada semua extension selalu nama atau nomor yang dipanggil. Ketika sebuah panggilan datang dari PSTN, Asterisk tidak mengerti apa yang dipanggil dan siapa yang memanggil. Untuk keadaan tidak dapat menentukan nomor yang dipanggil, kita menggunakan extension s. Biasanya digunakan juga pada penulisan macro, dijelaskan dibawah.
Contoh:

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

Macro

Macro adalah bentuk dari subroutine. Dapat berupa rangkaian extension yang complex tetapi dipanggil melalui sebuah perintah. Dengan macro akan mengurangi pengulangan dalam dialplan dan membuat sederhana dan lebih kecil. Contoh sederhana seperti berikut:

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

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

Dasar-dasar Macro
Ketika 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 pemisah (”|”) dapat diberikan. Argument ini dipanggil dalam macro dengan ${ARGn} ( n adalah bilangan bulat positif yang mengindikasikan urutan argumen).
Sebuah macro ditentukan dalam kurung siku ([macro-namamacro]) dan dipanggil dengan aplikasi Macro() dalam sebuah extension.
Contoh lain sebuah macro:

[macro-tohg1500]
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 => s-BUSY,1,Playback(the-party-you-are-calling)
exten => s-BUSY,2,Playback(is-curntly-busy)
exten => s-BUSY,3,Goto(s,4)
exten => s-CONGESTION,1,Playback(the-party-you-are-calling)
exten => s-CONGESTION,2,Playback(is-curntly-unavail)
exten => s-CONGESTION,3,Goto(s,4)
exten => _s-.,1,Goto(s-BUSY,1)
exten => _.,1,Goto(s,4)
[default]
exten => 209,1,Goto(mainmenu,s,1)
exten => _5.,1,Macro(tohg1500,${EXTEN})

dikirim oleh: M. Zudha Ghofur

Artikel Terkait

Tutorial Asterisk VII
Tutorial Asterisk IX
Memanfaatkan Paging dan Intercom IPPhone Linksys menggunakan Asterisk

Komentar

    

Tentangku

Istri dan anakkuHidup sejenak dari M. Zudha Ghofur, Ayah dari Abhan dan Suami dari Netti. Bekerja di PPTIK UGM. Berusaha untuk menjadi yang terbaik bagi siapa saja

Kiriman Terakhir

Komentar Terbaru

Kategori

Sekitarku

Feed

XML