exulansis

n. the tendency to give up trying to talk about an experience because people are unable to relate to it—whether through envy or pity or simple foreignness—which allows it to drift away from the rest of your life story, until the memory itself feels out of place, almost mythical, wandering restlessly in the fog, no longer even looking for a place to land.

http://www.dictionaryofobscuresorrows.com/post/96261999250/exulansis

Trunk Antar IP PBX Di Belakang NAT

Berawal dari keinginan untuk menyambungkan dua buah IP PBX Elastix, yang satu menggunakan ip address public, sedangkan yang lain berada di NAT. Untuk menjadikannya full-mesh, idealnya masing-masing bisa “melihat” ip address satu sama lain (bisa ping dari kedua arah). Tapi dalam kondisi ini, hanya IP PBX yang berada di bawah NAT lah yang bisa ping ke IP PBX dengan ip address public, sementara IP PBX dengan ip address public tidak bisa melakukan ping ke IP PBX yang berada di bawah NAT (ribet banget bahasanya ya).

Karena hanya IP PBX Kantor A  yang bisa melakukan ping ke IP PBX Kantor B, maka IP PBX Kantor A yang harus registrasi ke IP PBX Kantor B. Setelah terjadi registrasi, masing-masing IP PBX akan bisa melempar panggilan melalui ip address yang tercatat di registrasi tersebut. Caranya adalah sebagai berikut:

Konfigurasi IP PBX Kantor B

Dengan asumsi, ip address private IP PBX kantor A adalah 10.0.10.10 dengan nat ip public 1.1.1.1, dan ip address public IP PBX kantor B : 2.2.2.2.

