[Tips] Menghilangkan Warning “chan_iax2.c: update_registry: Restricting registration for peer ‘XXXX’ to 60 seconds”

Pernah menemui log seperti ini:

[2016-09-27 11:31:14] NOTICE[2284]: chan_iax2.c:8974 update_registry: Restricting registration for peer ‘XXXX’ to 60 seconds (requested 30 0)
[2016-09-27 11:32:09] NOTICE[2284]: chan_iax2.c:8974 update_registry: Restricting registration for peer ‘XXXX’ to 60 seconds (requested 30 0)
[2016-09-27 11:33:04] NOTICE[2278]: chan_iax2.c:8974 update_registry: Restricting registration for peer ‘XXXX’ to 60 seconds (requested 30 0)
[2016-09-27 11:33:59] NOTICE[2280]: chan_iax2.c:8974 update_registry: Restricting registration for peer ‘XXXX’ to 60 seconds (requested 30 0)
[2016-09-27 11:34:54] NOTICE[2278]: chan_iax2.c:8974 update_registry: Restricting registration for peer ‘XXXX’ to 60 seconds (requested 30 0)

contohnya kalau kita memiliki virtual FAX di Asterisk kita dengan IAX2 protocol, biasanya sering muncul log demikian. Sebenarnya ini ndak menimbulkan masalah, tapi cukup untuk memenuhi log, apalagi jika verbosity-nya tinggi. Untuk mengatasi warning tersebut,edit file /etc/iaxmodem/iaxmodem-cfg.ttyIAX1 dan ganti baris:

refresh         300

Menjadi:

refresh         60

Lalu reload iaxmodem dengan perintah:  service iaxmodem restart.

Selamat mencoba.

AsterConferenceAsia 2016

Pada tanggal 30 Agustus 2016 kemarin dapet undangan dari teman di Harvl untuk ikut acara gatheringan komunitas Asterisk di Surabaya, tepatnya di hotel Shangri La, Jl. Mayjend Sungkono No. 120, Jawa Timur 60256. Acara tersebut disponsori oleh Digium (sebagai sponsor utama) dan juga beberapa vendor appliance berbasiskan Asterisk dan ip phone, distributor perangkat telephony, dan juga sebuah perusahaan Manage Service Provider,  antara lain Grandstream, Yeastar, JCMex, Yealink, Dinstar, OGI, Beskom, Dinstar, Hypernet, dan Htek. Event Organizer-nya dari SECtraining, Malaysia, yang juga mendatangkan David Duffet, Worldwide Asterisk Community Director. Acaranya lumayan rame, karena banyak vendor yang dateng, jadi bisa sambil ngumpulin brosur buat referensi belanja project selanjutnya nanti dari kantor.

Hanya sayangnya, dari audience sepertinya belum begitu antusias atau bahkan sebenarnya masih belum begitu ngeh dengan tema yang dibawakan dalam acara tersebut. Sebenarnya seneng-seneng aja ada dari pihak sekolah lanjutan yang mendatangkan muridnya ikut, tapi sepertinya mereka mengharapkan semacam training gratis, bukan materi presentasi umum. Dan kebetulan kok ya ndak ada demo teknis sama sekali waktu itu. Sepertinya sasaran yang tepat untuk acara kemaren lebih ke orang-orang dari SMB, corporate, industrial, dan sejenisnya. Tapi, ya sudah lah, yang penting saya seneng dapat banyak temen baru, dapat relasi baru, bisa ketemu teman-teman komunitas Asterisk Indonesia juga (walaupun cuma mas Anton dan mas Imam, hahahah). Dan lumayan juga bisa ngobrol banyak sama David Duffet yang kebetulan orangnya baik dan ramah juga. Semoga lain waktu ada acara serupa yang lebih rame lagi dan seru dan jangan kapok dengan audience yang malu-malu nanya, karena komunitas yang begini masih jarang di Indonesia.

Dan sayangnya lagi kemaren ndak dapet lucky draw yang hadiahnya juga top banget. Sebenernya ngarepin card E1 dari Digium. Selamat buat yang menang kemarin.

 

