Halaman

Kamis, 16 Juni 2011

Asterisk

Asterisk merupakan open source software yang biasanya digunakan untuk membangun suatu sistem layanan komunikasi serta memberikan kemudahan kepada penggunanya untuk mengembangkan layanan telepon sendiri dengan kustomisasi yang seluas-luasnya diberikan kepada pihak pengguna. Dari pengertian open source sendiri berarti setiap pengembang dapat melihat dan mengubah source code yang ada, sehingga aplikasi-aplikasi yang ada dapat ditambahkan dengan mudah oleh setiap pengembang. Asterisk juga dapat dikatakan sebagai PBX yang lengkap dalam bentuk perangkat lunak, dan menyediakan semua fitur seperti PBX. Kelebihan Asterisk adalah dapat jalan dibanyak platform OS, antara lain Linux, Windows, BSD, dan OS X, dan juga dapat melakukan koneksi dengan hampir semua standar yang berbasis teleponi, dengan menggunakan hardware yang tidak begitu mahal sebagai gateway-nya.

Gambar 1. Asterisk Architecture


Banyak fitur yang disediakan, diantaranya Voicemail, Call Conferencing, Interactive Voice Response, Call Queuing, Three Way Calling, Caller ID Service, Analog Display Service Interface, Protokol VoIP SIP, H323 (sebagai client dan gateway), IAX, MGCP (hanya menyediakan fungsi call manager), SCCP/Skinny, dan masih banyak lagi fitur yang disediakan Asterisk.

Gambar 2. Detailed Asterisk Architecture


Didalam Asterisk ada yang dinamakan dengan Asterisk’s core, bagian ini merupakan inti dari Asterisk, bagian ini terdiri dari beberapa sub-bagian lagi yang akan menjalankan beberapa aturan kritis yang berguna untuk menjalankan software. Penjelasan berikut akan menguraikan sub-bagian seperti yang telah dijelaskan di atas, yang pertama adalah Dynamic Module Loader, sub-bagian ini berfungsi untuk me-load dan menginisialisasikan setiap driver yang menyediakan channel driver, format file, call detailed record, codec, aplikasi dan lain-lain, dan menyambungkan berbagai aplikasi tadi ke internal API yang sesuai, seperti Asterisk Channel API, Asterisk Format API, Asterisk Application API, Codec Translator API. Yang selanjutnya adalah Asterisk’s PBX Switching Core, berfungsi untuk menangai panggilan yang masuk kearah Asterisk, panggilan dapat datang dari berbagai interface, seperti yang tertera pada Gambar 2.8, lalu kemudian meng-handle panggilan yang masuk tersebut berdasarkan dialplan, dialplan merupakan aturan yang dibuat tentang bagaimana meng-handle nomor ekstensi yang masuk kearah server. Yang ketiga adalah Application Launcher, merupakan sub-bagian yang berfungsi untuk memberikan sinyal ringing ke nomor ekstensi yang dituju, sambungan ke voicemail, dan sebagainya. Asterisk’s core juga menyediakan Scheduler dan I/O Manager yang dipakai oleh driver and berbagai aplikasi di atas. Yang terakhir adalah Codec Translator, merupakan subbagian yang mengizinkan dua user yang saling berkomunikasi dapat menggunakan codec yang berbeda. Kegunaan dan fleksibilitas Asterisk terletak pada aplikasi, codec, channel drivers, file formats, dan lainnya.

Untuk menkonfigurasi Asterisk dibutuhkan beberapa file yang harus diatur dan yang paling penting atau utama supaya Asterisk dapat berjalan adalah pengaturan dialplan, yaitu skema atau urutan otentifikasi pada saat menggunakan sambungan VoIP. Untuk pengaturan semua file konfigurasi Asterisk berada pada direktori /etc/asterisk dan untuk pengaturan dialplan dilakukan di extension.conf, sedang untuk otentifikasi user dengan nomor telepon dan password menggunakan file sip.conf karena dalam laporan ini protokol yang digunakan adalah SIP. Sedangkan untuk pengaturan direktori mana saja yang akan diakses oleh asterisk dikonfigurasi di file asterisk.conf.

Asterisk Dialplan

Yang menjadi pokok pembicaraan atau inti dari laporan tugas akhir ini adalah Asterisk Dialplan yang dikonfigurasi pada file /etc/asterisk/extension.conf. File konfigurasi "extensions.conf" mengandung "dialplan" dari Asterisk, rancangan utama dari control atau aliran eksekusi dari semua operasinya. Ini mengatur bagaimana panggilan masuk dan keluar diatur dan dialihkan. Disini tempat mengkonfigurasi perilaku dari semua sambungan yang melalui PBX yang dipantau.