Karena IP PBX Kantor B menggunakan ip address public, maka IP PBX ini yang akan menerima registrasi. Tambahkan informasi user untuk IP PBX Kantor A di iax_custom.conf (untuk menambahkan baris berikut, sebaiknya melalui webGUI, sepert yang pernah saya bahas di postingan http://www.otakudang.org/?p=356 ):

[KantorA]
username=KantorA
secret=KantorA
context=from-internal
host=dynamic
type=friend
port=4569
qualify=yes
permit=0.0.0.0/0.0.0.0
requirecalltoken=no

Lalu tambahkan trunk IAX2 dari webUI, dengan keterangan sebagai berikut:

Trunk Name: TrunkToKantorA
Peer Detail
host=dynamic
type=peer
nat=yes
qualify=yes
insecure=port,invite
context=from-internal

Konfigurasi IP PBX Kantor A

Di mesin IP PBX kantor A tambahkan trunk IAX2 dari webUI dan isikan sebagai berikut:

Trunk Name: KantorA
host=2.2.2.2
username=KantorA
secret=KantorA
type=friend
nat=yes
context=from-internal
qualify=yes
port=4569

Dan di bagian Register String isikan:

KantorA:KantorA@2.2.2.2:4569

Jangan lupa selalu klik Submit Changes dan Apply Changes baik di IP PBX kantor A dan kantor B.

Pastikan bahwa IP PBX kantor A sudah registrasi ke kantor B dengan melihat console Asterisk masing-masing  (asterisk -vr) dengan perintah: iax2 show peers

Jika berhasil, seharusnya akan tampil seperti :

IP PBX Kantor A

KantorA*CLI> iax2 show peers
 Name/Username       Host                Mask               Port      Status
 KantorA             2.2.2.2     (S)     255.255.255.255    4569      OK (6 ms)
 1 iax2 peers [1 online, 0 offline, 0 unmonitored]


IP PBX Kantor B :

 KantorB*CLI> iax2 show peers
 Name/Username       Host                Mask               Port      Status
 KantorA             1.1.1.1     (S)     255.255.255.255    4569      OK (10 ms)
 1 iax2 peers [1 online, 0 offline, 0 unmonitored]

 

Dari kantor B, IP PBX kantor A akan muncul dengan ip address router NAT-nya. Jika masing-masing server sudah bisa melihat ip address host tujuan, tinggal kita tambahkan saja OutBound Route nya. Sudah tau kan caranya?

Selamat mencoba!

[tips] Ubuntu Tidak Bisa Ping Tapi Bisa Nslookup

Pernah mengalami host Ubuntu tidak bisa ping ke mana pun, padahal kita bisa browse ke mana pun?

Jadi ketika saya coba ping (di /etc/resolv.conf sudah saya isikan nameserver 8.8.8.8 dan 8.8.4.4) hasilnya:

# ping detik.com
 ping: detik.com: Name or service not known

Tapi ketika menjalankan nslookup:

# nslookup
 > detik.com
 ;; Got recursion not available from 8.8.8.8, trying next server
 Server: 8.8.4.4
 Address: 8.8.4.4#53

Non-authoritative answer:
 Name: detik.com
 Address: 203.190.242.211
 Name: detik.com
 Address: 103.49.221.211

Hal ini sangat mengganggu kegiatan di shell prompt. Tapi setelah ke sana ke mari, akhirnya ketemu permasalahannya. Jika kita check file /etc/nsswitch.conf, kemungkinan kita akan mendapati baris:

hosts:          files mdns4_minimal [NOTFOUND=return] resolve [!UNAVAIL=return] dns

Jika iya, edit baris tersebut menjadi:

hosts:          files dns

Lalu untuk memastikan tidak terjadi lagi hal seperti di atas, kita bisa menghapus libnss-mdns:

# apt-get remove libnss-mdns --purge
 Reading package lists... Done
 Building dependency tree
 Reading state information... Done
 The following packages will be REMOVED:
 libnss-mdns*
 0 upgraded, 0 newly installed, 1 to remove and 2 not upgraded.
 After this operation, 110 kB disk space will be freed.
 Do you want to continue? [Y/n]

Nah sekarang ping ke mana pun sudah tidak ada masalah:

# ping detik.com -c3
 PING detik.com (103.49.221.211) 56(84) bytes of data.
 64 bytes from 103.49.221.211 (103.49.221.211): icmp_seq=1 ttl=57 time=27.6 ms
 64 bytes from 103.49.221.211 (103.49.221.211): icmp_seq=2 ttl=57 time=27.1 ms
 64 bytes from 103.49.221.211 (103.49.221.211): icmp_seq=3 ttl=57 time=29.1 ms

[tips] Error Pada Saat Create Database Untuk OpenSIPS

Pas lagi create database untuk OpenSIPS, saya mendapati error berikut:

# opensipsdbctl create
 MySQL password for root:
 INFO: test server charset
 INFO: creating database opensips ...
 INFO: Using table engine InnoDB.
 INFO: Core OpenSIPS tables successfully created.
 Install presence related tables? (y/n): y
 INFO: creating presence tables into opensips ...
 ERROR 1101 (42000) at line 2: BLOB, TEXT, GEOMETRY or JSON column 'extra_hdrs' can't have a default value
 ERROR: Failed to create presence tables!

Setelah baca sana sini ternyata ini berhubungan dengan setting MySQL yang terlalu strict. Untuk mengakali sementara, edit file my.cnf dan tambahkan baris berikut:

[mysqld]
 sql-mode = ""

kemudian restart layanan MySQL. Ulangi lagi proses penambahan database OpenSIPS, jika lancar akan seperti ini:

# opensipsdbctl create
 MySQL password for root:
 INFO: test server charset
 INFO: creating database opensips ...
 INFO: Using table engine InnoDB.
 INFO: Core OpenSIPS tables successfully created.
 Install presence related tables? (y/n): y
 INFO: creating presence tables into opensips ...
 INFO: Presence tables successfully created.
 Install tables for imc cpl siptrace domainpolicy carrierroute userblacklist b2b cachedb_sql registrant call_center fraud_detection emergency? (y/n): y
 INFO: creating extra tables into opensips ...
 INFO: Extra tables successfully created.

Issabel Project

Wah, belum sampe lama memanfaatkan AsteriskNow agak lama, baru-baru ini muncul komunitas yang sudah melakukan forking dari project Elastix. Ini kabar yang cukup menggembirakan. Artikel mengenai pengembang Issabel ini bisa dibaca di web berikut:

http://www.issabel.org/

Dan ada juga artikel berbahasa spanyol :

https://www.sinologic.net/blog/2016-12/la-comunidad-elastix-crea-el-proyecto-issabel.html

Berikut adalah terjemahannya:

===========================================================================================================

This December is quite frantic, perhaps because of the importance of the theme and is that, as we announced last week, 3CX has bought the brand Elastix and the entire ecosystem (forums, lists, emails, etc.) so that The community has taken action in the matter and has created an Elastix fork which they have christened ISSABEL.

Unlike Elastix, the new ISSABEL project is not based on the system of ” benevolent dictator ” consisting of a single company that controls and manages the project from start to finish with the condition of being “benevolent”, but it ISSABEL born Directly from the own members of the Elastix community and keeps the door open to the rest of the community to enter the project and actively participate.

Within the community there are developers, system administrators, Linux and Asterisk experts, and companies that want a communications system with which to work, modify, distribute … so the ISSABEL project is not only maintained by users related to The philosophy of free software and free unified communications, if not also by companies that will provide business support and quality services to all those who require it. The difference with Elastix is that decisions on the “core” will not be taken unilaterally by a single entity but it will be by consensus of the general community using the usual social channels ( forums, twitter, lists, etc. ) for Agree on the decisions and direction of the project.

ISSABEL: the new Elastix

ISSABEL is based on the GPL version of the Elastix 4 project, a distribution that, as many remember, the members of the community came together to make an economic crownfunding and to give a boost to the project, among other things, to update the system Operative to CentOS 7, to update the versions of diverse free projects, reason why it is 100% legal, ethical and does not have any type of legal problem as some people and webs suggest. Any user of Elastix 4 does not have to do anything to continue receiving updates, only to change the repositories to use those of ISSABEL instead of the old Elastix systems and the system will be updated as normal.

 

As you can see, the only thing that changes in the interface is the name, and therefore, all the functionalities will continue working as before.

 

For all purposes, Elastix 4 passes called ISSABEL and any user who was already working with Elastix 4, you can continue working as normal with ISSABEL.

 

More information: http://www.issabel.org

Beralih Dari Elastix

 

Awal tahun 2017 ini agak dikejutkan dengan berita dari pengembang Elastix. Setelah sekian tahun menggunakan distro ini, saya mulai nyaman, hingga akhirnya mereka beralih dari Asterisk ke 3CX. Dari yang sempat saya ketahui, ada berita simpang siur mengenai patent infringement, di mana pihak Elastix mengklaim telah dituduh melakukan pelanggaran hak cipta kepada Sangoma dan Digium, walaupun mereka tidak mengatakan hak paten yang mana yang telah dilanggar. Sedangkan keterangan CEO-nya (bisa dibaca di tautan yang saya sertakan di bawah), sedikit agak berbeda. Jadi mana yang benar saya sendiri tidak yakin.

Elastix sendiri menyatakan bahwa Elastix ver 4.0 dan 2.5.x masih bisa didownload dan digunakan sampai beberapa waktu ke depan, tetapi support pengembangannya akan dihentikan sesegera mungkin karena mereka sedang beralih ke engine 3CX.

Saya sendiri belum mencoba langsung bagaimana Elastix 5 dengan engine 3CX ini. Mungkin jika ada waktu senggang akan saya coba untuk ngoprek. Karena saya yakin pasti ada hal yang menarik, seperti, misal, bahwa 3CX memiliki mobile apps (Android & IOS) yang cukup bagus. Tapi ya ada kurangnya juga sih. Free license untuk 25 user, lebih dari itu harus beli license. Tidak support card analog (per saya baca terakhir), jadi untuk panggilan ke PSTN harus melalui SIP trunk ke VoIP gateway, forced digit number, yang menyebabkan kita tidak bisa memiliki ekstensi dengan panjang yang bervariasi, dan lain sebagainya.

Apa pun alasannya, saya memutuskan untuk tidak menggunakan Elastix lagi ke depan. Bahkan ada rencana saya hendak mengganti semua instalasi Elastix di kantor dengan distro AsteriskNow. Pertimbangan saya gampang saja, AsteriskNow digarap langsung oleh Digium, pembuat Asterisk. Dan kemungkinan mereka menjaga distro ini untuk tetap gratis karena hal inilah yang membuat komunitas pengguna Asterisk menjadi besar seperti sekarang ini.

Untuk mengetahui berita berkatian dengan pindahan engine Elastix dari Asterisk ke 3CX bisa dibaca di link berikut ini:

Edgar Landivar’s Perspective on Elastix – 3CX Changes

Announcement re Elastix 4 & Elastix MT

 

Supaya resolv.conf tidak dioverwrite saat menggunakan DHCP

Saya selalu menggunakan DNS 8.8.8.8 dan 8.8.4.4 di manapun laptop saya tersambung. Tapi ketika mendapatkan layanan IP dari DHCP, file /etc/resolv.conf selalu dioverwrite oleh NetworkManager dengan symlink ke /var/run/NetworkManager/resolv.conf. Untuk mematikan proses ini, edit file /etc/NetworkManager/NetworkManager.conf lalu tambahkan baris:

dns=no

di bawah [main]. Sehingga file akan tampak seperti:

[main]
 plugins=ifupdown,keyfile
 <strong>dns=none</strong>

[ifupdown]
 managed=false

Setelah itu restart service NetworkManager:

$ sudo service NetworkManager restart

Update link dengan perintah dhclient <interface> dan check file /etc/resolv.conf, sudah tidak lagi dioverwrite.

[Tips] Dialplan Untuk Pak Boss

Latar Belakang

Ceritanya, di sebuah instansi, terdapat 5 orang direktur yang masing-masing memiliki sekretaris sendiri. Para direktur ini tidak mau nomer bisa didial langsung dari IVR maupun dari ekstensi selain ekstensi masing-masing sekretarisnya. Jika ada yang mendial nomer ekstensi salah satu direktur, jika bukan dari ekstensi sekretarisnya, maka panggilan akan terlebih dahulu diarahkan ke nomer ekstensi sekretarisnya, baru kemudian bisa ditransfer ke nomer direktur tersebut.

Caranya?

Berikut ini adalah cara yang sudah saya coba di distro Asterisk. Di dalam distro tersebut, secara default semua ekstensi masuk ke context from-internal. Untuk nomer ekstensi sekretaris dan direktur, saya masukkan semua sebagai context tersebut. Selain itu, saya buatkan context khusus supaya tidak bisa melakukan panggilan langsung ke nomer ekstensi direktur. Sebelumnya saya pernah membuat script untuk memblokir panggilan keluar dengan nama context from-internal-restricted yang bisa dibaca di http://www.otakudang.org/?p=300 . Kali ini saya akan mengembangkan context tersebut untuk memblokir panggilan langsung ke ekstensi tertentu dan membelokkan ke ekstensi lain.

Dalam contoh ini, nomer ekstensi direktur (misal) 6666 dan nomer sekretaris adalah (misal) 6015. Edit context from-internal-restricted (yang sudah include dengan script restricted.sh) menjadi seperti berikut:

[from-internal-restricted]
 #exec /var/lib/asterisk/bin/restricted.sh
 exten => 6666,1,NoOp()
 same => n,GotoIf($[${CALLERID(num)} = 6015]?dial1:dial2)
 same => n(dial1),Dial(SIP/6666)
 same => n,Hangup()
 same => n(dial2),Dial(SIP/6105)
 same => n,Hangup()

Arti dari dialplan di atas adalah, jika caller id penelpon adalah 6015 (nomer ekstensi sekretaris), maka rule dial1 yang akan dieksekusi, yaitu mendial SIP/6666 nomer ekstensi direktur). Jika nomer penelpon bukan nomer ekstensi sekretaris (6015), maka rule dial2 yang akan dieksekusi, yaitu mendial SIP/6015 (nomer ekstensi sekretaris).

Selamat mencoba!

[tips] Problem DTMF Cisco SPA8800 Ke Asterisk

Ada beberapa kejadian, ketika Asterisk menerima panggilan dari VoIP gateway seperti SPA8800 yang diarahkan ke IVR, sering kali tidak bisa menekan menu IVR (menekan digit menu IVR). Ini biasanya disebabkan oleh DTMF method antara VoIP gateway dengan Asterisk yang berbeda. Untuk mengatasinya, ubah DTMF TX method dari Auto (setting default) ke INFO

 

[tips] Rotate File Call Recording Di IP PBX

LATAR belakangnya adalah sebuah perusahaan ingin melakukan call recording baik keluar maupun masuk di telepon customer service yang mereka miliki untuk memonitoring kualitas layanan mereka. Karena jumlah panggilan dan customer service yang mereka miliki cukup banyak, maka kapasitas penyimpanan recording pun jadi semakin cepat habis, walaupun kapasitas media penyimpanannya cukup besar. Akhirnya diputuskan bahwa rekaman yang sudah berumur lebih dari 2 bulan (30 hari), dianggap sudah tidak dibutuhkan. Sayangnya, di distro Asterisk yang ada sekarang ini, sejauh yang pernah saya coba belum pernah ada setting untuk merotasi log call recording. Jalan putarnya adalah dengan melakukan setting manual di operating system (yang kebetulan Linux) dengan cara:

  • edit crontab dengan perintah: crontab -e
  • Tambahkan baris berikut, lalu save crontab:

15 1 * * * find /var/spool/asterisk/monitor/ -type f -mtime +60 -exec rm -f {} \; >/dev/null 2>&1

  • Untuk melakukan test, mundurkan tanggal system ke 2 bulan atau lebih, lalu buat file dengan perintah touch di dalam direktori yang disebutkan di atas, setelah itu jalankan perintah :

find /var/spool/asterisk/monitor/ -type f -mtime +60 -exec rm -f {} \; >/dev/null 2>&1

Catatan:

Baris di atas artinya:

Setiap pukul 01:15 dini hari, semua rekaman yang (kebetulan di dalam setting default berada) di dalam direktori /var/spool/asterisk/monitor/ , jika sudah berumur 60 hari, akan dihapus.

Selamat mencoba!