Links

vellichor

n. the strange wistfulness of used bookstores, which are somehow infused with the passage of time—filled with thousands of old books you’ll never have time to read, each of which is itself locked in its own era, bound and dated and papered over like an old room the author abandoned years ago, a hidden annex littered with thoughts left just as they were on the day they were captured.

 

http://www.dictionaryofobscuresorrows.com/

Fax via Elastix

Mesin fax tidak akan hilang dalam waktu dekat. Walaupun sekarang penggunaan email dan document sharing sudah umum dan banyak di mana-mana, tapi fax masih memegang peranan penting di ceruk tertentu. Dunia hukum masih memandang bukti fax jauh lebih kuat dibandingkan email. Jadi, sudah wajar kalau kita yang berkecimpung di dunia VoIP/IP PBX untuk meluangkan waktu belajar setup fax. Berikut ini adalah contoh setup fax yang pernah saya lakukan.

 

SKENARIO

Sebuah perusahaan memiliki 6 line PSTN, 5 diantaranya hunting, dan satu line untuk fax. IP PBX yang mereka gunakan adalah distro Elastix (Asterisk based), dengan perangkat analog card OpenVOX 8 FXO port. Untuk setup Elastix dan deteksi card tidak akan saya bahas di sini karena saya dulu sudah pernah membahas. Asumsinya mesin IP PBX Elastix sudah terinstall dan card analog sudah disetup dengan baik. Outbound dan inbound call juga sudah disetup untuk line hunting. Sedangkan untuk line fax akan saya bahas di bawah.

Penggunaan fax di Elastix di sini dalah untuk mengurangi penggunaan kertas dalam penerimaan dan pengiriman fax. Untuk penerimaan, fax akan diterima sebagai attachment .pdf atau .tiff yang kemudian diforward ke email. Sedangkan untuk pengiriman, fax akan diupload dari webGUI Elastix sebagai attachment .pdf atau .tiff.

Karena pada dasarnya memiliki 6 jalur PSTN, jalur ini bisa dimanfaatkan untuk mengirim fax sekaligus jika sedang tidak digunakan. Header fax bisa disetting untuk tetap seperti terkirim dari nomer fax asli. Sedangkan untuk menerima fax hanya bisa dilakukan dari nomer fax resmi perusahaan yang dicantumkan di web atau di kartu nama.

 

SETUP

Fax Inbound

Seperti yang sudah dibahas sebelumnya, fax diterima dalam bentuk email dan disebarkan ke pihak yang memiliki wewenang menerima fax. Karena email yang menerima fax hanya bisa satu, maka perlu dibuatkan email alias yang didalamnya tidak ada inbox, hanya forward ke beberapa email yang berkepentingan. Misal dalam fax@perusahaan.com yang diforward ke hrd@perusahaan.org, manajemen@perusahaan.org, dst. Lalu selanjutnya:

  • Edit file /etc/asterisk/dahdi-channels.conf. Ubah semua context menjadi from-dahdi. Hal ini supaya kita bisa menambahkan inbound route dengan filter nomer DID. Restart service dengan perintah linux console: amportal stop; service dahdi stop; sleep 10 ; service dahdi start; sleep 5 ; amportal start
  • Untuk line fax, port yang digunakan dalah skenario di atas adalah port FXO nomer 6 dengan nomer (misal) 027411223344. Masuk ke menu webGUI Elastix, pilih PBX -> PBX Configurations -> DAHDI Channel DIDs -> Add Channel. Isikan:

Channel: 6

Description: Fax Line

DID: 027411223344

  • Klik Submit Changes.
  • Pilih menu PBX -> PBX Configurations -> Extensions. Di bagian menu pulldown Device pilih Generic IAX2 Device. Klik Submit.
  • Isikan konfiguratsi eksensi sebagai berikut:

User Extension: 1319

Display Name: Fax Line

secret: r4h4514

Klik Submit.

  • Buat Virtual Fax dengan memilih tab Fax -> New Virtual Fax dan isikan sebagai berikut:

Virtual Fax Name: Fax Line

Associated email: fax@perusahaan.com

 Caller ID Name: PT Perusahaan

Caller ID Number: +6227411223344

Fax Extension (IAX): 1319

Secret (IAX): r4h4514

C0untry Code: 62

Area Code: 274

  • Klik Save.
  • Masuk ke menu Unembedded FreePBX (untuk mengaktifkannya tidak akan saya bahas di sini karena sudah pernah saya posting sebelumnya). Masuk ke menu Application -> Extensions. Pilih extension 1319 lalu pada halam konfigurasi ekstensi tersebut, di opsi Fax beri tanda centang di opsi Enabled.
  • Di opsi Fax Email masukkan alamat email yang sudah disetup untuk menerima fax. Dalam contoh ini fax@perusahaan.com.
  • Di opsi Attachment Format pilih both.
  • Klik Submit lalu klik Apply Config. Tutup halaman Unembbeded FreePBX.
  • Pilih menu PBX -> PBX Configurations -> Inbound Routes -> Add Incoming Route. Isikan sebagai berikut:

Description: Fax

DID Number: 027411223344

Set Destination: Extensions -> Fax Line <1319>

  • Klik Submit lalu klik Apply Config.

Fax Outbound

  • Pilih menu PBX -> PBX Configuration -> Outbound  Routes -> Add Route. Isikan sebagai berikut:

Route Name: FAX Outbound

Dial pattern that will use this Routes: Fax outbound

Trunk Sequence for Matched Routes :

trunk fax

  • Klik Submit Changes lalu klik Apply Config.

Pada contoh di atas, semua trunk dimanfaatkan untuk mengirim fax. Untuk output hasil fax semuanya akan nampak seperti dari nomer fax utama perusahaan karena pada saat setup Virtual Fax, semua Caller ID Number disetup menjadi nomer telepon fax kantor.

TEST KIRIM FAX

  • Masuk ke menu Fax -> Virtual Fax -> Send Fax.
  • Di menu pulldown Fax Device pilih Virtual Fax dengan ekstensi 1319 seperti yang sudah kita buat sebelumnya.
  • Di isian Destination fax numbers isikan nomer fax tujuan. Nomer fax tujuan bisa lebih dari satu dengan dipisahkan tanda koma. Tapi harap diperhatikan jumlah line telpon yang akan digunakan. Tidak seperti email yang bisa mengirim ke beberapa tujuan sekaligus tanpa masalah, line fax harus mendial satu per satu nomer telepon tujuan dan prosesnya cukup panjang. Jadi ada baiknya destinasi tetap satu nomer saja.
  • Untuk muatan fax, kita bisa memilih text saja atau dengan mengupload file dokumen dengan ekstensi .pdf atau .tiff. Jika hanya ingin mengirimkan text, pilih button radio Text Information, lalu isikan pesan pada kotak yang sudah disediakan dan terakhir klik Send. Untuk
  • Untuk upload file dokumen, pilih button radio File Upload. Di bagian Select the files to FAX, klik Choose File untuk browse lokasi file yang hendak diupload. Jika sudah, klik Send.

Selamat mencoba!

koinophobia

While you’re in it, life seems epic. Fiery, tenuous, and unpredictable. But once you have some distance from it, everything seems to shrink, until it’s almost out of focus. So you begin scanning your life looking for something interesting or beautiful. But all you see is ordinary people assembled in their tiny classrooms and workspaces, each of us moving around in little steps, like tokens on a game board.

onism

n. the frustration of being stuck in just one body, that inhabits only one place at a time, which is like standing in front of the departures screen at an airport, flickering over with strange place names like other people’s passwords, each representing one more thing you’ll never get to see before you die—and all because, as the arrow on the map helpfully points out, you are here.

 

http://www.dictionaryofobscuresorrows.com/

Interkoneksi IP PBX Dengan IAX2 Trunk

Sebenarnya ini tema lama, tapi baru kesampaian posting kali ini, karena masih banyak yang menanyakan. Setup ini untuk menghubungkan dua atau lebih site yang menggunakan IP PBX Asterisk (khusus postingan ini saya menggunakan Elastix versi 4.0), sehingga dial antar ekstensi di kedua site bisa dilakukan dengan mudah, yaitu dengan hanya menekan nomer ekstensi langsung. Untuk dua sampai dengan 7 site, cara ini memang masih bisa digunakan. Jumlah trunk yang harus disetup untuk menghasilkan full mesh trunk network bisa didapatkan dengan rumus:

n x (n – 1)

Jadi, jika kita hendak menyambungkan 7 IP PBX sekaligus, maka akan dibutuhkan sebanyak 7 x (7 – 1) = 42 trunk!

Untuk interkoneksi IP PBX dengan jumlah lebih itu, setup menjadi rumit dan disarankan menggunakan DUNDi (Distributed Universal Numbering Discovery). Lain kali kalau ada waktu dan server buat bermain akan saya bahas di sini.

Yang perlu disiapkan adalah sebagai berikut:

  1. Jika kedua site berada di dua network/tempat/kota yang berbeda, sangar disarankan koneksi antar site menggunakan VPN (PPTP, L2TP, OpenVPN, VPLS, MPLS, EoIPdll). Dan apabila sangat terpaksa menggunakan ip address public, letakkan server IP PBX di bawah router/firewall dan lakukan port forward saja (jangan 1:1 Nat!!!). Trunk menggunakan IAX2, port forward menjadi mudah karena hanya dibutuhkan satu port untuk signalling dan media stream, yaitu port TCP/UDP 4569.
  2. Perencanaan penomoran ekstensi. Ini sangat penting karena untuk mempermudah routing panggilan. Jika memiliki dua buah IP PBX yang hendak diinterkoneksi, gunakan kepala ekstensi yang berbeda, misal kantor A menggunakan 4 digit dengan kepala 1 (1001, 1002, 1003, dst), lalu kantor B menggunakan 4 ekstensi dengan kepala 2 (2001, 2002, 2003, dst). Sebagai saran tambahan, jika site mencapai lebih dari 7 dan tetap akan menggunakan interkoneksi cara ini, tambahkan digit ekstensi, misal menjadi 5 atau 6 digit. Kelak akan sangat membantu jika kita hendak menggunakan prefix tambahan (misal untuk trunk ke PSTN/ITSP), atau jumlah site mencapai lebih dari 10 site.
  3. Trunk yang akan digunakan adalah IAX2 jika masing-masing IP PBX adalah Asterisk based. Jika tidak, bisa menggunakan SIP. Alasan menggunakan IAX2 karena hanya menggunakan satu port untuk signalling dan media stream (SIP menggunakan port signalling yang berbeda dengan media stream), sehingga pengaturan di firewall cukup mudah. Selain itu IAX2 memang didesain untuk mengatasi permasalahan NAT.

ASUMSI

  1. Dalam contoh setup ini akan digunakan dua buah IP PBX Elastix untuk dua buah kantor (Kantor A dan Kantor B).
  2. Masing-masing kantor memiliki ekstensi dengan panjang 4 digit dengan awalan berbeda. Kantor A berawalan 1 (1001, 1002, 1003), dan kantor B berawalan 2 (2001, 2002, 2003).
  3. Semua ekstensi dibuat dengan opsi nat=yes atau nat=force_rport,comedia untuk mengantisipasi one way audio.
  4. IP address Elastix kantor A adalah 10.0.1.10, dan untuk Kantor B 10.0.2.20.
  5. Saya menganggap tidak perlu lagi melakukan screenshot untuk lokasi menu WebGUI karena menu-menu di WebGUI Elastix sudah cukup jelas dan mudah diikuti hanya dengan petunjuk tulisan.

SKENARIO

  1. IP PBX kantor A akan merigstrasikan diri ke IP PBX kantor B, sehingga semua ekstensi di Kantor A bisa melakukan panggilan ke ekstensi di Kantor B hanya cukup dengan menekan nomer ekstensi yang dituju (tanpa prefix). Pada gambar skema di bawah, trunk Kantor A menuju Kantor B digambarkan dengan garis penuh warna merah. Sedangkan panggilan dari ekstensi Kantor A ke ekstensi Kantor B digambarkan dengan garis putus-putus warna merah.
  2. IP PBX kantor B akan meregistrasikan diri ke IP PBX kantor A, sehingga semua ekstensi di Kantor B bisa melakukan panggilan ke ekstensi di Kantor A hanya cukup dengan menekan nomer ekstensi yang dituju (tanpa prefix). Pada gambar skema d bawah, trunk kantor B menuju Kantor A digambarkan dengan garis penuh warna biru. Sedangkan panggilan dari ekstensi Kantor B ke ekstensi Kantor A digambarkan dengan garis dengan garis putus-putus warna biru.

IAX2 trunk

SETUP

SETUP KANTOR A

1. Masuk ke menu PBX -> PBX Configuration -> Trunks -> Add IAX2 Trunk. Isikan sebagai berikut:

Trunk Name: RouteToKantorB

PEER Details:

type=peer
host=10.0.2.20
context=from-internal
qualify=yes

Setelah itu klik Submit Changes.

2. Pilih menu PBX -> Tools -> Asterisk File Editor -> Show Filter. Isikan pada filter: iax_custom lalu klik nama file iax_custom.conf. Isikan seperti berikut:

[RouteToKantorB]
deny=0.0.0.0/0.0.0.0
context=from-internal
host=dynamic
type=friend
port=4569
qualify=yes
permit=10.0.2.20/255.255.255.255
requirecalltoken=no
calltokenoptional=0.0.0.0/0.0.0.0

Klik Save dan Reload Asterisk.

3. Pilih menu PBX -> PBX Configuration -> Outbound Routes -> Add Route. Lalu isikan sebagai berikut:

Route Name: ToKantorB

Di bawah opsi Dial Patterns that will use this Route isikan pada kotak match pattern: 2XXX

Lalu di menu drop down Trunk Sequence for Matched Routes pilih  RouteToKantorB, kemudian klik Submit Changes.

4. Terakhir klik Apply Config.

 

SETUP KANTOR B

1. Masuk ke menu PBX -> PBX Configuration -> Trunks -> Add IAX2 Trunk. Isikan sebagai berikut:

Trunk Name: RouteToKantorA

PEER Details:

type=peer
host=10.0.1.10
context=from-internal
qualify=yes

Setelah itu klik Submit Changes.

2. Pilih menu PBX -> Tools -> Asterisk File Editor -> Show Filter. Isikan pada filter: iax_custom lalu klik nama file iax_custom.conf. Isikan seperti berikut:

[RouteToKantorA]
deny=0.0.0.0/0.0.0.0
context=from-internal
host=dynamic
type=friend
port=4569
qualify=yes
permit=10.0.1.10/255.255.255.255
requirecalltoken=no
calltokenoptional=0.0.0.0/0.0.0.0

Klik Save dan Reload Asterisk.

3. Pilih menu PBX -> PBX Configuration -> Outbound Routes -> Add Route. Lalu isikan sebagai berikut:

Route Name: ToKantorA

Di bawah opsi Dial Patterns that will use this Route isikan pada kotak match pattern: 1XXX

Lalu di menu drop down Trunk Sequence for Matched Routes pilih  RouteToKantorA, kemudian klik Submit Changes.

4. Terakhir klik Apply Config.

TEST

  1. Register ekstensi-ekstensi yang diperlukan untuk test seperti pada gambar di atas (1001 dan 1002 untuk IP PBX Kantor A. 2001 dan 2003 untuk IP PBX Kantor B).
  2. Lakukan panggilan dari ekstensi 1002 (x1002) ke ekstensi 2001 (x2001) untuk test trunk dari IP PBX Kantor A ke IP PBX Kantor B.
  3. Lakukan panggilan dari ekstensi 2003 (x2003) ke ekstensi 1001 (x1001) untuk test trunk dari IP PBX Kantor B ke IP PBX Kantor A.
  4. Jika tidak ada kendala, masing-masing ekstensi dari IP PBX yang berbeda seharusnya sudah bisa tersambung dan saling bicara. Jika masih belum bisa, ikuti baik-baik langkah di atas, mungkin ada yang terlewat.

Selamat mencoba!

[tips] Perintah ‘date’ Untuk Test Time Conditions

Selama libur lebaran ini jadwal kantor yang berubah, dan mengakibatkan perubahan jadwal penerimaan telepon terutama untuk kantor yang menyelenggarakan layanan 24/7. Untuk IP PBX yang memanfaatkan Asterisk+FreePBX, perubahan jadwal penerimaan telepon biasanya dengan mengatur Time Groups dan Time Conditions. Lalu untuk mengetestnya, kita bisa memanfaatkan perintah date untuk mensimulasikan tanggal berjalannya aturan Time Conditions yang sudah kita setup. Perintahnya:

# date -s “7/5/2016 05:54:00”

Perintah di atas akan mengubah tanggal system ke tanggal 5 Juli 2016 pukul 05:54 pagi. Dan untuk mengembalikan tanggal system ke tanggal yang benar tinggal jalankan (untuk wilayan Indonesia) :

# ntpdate 1.id.pool.ntp.org

 

Memindah Posisi Unity Launcher di Ubuntu 16.04

Lama ndak update blog, karena banyak sekali PR di tempat kerja baru. Jadi posting kali ini sekdar supaya blog-nya tidak nampak terbengkalai banget-banget.

Dari update Ubuntu yang terakhir menjadi 16.04 saya sempet bingung bagaimana caranya memindah Unity Launcher yang defaultnya di sebelah kiri layar, menjadi di bawah layar. Terus terang saya agak terganggu dengan launcer di sebelah kiri, mungkin juga karena sudah terbiasa dengan Windows. Dan ternyata caranya adalah dengan mengetikkan perintah berikut di shell console (di dalam shell account sendiri):

$ gsettings set com.canonical.Unity.Launcher launcher-position Bottom
Sedangkan untuk mengembalikan ke sebelah kiri lagi: 
$ gsettings set com.canonical.Unity.Launcher launcher-position Left
Hanya ada dua setting itu saja, jadi tidak ada Top maupun Right. Selamat mencoba.

[Elastix MT] Call Antar Extension Tidak Bersuara Sama Sekali

Harusnya saya membahas panjang lebar terlebih dahulu apa sebenarnya Elastix MT (Multi Tenant), konsep dan cara kerjanya. Berhubung saat saya menulis sudah larut malam dan harus bangun 4 jam lagi, maka saya tuliskan hasil troubleshoot kali ini sebelum saya lupa lagi.

Latar belakangnya adalah, saya menginstall Elastix MT di VM yang dibuat ip addressnya diassign oleh HyperVisornya (yang kebetulan berupa ip address private). Kemudian saya menggantinya dengan ip address public. Karena pada saat instalasi menggunakan ip address lama, maka setting Kamailio multihomed menggunakan ip address tersebut, yang menyebabkan SIP phone bisa melakukan registrasi, tetapi tidak bisa melakukan panggilan sesama ekstensi (panggilan tersambung tetapi tidak ada yang lewat sama sekali). Untuk mengatasi hal ini saya hanya harus mengedit file /etc/kamailio/kamailio-mhomed-elastix.cfg, pada baris:

if (is_in_subnet($var(target_remote_ip), “192.168.1.0/24”)) {

$var(rtpproxy_set) = 1;
$var(rtpproxy_if) = “192.168.1.89”;
return 1;
}

menjadi

if (is_in_subnet($var(target_remote_ip), “1.2.3.0/25”)) {

$var(rtpproxy_set) = 1;
$var(rtpproxy_if) = “1.2.3.4”;
return 1;
}

Lalu juga di baris:

$var(rtpproxy_set) = 1;
$var(rtpproxy_if) = “192.168.1.89”;

menjadi:

$var(rtpproxy_set) = 1;
$var(rtpproxy_if) = “1.2.3.4”;

Atau cara paling mudah adalah dengan menjalankan script bawaan dari Elastix MT sendiri :

root# /usr/sbin/elastix-setup-kamailio-rtpproxy

Sampai di sini seharusnya call sudah bisa ditangani tanpa ada kendala suara tidak terdengar.