Isi dari "extensions.conf" diatur per bagian yang bisa bersifat pengaturan dan pengartian tetap, atau untuk komponen dialplan eksekusi dimana disebutkan sebagai contexts. Bagian yang digunakan untuk mengatur adalah general dan globals dan nama dari contexts ditentukan oleh system administrator. Tipe khusus dari contexts adalah macros, yang penamaannya diawali dengan macro-. Ini adalah pola eksekusi yang bisa digunakan secara berulang seperti prosedur pada bahasa pemrograman. Bagian-bagian dari extensions.conf dimulai dengan nama dari bagian itu di dalam kurung kotak. Ini memberikan file extensions.conf struktur yang mirip seperti .ini pada Windows. Penjelasan singkat per bagiannya (ada di TA):

AEL

Asterisk Extension Language (AEL) adalah sebuah program atau alat yang diciptakan oleh para pengguna Asterisk yang merasa kesulitan dalam pengolahan extension.conf atau dalam kata lain adalah Asterisk Dialplan. Secara sederhana pengertian atau kegunaan dari AEL adalah sebagai pendekatan bahasa pemrograman pada Asterisk Dialplan.
AEL adalah sebuah sintaks yang kompleks karena mengandung 4 bahasa atau sintaks yang berbeda dalam pembangunannya dan pengaturannya, yaitu :
  1. AEL Syntax itu sendiri sebagai bahasa pengolahannya.
  2. Expression syntax, yang merupakan semua ekspresi atau perntaan yang berada pada $[...]. Semua yang terkandung didalamnya diatur oleh AEL, termasuk pernyataan if dan while.
  3. Variable Reference Syntax, yang merupakan semua yang terkandung didalam ${...}. Dimana tidak hanya dapat memasukkan variable disana, bahkan fungsi fungsi dan manipulasi string dapat dijalankan juga disini.
  4. Syntax yang menjadi dasar dari AEL tapi tidak digunakan oleh AEL secara langsung yaitu Extension Language Syntax, yaitu bahasa pembangun dari extension.conf.
AEL parser (pbx_ael.so) ini terpisah secara utuh dari modul yang memparsing extensions.conf (pbx_config.so). Untuk menggunakan AEL, hal yang harus dilakukan adalah modul pbx_ael.so harus dijalankan oleh Asterisk. Ini semua dapat berjalan otomatis dengan menggunakan perintah 'autoload=yes' pada /etc/asterisk/modules.conf. Dimana pada saat modul dijalankan akan mencari 'extensions.ael' pad /etc/asterisk/. Baik extensions.conf maupun extensions.ael bias digunakan secara bersamaan jika diperlukan atau diinginkan. Sebagian pengguna pasti tetap berkeinginan mempertahankan extensions.conf untuk fiturfitur yang dikonfigurasi pada seksi utama dari extensions.conf.
Keterbatasan pada AEL:
  1. Setiap kurung tutup ’}’ harus diakhiri dengan’;’, termasuk statement if, context, macro, extension, switch dll. Jika tidak maka statement setelah kurung tutup dan sebelum titik koma akan dihiraukan, dan tidak memunculkan peringatan sehingga sulit untuk di debug.
  2. Tidak boleh ada statement kosong. Jika terpaksa ada masukkan NoOp() diantaranya, atau kesukaran dalam debug akan muncul.
  3. Jangan menggunakan titik dua ':' kecuali membangun label, parser tidak memeriksa apakah titik dua terdapat dalam tanda kutip, atau salah satu fungsi panggilan (bahkan satu seperti noop, jika baru mencoba untuk mencetak debug). Untuk menggunakan titik dua yang diperlukan untuk MACRO-EXIT dan pilihan panggilan, dapat diatur pada variabel global untuk titik dua ':' di extensions.conf, dan panggil variabel sesuai yang diperlukan dalam AEL skrip. Ini adalah cara kasar, tetapi ini memebua fitur ini berfungsi dengan baik.
  4. Dalam penggunaan label, tidak boleh menempatkannya di akhir makro atau extension dalam context, masukan setidaknya satu perintah (seperti NoOp) masih ada setelah label, atau label tidak akan ditambahkan ke dialplan. (Hal ini terkadang perlu untuk menempatkan label pada akhir sebagai cara mengeluarkan perintah goto untuk menangani kesalahan kondisi).
  5. Dalam statement switch, tidak sederhana menggunakan goto untuk label dalam context/extension/macro yang sama karena statement switch membuat extension baru di context berjalan untuk setiap kasus, harus disebutkan lokasinya secara utuh dari label di context berjalan, seperti "goto s | mylabel" bukan "mylabel goto", atau hindari menggunakan statement goto dalam statement switch. Ketika melakukan panggilan 'FastAGI' harus menyertakan backslashes, misalnya: AGI(agi:\/\/127.0.0.1\/...).

Tidak ada komentar: