Homer Untuk SIP dan RTP Monitoring/Troubleshoot

Membaca log pada saat troubleshoot VoIP berbasis SIP itu penting, tapi masih juga banyak yang malas melakukan hal tersebut. Bisa dimaklumi karena memang membaca log SIP itu beneran ribet, walaupun sebenarnya cukup dengan merunut Call-ID problem langsung bisa ketahuan. Jika di sebuah lingkungan dengan jumlah panggilan sedikit, hal ini tidak menjadi masalah, karena jumlah log SIP tidak begitu banyak dan bisa langsung teridentifikasi permasalahannya. Tapi jika dalam lingkungan call yang berjumlah banyak, misal di sebuah VoIP provider, membaca log akan menjadi sangat merepotkan. Sering kali kita harus meminta pelanggan untuk melakukan test call lagi hanya demi mendapatkan log. Sedangkan sebagai pelanggan, ogah banget kan disuruh ini itu hanya karena si provider tidak punya catatan log pada saat problem terjadi.

Log SIP itu benar-benar chatty. Banyak banget. Dalam satu kali sesi bisa sampai dengan ratusan baris. Jadi kalo ada problem 1 jam sebelumnya, pada saat kita check log, sudah terdapat ribuan baris log menumpuk dari panggilan yang lain. Untuk mempermudah melakukan troubleshoot ini, kita bisa memanfaatkan tool lain seperti Homer SIP Capture.

Cara Kerja

Homer terdiri dari Capture Server dan Capture agent. Capture server merupakan server sipcapture berbasis Kamailo / OpenSIPS yang menerima kiriman HEP, IPIP ataupun raw packet dari HEP agent/Capture agent. Beberapa software telephony sudah memiliki implementasi capture agent seperti FreeSWITCH (versi 1.6.8 ke atas), Asterisk (versi 13 ke atas), Kamailio dan OpenSIPS. Lalu untuk perangkat lain yang tidak memiliki implementasi capture agent, tetap bisa memanfaatkannya dengan cara memasang sebuah server (berbasis Linux) dengan capture agent, lalu salah satu interface nya tersambung ke  port mirror perangkat SIP lain. Semua paket SIP yangt tertangkap capture agent akan dikirimkan ke Capture Server untuk kemudian disimpan dan dianalisa jika terjadi problem.

Berikut ini gambaran topologi dari yang saya embat dari https://github.com/sipcapture/homer :

Capture Server:

 

Capture agent:

Instalasi/Setup

Lalu berikutnya mari kita setup Capture Server terlebih dahulu:

  • Paling enak menurut saya kalau Capture Server jalan di Debian 8 Jessie 64 bit. Jadi silahkan disiapkan. Server distro lain harusnya tidak masalah, tapi pas saya install di Centos 7, saya stuck di MySQL. Walaupun problemnya sebenarnya jelas, tapi sayanya yang malas troubleshoot karena dikejar waktu.
  • Ada 4 cara install Homer 5, ini yang bisa dilihat di sini, tapi cara yang paling saya sukai adalah cara pertama, yaitu menggunakan install script. Jalankan step di bawah ini:
root~# cd /usr/src
root~# wget https://cdn.rawgit.com/sipcapture/homer-installer/master/homer_installer.sh
root~# chmod +x homer_installer.sh
root~# ./homer_installer.sh
  • Pada saat proses instalasi, kita akan ditanyakan nama database, user dan password user database untuk akses database Homer. Nama database saya pilih default, yaitu homer, dan passwordnya tentu saja saya isikan berbeda. Script di atas akan menginstall Kamailio dengan module sipcapture.so, jika penasaran bagaimana cara penggunaannya silahkan lihat di kamailio.cfg. Selain itu script ini juga akan menambahkan direktori web di /var/www/html/homer. Web tersebut langsung bisa diakses dengan username admin dan password : test1234. Sangat disarankan untuk segera mengganti password ini begitu login. Jika instalasi berhasil secara keseluruhan, akan nampak informasi seperti berikut:
*************************************************************
    ,;;;;,
   ;;;;;;;;.  Congratulations! HOMER has been installed!
 ;;;;;;;;;;;;
 ;;;; ;; ;;;; <--------------- INVITE --------------- 
 ;;;; ;; ;;;; --------------- 200 OK --------------->
 ;;;; .. ;;;;
 ;;;;    ;;;; Your system should be now ready to rock!
 ;;;; ;; ;;;; Please verify/complete the configuration
 ,;;; ;; ;;;; files generated by the installer below.
 ;;;;;;;;;;;;
  :;;;;;;;;;  THIS SCRIPT IS PROVIDED AS-IS, USE AT
   ;;;;;;;;   YOUR *OWN* RISK, REVIEW LICENSE & DOCS

*************************************************************

* Verify configuration for HOMER-API:
 '/var/www/html/homer/api/configuration.php'
 '/var/www/html/homer/api/preferences.php'

* Verify capture settings for Homer/Kamailio:
 '/etc/kamailio/kamailio.cfg'

* Start/stop Homer SIP Capture:
 '/sbin/kamctl start|stop'

* Access HOMER UI:
 http://1.2.3.4
 [default: admin/test1234]

* Send HEP/EEP Encapsulated Packets:
 hep://1.2.3.4:9060

**************************************************************

IMPORTANT: Do not forget to send Homer node some traffic! ;)
 For our capture agents, visit http://github.com/sipcapture
 For more help and information visit: http://sipcapture.org

**************************************************************
 Installer Log saved to: /tmp/homer_installer.sh.6095.log

Selanjutnya adalah bagaimana setup Capture agent. Kebetulan yang akan dimonitor adalah server FreeSWITCH v1.6.19. Ada dua cara untuk melakukannya, yang pertama dengan mengaktifkan capture agent bawaan dari FreeSWITCH. Caranya:

  • Tambahkan ip address Homer di sofia.conf.xml (misal: 1.2.3.4 port 9060) dengan menambahkan baris berikut di global_settings:
  • Lalu buka sip profiles yang hendak dimonitor. Dalam instalasi FreeSWITCH biasanya sudah ada default sip profile, misal, internal.xml, tambahkan baris berikut
  • Setelah perubahan di atas disimpan, reload sip profile dari fs_cli dengan perintah:
freeswitch@localhost> sofia profile internal restart
  • Aktifkan HEP agent melalui fs_cli dengan perintah:
freeswitch@localhost> sofia profile internal capture on

 

Cara kedua adalah dengan menginstall Captagent di server yang sama dengan FreeSWITCH. Langkahnya adalah sebagai berikut:

  • Karena FreeSWITCH saya berjalan di atas Centos 7, maka perlu ditambahkan package berikut:

yum -y install json-c-devel expat-devel libpcap-devel flex-devel automake libtool bison libuv-devel flex

  • Clone captagent  dan install:
cd /usr/src
git clone https://github.com/sipcapture/captagent.git captagent
cd captagent
./build.sh
./configure
make && make install
  • Setelah selesai menjalankan script di atas, lokasi default konfigurasi berada di /usr/local/captagent/etc/captagent. File pertama yang perlu diedit adalah file protocol_sip.xml. Edit bagian enable=”false” menjadi enable=”true”
  • Kemudian edit file transport_hep.xml untuk diaktifkan dan dicantumkan alamat ip server Homer/Capture Server seperti berikut:

            
                
                
                
  • Untuk memudahkan startup captagent di Centos 7, salin file startup dan jalakan perintah berikut ini :
root~# cp /usr/src/captagent/init/el/7/captagent.service /usr/lib/systemd/system/captagent.service
root~# cp /usr/src/captagent/init/el/captagent.sysconfig /etc/sysconfig/captagent
root~# systemctl enable captagent
root~# systemctl start captagent
  • Login ke web Homer dan lakukan test call melalui server FreeSWITCH tersebut, tunggu beberapa saat, maka kita bisa mendapatkan log sepert berikut:

Banyak sekali yang bisa diexplore dari hasil log ini yang tidak bisa dibahas semua dalam satu postingan. Nanti kapan-kapan saya posting lagi cara memanfaatkan Homer lebih jauh. Setidaknya dari hasil log di atas saya bisa melakukan troubleshoot dengan merunut Call-id tanpa harus melototin file log dalam mode text:

Jika hendak mencari sebuah panggilan gagal, saya tinggal click reply code panggilan dari Leg A ke Leg B di jam yang disebutkan pada saat terjadi problem, misal, pada tanggal 11 November 2017 pukul 8.45 – 8.50 pelanggan anu mengalami gagal ke nomer tertentu. Saya bisa mengisi kolom search :

Lalu hasilnya ternyata ada log seperti ini:

Hanya perlu click pada kolom CallID di atas saya mendapatkan detail sesi.

Banyak sekali yang bisa dieksplore di sini, dan saya masih belom mendapatkan semuanya. Untuk lebih detail bagaimana memanfaatkan

Kelebihan Setup CaptAgent Server Tersendiri

Seperti yang telah dibahas di atas, agent bisa diaktifkan di aplikasi SIP yang sudah support seperti FreeSWITCH ver 1.6.8 ke atas, Asterisk versi 13 ke atas, Kamailio dan OpenSIPS.

Lalu bagaimana jika perangkat SIP yang tidak support sipcapture/Captagent seperti AudiCode, Sonus, atau bahkan Asterisk versi 11 ke bawah?

Gampang. Install Captagent di server tersendiri dengan minimal dua interface. Satu interface tanpa ip address dengan mode promiscuous  digunakan untuk menerima raw packet dari port mirror perangkat SIP yang sedang dimonitoring. Switch tentunya harus manageable. Lalu interface satunya lagi digunakan untuk mengirim paket HEP/EEP ke server Homer. Topologi nya kira-kira seperti ini (gambar saya ambil dari https://github.com/sipcapture/captagent):

HomerFlow

 

Links

 

 

Codec G729 Di FreeSWITCH Dengan mod_bcg729

Akhir-akhir ini jadi kudet karena banyak hal yang harus dikerjakan, termasuk kudet dalam berita bahwa pemilik lisensi G729 memasukkan codec ini ke Royalty Free license per tanggal 1 Januari 2017. Artinya kedepan akan banyak pengembang library untuk codec ini supaya bisa digunakan di platform opensource telephony. Salah satunya yang sudah dipakai di kantor adalah mod_bcg729 (yang merupakan modifikasi dari mod_fsg729, hanya saja semua code dari Intel dimodifikasi dan dibuang). Codec diambil dari http://www.linphone.org/eng/documentation/dev/bcg729.html, jadi pastikan pada saat instalasi mod_bcg729 berikut ini, mesin dalam kedaan tersambung ke internet, karena pada saat proses instalasi akan mendowload source bcg729.

Berikut ini adalah cara instalasi codec G729 di SBC FreeSWITCH:

  1. Pastikan FreeSWITCH bisa terkoneksi dengan internet. Login ke FreeSWITCH lalu masuk ke direktori /usr/src
  2. Install libtool dan freeswitch-devel dengan perintah: ‘yum install -y freeswitch-devel libtool’
  3. Jalankan perintah: git clone https://github.com/xadhoom/mod_bcg729.git
  4. Masuk ke direktori /usr/src/mod_bcg729 lalu edit file Makefile, tambahkan direktori include di baris FS_INCLUDES  dan direktori modules di baris FS_MODULES. Contoh di server yang saya tangani:
    ################################
    ### FreeSwitch headers files found in libfreeswitch-dev ###
    FS_INCLUDES=/usr/include
    FS_MODULES=/usr/lib64/freeswitch/mod
    ################################
  5. Save hasil editan tersebut lalu jalankan perintah: make
  6. Jika tidak ada error, lanjutkan dengan perintah: make install
  7. Edit file  autoload_configs/modules.conf.xml, edit baris mod_g729 menjadi mod_bcg729. Lalu save.
  8. Reload FreeSWITCH
  9. Pastikan codec tersebut sudah diload otomatis oleh FreeSWITCH dengan menjalankan perintah : show codec di dalam fs_cli yang akan muncul baris seperti:
    codec,G.729,mod_bcg729
  10. Jika belum juga muncul, bisa lakukan load manual di dalam fs_cli dengan perintah: load mod_bcg729
  11. Optional, aktifkan fungsi transcoding di FreeSWITCH seperti di postingan https://www.otakudang.org/?p=648. (di postigan tersebut dibahas transcoding G711 ke OPUS, tapi step transcoding masih relevan untuk codec ini dan juga codec-codec lainnya).
  12. Test panggilan dengan memaksa SIP client menggunakan hanya codec G729, jika berhasil maka SDP pada SIP INVITE dan 200 OK akan tampak seperti
    INVITE SDP:
    ...
    a=rtpmap:18 G729/8000
    a=fmtp:18 annexb=no
    a=rtpmap:101 telephone-event/8000
    ...
    200 OK SDP:
    ...
    m=audio 31910 RTP/AVP 18 101
    a=rtpmap:18 G729/8000
    a=fmtp:18 annexb=no
    a=rtpmap:101 telephone-event/8000
    ...

 

[Troubleshoot] SIP/2.0 422 Session Interval Too Small dari FreeSWITCH

Di perangkat FreeSWITCH yang kami deploy, dapat error seperti ini:

SIP/2.0 422 Session Interval Too Small

menyebabkan call langsung terputus. Belum kedapatan trigger dari mana tapi akhirnya kami workaround dengan menambahkan config di bawah ini ke dalam sip profile:




Lalu reload dengan cli:

freeswitch> sofia profile  restart

 

Codec dan kapasitas bandwidth

 

“CODEC anu itu butuh bw-nya brapa sih?”

Sering banget dapet pertanyaan ini. Dan kebetulan sekali ada thread di forum ASTERISK.ID yang menanyakan hal sama.

(Terima kasih mas Asoka!)

Jadi, jika ada codec yang di tabel disebutkan bw nya 64kbps, itu kalo jalan di jalur “bersih” seperti E1, DS0, dan teman-temannya. Ketika masuk ke ranah Internet Protocol (IP), akan ada penambahan header IP dan UDP yang mengakitbatkan konsumsi bw jadi bengkak sedikit, menjadi kurang lebih 85 – 87 kbps an.

Itu baru satu arah. Kalo ngobrol di telpon pastinya dua arah, jadi harus dikalikan dua, kira-kira menjadi 170 – 174kbps an per call. Untuk lebih lengkapnya bisa dibaca di:

https://www.voip-info.org/wiki/view/Bandwidth+consumption

Dan berikut tabel untuk mudah jadi pengingat (terutama untuk saya sendiri):

Codec BitRate NEB (kbps) Conversation (2 ways) (kbps)
G.711 64 kbps 87.2 174.40
G.729 8 kbps 31.2 62.40
G.723.1 6.4 kbps 21.9 43.80
G.723.1 5.3 kbps 20.8 41.60
G.726 32 kbps 55.2 110.40
G.726 24 kbps 47.2 94.40
G.728 16 kbps 31.5 63.00
iLBC 15 kbps 27.7 55.40

*NEB: Normal Ethernet Bandwidth

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 https://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] 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

[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 https://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

Salah satu fasilitas IP PBX yang sering banget diminta pelanggan adalah Recording. Recording digunakan untuk menyimpan percakapan dalam format audio file (biasanya dalam bentuk .wav). Tapi, jika file-file ini disimpan juga dalam kurun waktu yang panjang, semakin lama penggunaan ruang penyimpanan pun bakal bengkak. Akhirnya harus diputuskan berapa lama sebuah file akan tetap di simpan. Yang paling sering sih sekitar 3 bulan atau 90 hari (pukul rata). Jadi sistem IP PBX harus bisa mendeteksi umur file tersebut jika sudah masuk 90 hari ke atas, akan otomatis dihapus.

Jika menggunakan Asterisk based IP PBX, file audio tersebut berada di dalam direktori /var/spool/asterisk/monitor.

Untuk melakukan kegiatan rutin di atas, kita bisa menjalankan perintah cron (misal setiap jam 01:15, dini hari):

~# crontab -e

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

Selamat mencoba.