Welcome!

I am Irfan Rifa'i VoIP Engineer Telecomunication Addict

View Work Hire Me!

About Me

SIP Trunking and Interworking
Session Border Controller
Microsoft Phone System and Dicect Routing
Kazoo
FreeSWITCH
Asterisk
Kamailio
VoIP network design, implementation, and redudancy
Who am i

Irfan Rifa'i.

Professional VoIP and Telecom Engineer

Telecommunications engineer especially VoIP Technology for Carrier, Enterprsie, UCaaS, and CPaaS with over 4 years of experience in the design, implementation, operational and executive management of telecommunications technologies and services, with practical experience in network planning, network operations management and telecommunications policy development

What I

have done.

Summary Portfolio

Telecommunications engineer especially VoIP Technology for Carrier, Enterprsie, UCaaS, and CPaaS with over 4 years of experience in the design, implementation, operational and executive management of telecommunications technologies and services, with practical experience in network planning, network operations management and telecommunications policy development

Services

Telephony Consulting

Consult your voice network requirement, equipment, and best practice with lower cost and investment.

Cloud PBX

Build your own cloud and fully hosted cloud PBX for your services or simply using our cloud PBX with tons of rich features

Cloud SBC

Build your SBC for carrier or enterprise to deliver your voice service roubustly and secure, high availibility and fully redundant

Direct Routing

Connecting your exsiting pbxs or PSTN number with Microsoft Teams Phonesystem

Whitelabeling

Become a reseller from our voice service, fully whitelabelled and build your own service seamlessly

Call Center

Provide simple callcenter with Kazoo or become fully features callcenter with FreeSWITCH and Asterisk

Our Blog

Move Your PSTN Number to Cloud with PSTN Connector


 

WFH still remaining and have no sign to end, especially in Indonesia as outbreak began on March 2020. Forgot the hot news about Indonesian pandemic issue, we wont cover here as politician.

The challenge is still same, how to support your folks to work remotely without disrupting your bussiness. Old but not old, a conversation with telephone is still psychologically impacted. People feels "humanize" when talk to each other, and telephone still favourite platform to deal with it. 

Then how it will work if your number is FXS line came from ONT modem? A nut problem, while at this pandemic situation you have to sit on your office desk and hold a telephone device.  Your folks need to mobile and carry out your PSTN number with them and ensure your bussiness running well. 

The Problematic

We know in this pandemic situation, your bussnines may be the struggle one. Investment to support your team with remote working condition may became new cost, when you trying to make your folks stand  in with paycheck to paycheck.

The Idea of "lets carry them out and move out to cloud"

Our idea is to carry your PSTN number and move them to our CloudPBX Platform with minimum technical requirement and sure with lower cost as can as possible (hope this so). 

We not only made this idea to simply carry out your number from physical analog line, also to leverage your ability to support your remote working condition. Once you have connect your office number with our CloudPBX platform, then you can use almost all of rich feature of our CPaaS platfrom.

- Callforward

- Voicemail Boxes

- Call Recording (Add On)

- API (Developer welcome)

- Webhooks (Do you know zapier.com ?)

- Real time CDR

- Conference

- Cutomize IVR

- Hot Desking

- Microsoft Teams Direct Routing (Microsoft minded phonesystem)

The Cost

We're realize, sometimes its began sacred when deal with cost. I wont cover how much it cost at quantity. Apart, we can described what the prerequisites you need to deal with moving your PSTN number to our CloudPBX Platform.

Basically, you only need 2 things....

- A Media Gateway

Yeah, same stuff different story. Converting a analog line to digital line only can be done with converter device such as Media Gateway. This major prerequisites is the key of carrying out your PSTN number to CloudPBX platfrom. A fun fact, honestly several telecom provider carry their PSTN line as digital line at the core level then convert them to analog line on user last mile.

- A Internet Connection

Internet, a global connection. A global transport infrastructure which helps your number from media gateway establish with our CloudPBX platform.

If you not a techy folks, seems difficult to understand what it means. But, okay we will cover some simplified explanation. 

We have a user story, a bike store with 4 employees. They have to working remotely due the pandemic

What they have :

- 2 PSTN number and analog phone.

- Lets say 1Mbps internet connection bundled with PSTN number (A broadband services you know)

Their challenges :

- They need to receive a call from their valuable customers, with exsiting published PSTN number from their broadband provider

- They need to make a call also. If using employee personal number, it costly and no privacy gatekeeper

- Boom! their PSTN number locked on their modem, a telephone call cant picked up by agent.

Our breakthrough against their challenges

- Placed our ceritifed media gateway, plug PSTN line and convert their number to digital line

- Connet to internet port, configured  CloudPBX as they request

- Boom! The bike store employee can received and make a call from their home!

- Also, they can review real time who had called, the number, the duration, and customize routing via CloudPBX portal.


Hope you understand bit of them, kidding!

The telephone is a good way to talk to people without having to offer the a drink.

Fran Lebowitz.

 



 


CPaaS Reseller: Bring Your Own Carrier

Latar Belakang

Penggunaan telepon dalam sebuah organisasi masih menjadi kebutuhan utama. Alasan ini karena secara alamiah manusia akan lebih nyaman dalam berkomunikasi melalui suara dibandingkan melalui teks. CPaaS (Communication Platform as a Service) merupakan sebuah term baru dalam dekade digital. CPaaS merubah konsep telepon suatu perusahaan yang dulunya sebuah perangkat PBX yang terpasang pada ruang teknisi menjadi sebuah server dengan infrastruktur cloud.

Perubahan ini diikuti pertimbangan bagaimana telepon berbasis cloud mampu mendukung dan mengakomodir semua fitur telepon PBX lama. Efektivitas dari platform yang digunakan turut menjadi faktor penentu keberhasilan dalam penerapan CPaaS. 

Lantas, pertanyaan muncul mengenai apa saja tantangan ketika melakukan perpindahan sistem telepon PBX kantor dari onprem menjadi cloud?


Mempertahankan Eksisting Number

Perusahaan pada umumnya sudah memiliki sambungan line PSTN dan telpon eksisting. Perpindahan infrastruktur PBX kantor dari onprem menjadi cloud diharapkan tidak merubah nomor DID eksisting dari perusahaan, karena DID atau nomer perusahaan adalah unik dan sudah dikenal sebagai identitas dari perusahaan. Perusahaan akan berusaha mempertahankan agar nomor DID tidak berubah.


Low Rates Outbound Call

Murah adalah sebuah hal wajib bagi perusahaan pada umumnya. Bagaimana melakukan reduce biaya panggilan telpon menggunakan layanan pihak ketiga sehingga telepon murah. Atau perusahaan memiliki koneksi SIP Trunk internal dengan eksisiting IPPBX. Menambahkan outbound trunking menjadi kebutuhan untuk menyediakan konektivitas sesuai kebutuhan perusahaan.

 

Katakanlah jika anda menelpon ke nomor operator A, anda ingin panggilan melalui jalur operator A sehingga didapatkan biaya yang murah dibandingkan menggunakan line operator B.  


Pilihan Standar SLA Operator

Bagaimana menentukan kualitas layanan dari provider siptrunk? perusahan mempertimbangkan untuk memilih provider/operator dengan standar kualitas sesuai regulatory baik internal maupun eksternal. Hal ini mencakup kualitas layanan, outage, redudansi, dll. 

 

Katanklah sambungan telpon / PSTN utama dari sebuah perusahaan mengalami gangguan. Lantas perusahaan bergantung pada operator A dan tidak bisa menerima dan melakukan panggilan. Disini lost of bussiness terjadi, diperlukan operator B untuk menjadi backup dari sambungan telpon.


Kebutuhan untuk tidak merubah nomer eksisting, menentukan SLA dari provider, dan mendapatkan tarif ideal untuk setiap percakapan diatas dapat dijawab menggunakan fitur BYOC (Bring Your Own Carrier)

 

CloudPBX Carrier Manager
Ofon Cloud PBX - Carrier Manager

Carrier Manager memungkinkan reseller ataupun user untuk mengatur resource outbound trunking (BYOC). Reseller dapat menambahkan trunking dan melakukan kustomisasi panggilan outbound untuk mendapatkan kualitas dan opsi terbaik.


Ofon CloudPBX - List carrier SIP Trunking

 
Ofon CloudPBX - Menambahkan Outbound Carrier


Ofon CloudPBX - Kustomisasi Rule Outbound Carrier

Ofon CloudPBX - List Carrier terbaru


BYOC memberikan kemudahan dan fleksibilitas bagi perusahaan untuk menentukan biaya, tracing dan kualitas dari sebuah layanan telepon operator.

 

links : https://www.ofon.co.id/enterprise



Integrasi Ofon SmartPBX dengan Microsoft Teams PhoneSystem


 
Sebenarnya penambahan nomor ekstensi pada Microsoft Teams masih belum memungkinkan. Sebagai cara lain, hal tersebut dapat diakali pada SBC Direct Routing. SBC Direct Routing lah yang akan mentranlasikan mapping dari nomer ekstensi pada Phone System dengan DID pada setiap usernya.

Salah satu contoh integrasi yang memungkinkan adalah menghubungkan Microsoft Teams dengan Ofon SmartPBX. Dimana baik SmartPBX dan Microsoft Teams sama sama sistem teleponi berbasis cloud.

Prasyarat :
-  Blok ekstensi dari SmartPBX dan Microsoft Teams sudah didefinisikan sebelum dilakukan integrasi. Hal ini bertujuan agar memudahkan pengaturan routing pada kedua sistem teleponi. Pada contoh, blok ekstensi pada SmartPBX adalah 11XX dan blok ekstensi pada Microsoft Teams dalah 10XX 
- SBC Direct Routing berfungsi menghubungkan SmartPBX dan Microsoft Teams.
- Microsoft Teams tidak mengenali nomer ekstensi, semua panggilan pada nomer ekstensi menuju Microsoft Teams akan ditranslasikan oleh SBC Direct Routing menjadi DID Line-URI.


Dialplan Rules:
SmartPBX ke Microsoft Teams : 11XX atau 11\d{2} dengan prioty 0
Microsoft Teams ke SmartPBX : 10XX atau 10\d{2} dengan priority 0

Disini saya tidak menjelaskan detail bagaimana dialplan menuju PSTN atau carrier. Praktisnya tergantung masing masing penerapan. Sebagai contoh sederhana dapat menggunakan dialplan dengan rules CatchAll dengan priority 1 atau sesudah priority 0. Ini bertujuan agar dialplan antar ekstensi SmartPBX dan Microsoft Teams dapat dieksekusi terlebih dahulu. Bisa dilihat pada tulisan saya sebeulmnya di sini.

SIP Trunk dari SmartPBX ke SBC Direct Routing
- Tambahkan device dan ekstensi pada SmartPBX. Buat dengan nomor ekstensi sesuai aturan yang sudah didefinisikan. Sebagai contoh dibuat user dengan device dan nomer ekstensi 1017.


  Ektensi 1017 ini akan mewakili satu user pada Microsoft Teams. Jika ada beberapa user maka perlu ditambahkan masing masing satu device dan ekstension untuk mewakilinya. Atau dalam cara praktis lainnya dapat dibuatkan modifikasi routing untuk bisa mengakomodasi kebutuhan routing panggilan dengan hanya user dan device saja.

SIP Trunk dari SBC Direct Routing ke SmartPBX
Tambahkan SIP trunk baru dari SBC Direct Routing menuju SmartPBX. SBC Direct Routing perlu mengenali panggilan dari SmartPBX lalu melakukan routing menuju Microsoft Teams. Masukkan kredensial dari username, password, dan realm pada device ekstensi yang sebelumnya sudah diset pada SmartPBX.

SIP Trunk SBC Direct Routing - SmartPBX.

 <gateway name="smartpbx">  
                             <param name="username" value="username"/>  
                             <param name="password" value="password"/>  
                             <param name="realm" value="smartpbx.domain.tld"/>  
                             <param name="from-user" value="username"/>  
                             <param name="from-domain" value="smartpbx.domain.tld"/>  
                             <param name="proxy" value="smartpbx.domain.tld"/>  
                             <param name="expire-seconds" value="800"/>  
                             <param name="register" value="true"/>  
                             <param name="register-transport" value="tcp"/>  
                             <param name="retry-seconds" value="30"/>  
                             <param name="ping" value="30"/>  
                             <param name="context" value="public"/>  
                             <param name="caller-id-in-from" value="true"/>  
                             <variables>  
                             </variables>  
                         </gateway>  

Asumsinya adalah SBC Direct Routing sudah terhubung dengan Microsoft Teams, hal ini karena sudah dikonfigurasikan pada step sebelumnya ketika menghubungkan nomer DID dari PSTN menuju Microsoft Teams.

Tahap selanjutnya adalah mengkonfigurasikan routing panggilan pada SBC Direct Routing untuk panggilan ekstensi antara SmartPBX dan Microsoft Teams.

Pada SmartPBX tidak diperlukan perubahan routing panggilan, dikarenakan secara otomatis SmartPBX sudah mengenali Microsoft Teams dari blok ekstensi yang sudah disepakati sebelumnya. Hal ini berbeda dengan Microsoft Teams yang memerlukan mapping dari nomor ekstensi menjadi nomor DID.

Routing SmartPBX ke Microsoft Teams

 <extension name="smartpbx_to_teams">   
   <condition field="${acl(${network_addr} domains)}" expression="true"/>  
   <condition field="destination_number" expression="^(1017)$">  
    <action application="set" data="domain_name=$${domain}"/>  
    <action application="set" data="sip_secure_media=true"/>  
    <action application="export" data="nolocal:rtp_secure_media=true:AES_CM_128_HMAC_SHA1_80"/>  
    <action application="bridge" data="sofia/gateway/sip.pstnhub.microsoft.com/+622713400062"/>  
   </condition>  
  </extension>  

Perhatikan konfigurasi diatas. Pada routing panggilan diatas dilakukan translasi nomor tujuan dari 1017 menjadi +622713400062. Hal ini agar panggilan dapat termapping pada user yang sudah ditentukan.

Routing Microsoft Teams ke SmartPBX

 <extension name="teams_to_smartpbx">  
   <condition field="${acl(${network_addr} domains)}" expression="true"/>  
   <condition field="destination_number" expression="^(\+62)(11\d{2})$">  
    <action application="set" data="domain_name=$${domain}"/>  
    <action application="bridge" data="sofia/gateway/smartpbx.domain.tld/$2"/>  
   </condition>  
  </extension>  

Pada konfigurasi dari Microsoft Teams ke SmartPBX dilakukan pula normalisasi panggilan. Hal ini karena secara default Microsoft Teams akan membawa format E.164 yang akan selalu membawa awalan +62. Sebenarnya hal tersebut dapat dilakukan melalui normalisasi pada Microsoft Teams. Pada CsOnlineVoiceRoute. SmartPBX tidak akan mengenali panggilan tersebut apabila tidak dilakukan normalisasi.

Setelah trunking dan routing selesai disetup, dapat dilanjutkan melakukan test panggilan ke antar ekstensi. 

Test Call dari SmartPBX ke Microsoft Teams.
Panggilan dial dari softphone yang teregister ke Ofon SmartPBX dengan ekstensi 1123 menuju ekstensi Microsoft Teams 1017
 
Panggilan berjalan dari SmartPBX ke Microsoft Teams

 



Test Call dari Microsoft Teams ke SmartPBX
Panggilan dari user Microsoft Teams dekstop app ke ekstensi 1123 yang ada di SmartPBX


 Panggilan berjalan dari Microsoft Teams ke SmartPBX
 


Integrasi antara Microsoft Phone System tidak terbatas hanya pada SmartPBX saja. Hal serupa juga dapat dilakukan dengan menggunakan eksiting on premise IPPBX seperti Grandstream, Sangoma, PBXAct, Yeastar, CUCM dll. Perbedaan requirement dari masing - masing vendor masih perlu dicoba dan ditest dikarenakan perbedaan pada cara konfigurasi.

Integrasi antara SmartPBX dan Microsoft Teams dapat dilakukan secara seamlessly dengan layanan Cloud Direct Routing yang memungkinkan menghubungkan kedua sistem teleponi yang berbeda.


Links :



Integrasi Ofon SmartPBX dengan Cloud Storage


 

Call Recording atau rekaman panggilan merupakan fitur dasar dan penting yang harus dimiliki perangkat IPPBX. Sebagai contoh kasus, ada kalanya seorang supervisor hendak memutar percakapan seorang staffnya dengan pelanggan untuk memastikan kualitas dukungan layanan terhadap pelanggan. Atau seorang manajer IT yang hendak melakukan evaluasi terhadap kualitas layanan telepon itu sendiri.

Perkembangan dalam transformasi telepon kantor dari on-premise menjadi cloud memberikan tantangan baru dalam memberikan fleksibilitas dan keamanan dari layanan telepon. Lalu bagaimana dengan kualitas dan keamanan dalam layanan telepon kantor berbasis cloud?

Ofon SmartPBX adalah platform teleponi berbasis cloud. SmartPBX menyediakan fitur Call Recording yang dapat terhubung dengan eksisting cloud storage milik pelanggan ataupun dengan cloud storage yang sudah disediakan oleh Ofon.

Dengan integrasi cloud storage. Kapasitas dan ketersediaan ruang penyimpanan dapat diatur sesuai dengan kebutuhan. Keamanan dan ketersedian data rekaman panggilan dapat terjaga karena tersimpan dalam penyimpanan komputasi awan. Didukung dengan web portal yang intuitif untuk memudahkan pelanggan dalam melakukan konfigurasi call recording pada setiap usernya.


Storage Management
Storage Management adalah aplikasi web manajemen untuk menambahkan cloud storage pada portal web SmartPBX. Storage management mendukung integrasi SmartPBX dengan provider cloud storage seperti AWS S3 dan layanan S3 kompatibel lain. Ofon juga menyediakan lokal S3 kompatibel storage


  
Call Recording
Call Recording adalah aplikasi web manajemen untuk mencari, mendengarkan, dan mengunduh hasil rekaman panggilan yang sudah diset pada user SmartPBX. Pencarian rekaman panggilan dapat dilakukan dengan mudah melalui filter dan pencarian custom yang sudah tersedia pada portal web SmartPBX.

  
Mudah bukan? Pelanggan dapat memilih opsi menggunakan eksiting kompatibel S3 cloud storage ataupun menggunakan kapasitas cloud storage yang sudah disediakan oleh Ofon.

Mengaktifkan Call Recording Pada User
 
Mengaktifkan fitur call recording pada Ofon SmartPBX dapat dilakukan dengan mudah. Administrator yang sudah memiliki login akun dapat mengoperasikan konfigurasi untuk menambah call recording pada user.

Buka pada aplikasi SmartPBX, pilih menu Users, lalu klik pada bagian kanan konfigurasi user. Klik pada icon Customized Call Recording.


Pembagian call recording dapat dipisahkan menjadi 4 kategori. Adapun pembagiannya sebagai berikut.

Inbund Internal : Mengaktifkan call recording apabila user atau extension ditelpon oleh user lain dalam SmartPBX.
Inbound External : Mengaktifkan call recording apabila user atau extension ditelpon oleh DID eksternal diluar SmartPBX.
Outbound Internal : Mengaktifkan call recording apabila user atau extension melalukan panggilan menuju user atau extension lain dalam SmartPBX.
Outbound External : Mengaktifkan call recording apabila user atau extension melakukan panggilan menuju DID eksternal diluar SmartPBX.

Links :


Microsoft Teams Direct Routing dengan FreeSWITCH

 

Tertantang dengan kolega yang berhasil menghubungkan Asterisk  dengan Microsoft Phone System. Pada tulisan kali ini saya telah mencoba menghubungkan FreeSWITCH dengan Microsoft Phone System.



Artikel tentang menghubungkan Microsoft Teams Direct Routing :


1. Microsoft Teams Direct Routing With Asterisk (Issabel) by Gabriel Hermawan Wishnu.


2. Using Kamailio as SBC for Microsoft Teams by Henning Westerholt.



Prasyarat


- Server FreeSWITCH harus terinstall dengan IP Publik. Tidak dianjurkan untuk membuka koneksi SSH ke publik. Dianjurkan menggunakan firewall yang cukup ketat dan mengizinkan koneksi dari blok IP address Microsoft Cloud (52.112.0.0/14).


-  FreeSWITCH harus diset dengan SIPS dan SRTP mengunakan cert/SSL dari SSL authority yang didukung oleh Microsoft. Dalam tulisan ini saya menggunkan DigiCert.


-  Dalam rangka menyesuaikan format contact header dari Microsoft Phone System. Perlu dilakukan patch pada kode sumber FreeSWITCH dan melakukan kompilasi modul. Patch dilakukan pada modul mod_sofia. Tanpa melakukan patch ini menggunakan FreeSWITCH dengan direct routing tidak akan berfungsi.


-  Memiliki nomor routing DID dari operator, dalam tulisan ini menggunakan DID dari Ofon Indonesia yang merupakan salah satu penyedia layanan telepon tetap berbasis IP dan menyediakan layanan Cloud Microsoft Teams Direct Routing.


-  Memiliki akses DNS Server untuk menambah TXT record dalam rangka autentikasi domain dengan Microsoft.


-  Memiliki minmal 2 lisensi E1 O365 + Phone System. Satu lisensi untuk user dan satu lisensi digunakan untuk domain SIP Trunk.



Installasi FreeSWITCH

 - Download kode sumber FreeSWITCH dari github official site.


 wget -O - https://files.freeswitch.org/repo/deb/debian-release/fsstretch-archive-keyring.asc | apt-key add -  
 echo "deb http://files.freeswitch.org/repo/deb/debian-release/ stretch main" > /etc/apt/sources.list.d/freeswitch.list  
 echo "deb-src http://files.freeswitch.org/repo/deb/debian-release/ stretch main" >> /etc/apt/sources.list.d/freeswitch.list  
 apt-get update  
 #Install dependencies required for the build  
 apt-get build-dep freeswitch  
 #then let's get the source. Use the -b flag to get a specific branch  
 cd /usr/src/  
 git clone https://github.com/signalwire/freeswitch.git -bv1.10 freeswitch  
 cd freeswitch  

 - Sebelum melakukan compile, patch 3 file sumber kode yaitu sofia.c sofia_reg.c mod_sofia.h .


 - Compile dan Install FreeSWITCH.



 git config pull.rebase true  
 # ... and do the build  
 ./bootstrap.sh -j  
 ./configure  
 make  
 make install  

-  Setup startup script / systemd untuk service FreeSWITCH. Startup script akan menjalankan service FreeSWITCH secara otomatis.


-  Microsoft Phone System mengharuskan koneksi SIP Trunk dari SBC menggunakan SIPS dan SRTP. SIPS dan SRTP adalah prokotol SIP dan RTP yang dienkripsi sehingga koneksi SIP Trunk menjadi secure. FreeSWITCH harus diset menggunakan SIPS dan SRTP untuk dapat tersambung dengan Microsoft Phone System. Diperlukan perubahan pada konfigurasi global dari aplikasi FreeSWITCH, konfigurasi global pada vars.xml



 <!-- External SIP Profile -->  
 <X-PRE-PROCESS cmd="set" data="external_auth_calls=false"/>  
 <X-PRE-PROCESS cmd="set" data="external_sip_port=5080"/>  
 <X-PRE-PROCESS cmd="set" data="external_tls_port=5081"/>  
 <X-PRE-PROCESS cmd="set" data="external_ssl_enable=true"/>  
 <X-PRE-PROCESS cmd="set" data="sip_tls_version=tlsv1,tlsv1.1,tlsv1.2"/>  
 <X-PRE-PROCESS cmd="set" data="sip_tls_ciphers=ALL:!ADH:!LOW:!EXP:!MD5:@STRENGTH"/>  
 <X-PRE-PROCESS cmd="set" data="rtp_sdes_suites=AEAD_AES_256_GCM_8|AEAD_AES_128_GCM_8|AES_CM_256_HMAC_SHA1_80|AES_CM_192_HMAC_SHA1_80|AES_CM_128_HMAC_SHA1_80|AES_CM_256_HMAC_SHA1_32|AES_CM_192_HMAC_SHA1_32|AES_CM_128_HMAC_SHA1_32|AES_CM_128_NULL_AUTH"/>  

- Pasang  CERT dari CA file pada FreeSWITCH. Pada contoh ini saya menggunakan DigiCert. CERT harus menggunakan provider komersial CERT yang kompatibel dengan Microsoft.


- Check validasi SSL menggunakan SSL Shopper.





Konfigurasi FreeSWITCH

-  Setup gateway ke Microsoft Phone System. Gateway dalam FreeSWITCH merupakan repserentasi UA untuk SIP Trunk. SIP proxy Microsoft Phone System adalah sip.pstnhub.microsoft.com

freeswitch_ofon_biz.xml


 <include>  
  <gateway name="freeswitch.ofon.biz">  
  <param name="username" value="not-used"/>  
  <param name="realm" value="freeswitch.ofon.biz"/>  
  <param name="from-domain" value="freeswitch.ofon.biz"/>  
  <param name="password" value="not-used"/>  
  <param name="proxy" value="sip.pstnhub.microsoft.com"/>  
  <param name="register" value="false"/>  
  <param name="register-transport" value="tls"/>  
  <param name="retry-seconds" value="10"/>  
  <param name="caller-id-in-from" value="true"/>  
  <!--extra sip params to send in the contact-->  
  <param name="contact-host" value="freeswitch.ofon.biz"/>  
  <param name="contact-in-ping" value="true"/>  
  <param name="ping-user-agent" value="Sonus SBC V.5.7"/>  
  <param name="ping" value="10"/>  
  </gateway>  
 </include>  

Parameter berwarna merah adalah parameter hasil patch sumber kode FreeSWITCH. Tanpa patch tersebut maka Microsoft Phone System tidak bisa mengidentifikasi domain dan contact header dari SBC Direct Routing.


- Jalankan gateway kearah Microsoft Phone System dan cek apakah paket SIP OPTIONS sudah terkirim dan mendapatkan balasan dari SIP Proxy Microsoft.



 send 623 bytes to tls/[52.114.7.24]:5061 at 03:25:41.189516:  
 ------------------------------------------------------------------------  
 OPTIONS sip:sip.pstnhub.microsoft.com;transport=tls SIP/2.0  
 Via: SIP/2.0/TLS IP.AD.DR.ES:5081;rport;branch=z9hG4bKDKgetaKpUc4rc  
 Max-Forwards: 70  
 From: <sip:freeswitch.ofon.biz>;tag=4624XDZ9UtypN  
 To: <sip:freeswitch.ofon.biz>  
 Call-ID: e763d8b6-1ee8-1239-0ea5-566fbb48005e  
 CSeq: 20967190 OPTIONS  
 Contact: <sip:gw+freeswitch.ofon.biz@freeswitch.ofon.biz:5081;transport=tls;gw=freeswitch.ofon.biz>  
 User-Agent: Sonus SBC V.5.7  
 Allow: INVITE, ACK, BYE, CANCEL, OPTIONS, MESSAGE, INFO, UPDATE, REGISTER, REFER, NOTIFY  
 Supported: timer, path, replaces  
 Allow-Events: talk, hold, conference, refer  
 Content-Length: 0  
 recv 365 bytes from tls/[52.114.7.24]:5061 at 03:25:41.238211:  
 ------------------------------------------------------------------------  
 SIP/2.0 200 OK  
 FROM: <sip:freeswitch.ofon.biz>;tag=4624XDZ9UtypN  
 TO: <sip:freeswitch.ofon.biz>  
 CSEQ: 20967190 OPTIONS  
 CALL-ID: e763d8b6-1ee8-1239-0ea5-566fbb48005e  
 VIA: SIP/2.0/TLS IP.AD.DR.ES:5081;branch=z9hG4bKDKgetaKpUc4rc;rport  
 CONTENT-LENGTH: 0  
 ALLOW: INVITE,ACK,OPTIONS,CANCEL,BYE,NOTIFY  
 SERVER: Microsoft.PSTNHub.SIPProxy v.2020.5.27.2 i.ASEA.5  

- Setup Gateway kearah provider/carrier.


 ofonsbc.xml

 <include>  
  <gateway name="netaccess.ofon.biz">  
  <param name="username" value="not-used"/>  
  <param name="realm" value="netaccess.ofon.biz"/>  
  <param name="from-domain" value="customer04.ofon.biz"/>  
  <param name="password" value="not-used"/>  
  <param name="proxy" value="IP.AD.DR.ES"/>  
  <param name="register" value="false"/>  
  <param name="register-transport" value="tcp"/>  
  <param name="retry-seconds" value="10"/>  
  <param name="caller-id-in-from" value="true"/>  
  <param name="contact-host" value="customer04.ofon.biz"/>  
  <param name="contact-in-ping" value="true"/>  
  <param name="ping-user-agent" value="Sonus SBC V.5.7"/>  
  <param name="ping" value="10"/>  
  </gateway>  
 </include>  

Setelah SIP Trunk dari Microsoft Phone System dan Carrier/Operator selesai disetup. Routing panggilan dari dan ke Microsoft Phone System harus di define pada dialplan FreeSWITCH.


DID yang digunakan adalah  +622430000062.


- Microsoft Phone System ke SIP Trunk Operator

 <include>  
  <extension name="teams_to_ofon">  
   <condition field="${acl(${network_addr} domains)}" expression="true"/>  
   <condition field="caller_id_number" expression="^(\+622430000062)$">  
    <action application="set" data="domain_name=$${domain}"/>
    <action application="bridge" data="sofia/gateway/netaccess.ofon.biz/${destination_number}"/>  
   </condition>  
  </extension>  
 </include>  


- SIP Trunk Operator ke Microsoft Phone System

 <include>  
  <extension name="ofon_to_teams">  
   <condition field="network_addr" expression="^IP\.AD\.DR\.ES$"/>  
   <condition field="${acl(${network_addr} domains)}" expression="true"/>  
   <condition field="destination_number" expression="^(\+622430000062)$">  
    <action application="set" data="domain_name=$${domain}"/>  
    <action application="set" data="sip_secure_media=true"/>  
    <action application="export" data="nolocal:rtp_secure_media=true:AES_CM_128_HMAC_SHA1_80"/>  
    <action application="bridge" data="sofia/gateway/customer04.ofon.biz/${destination_number}"/>  
   </condition>  
  </extension>  
 </include>  


Pada teks berwarna merah, merupakan konfigurasi untuk force transport dari RTP menjadi SRTP.


Konfigurasi Microsoft Teams PhoneSystem

Konfigurasi pada PhoneSystem menggunakan Windows Powershell. Powershell memerlukan user Global Admin.


- Akses pada portal.microsoft.com dengan user Global Admin. Pastikan user client dan user dummy untuk SBC Direct Routing sudah diassign dengan lisensi O365 dan PhoneSystem.


Dalam contoh menggunakan user client sekaligus Global Admin irfan.rifai@ofon.io dan dummy user SBC sip@freeswitch.ofon.biz



- Mulai session dengan menggunakan powershell. Mulai powershell dengan "run as administrator".


- Import module SkypeOnlineConnector dan import kredensial user Global Admin.

  Import-Module SkypeOnlineConnector   
  $Cred = Get-Credential   


- Akan muncul prompt dan masukkan kredensial.




- Mulai sesi dengan konsol PhoneSystem.
 $sfb = New-CsOnlineSession $Cred -OverrideAdminDomain “ofonio.onmicrosoft.com”  
 Import-PSSession $sfb -AllowClobber  


- Tambahkan FreeSWITCH SBC untuk Direct Routing.


 Set-CsOnlinePSTNGateway -Fqdn freeswitch.ofon.biz -SipSignallingPort 5081 -ForwardCallHistory $true -Enabled $true -ForwardPai $true -MaxConcurrentSessions 5  


- Check apakah server FreeSWITCH sudah berhasil ditambahakan dengan perintah Get-CsOnlinePstnGateway.


 Identity              : freeswitch.ofon.biz  
 InboundTeamsNumberTranslationRules : {}  
 InboundPstnNumberTranslationRules  : {}  
 OutboundTeamsNumberTranslationRules : {}  
 OutboundPstnNumberTranslationRules : {}  
 Fqdn                : freeswitch.ofon.biz  
 SipSignalingPort          : 5081  
 FailoverTimeSeconds         : 10  
 ForwardCallHistory         : True  
 ForwardPai             : True  
 SendSipOptions           : True  
 MaxConcurrentSessions        : 5  
 Enabled               : True  
 MediaBypass             : False  
 GatewaySiteId            :  
 GatewaySiteLbrEnabled        : False  
 GatewayLbrEnabledUserOverride    : False  
 FailoverResponseCodes        : 408,503,504  
 GenerateRingingWhileLocatingUser  : True  
 PidfLoSupported           : False  
 MediaRelayRoutingLocationOverride  :  
 ProxySbc              :  
 BypassMode             : None  

- Buat routing panggilan dengan policy user yang akan diberikan kepada FreeSWITCH Server.


 Set-CsOnlinePstnUsage -Identity Global -Usage @{Add="Default"}  
 New-CsOnlineVoiceRoute -Identity "CatchAll" -NumberPattern ".*" -OnlinePstnGatewayList ast.ofon.biz -Priority 1 -OnlinePstnUsages "Default"  
 New-CsOnlineVoiceRoutingPolicy -Identity "DefaultVoicePolicy" -OnlinePstnUsages "Default"  

- Tambahkan nomor DID pada user client.

 Set-CsUser -Identity "irfan.rifai@ofon.io" -EnterpriseVoiceEnabled $true -HostedVoiceMail $true -OnPremLineURI tel:+622713400062  

- Daftarkan user client dengan Voice Routing Policy yang sudah dibuat sebelumnya.


 Grant-CsOnlineVoiceRoutingPolicy -Identity "irfan.rifai@ofon.io" -PolicyName "DefaultVoicePolicy"  

Sampai disini konfigurasi untuk PhoneSystem dan FreeSWITCH sudah selesai. Login pada aplikasi Microsoft Teams pada konsol baik mobile maupun laptop. Perhatikan bagian dialplad.


Status dialpad dari user client Microsoft Teams.




Apabila dialplan sudah muncul nomor DID yang didaftarkan melalui konsol powershell, lakukan tes panggilan dari PSTN/Mobile ke DID yang sidah didaftarkan pada Microsoft Teams.


 

Log dan event panggilan dari konsol FreeSWITCH.



Panggilan outbound dari Microsoft Teams ke operator lain


 
Menarik bukan? Meskipun dapat berfungsi baik untuk panggilan masuk dan keluar, sangat tidak disarankan menggunakan FreeSWITCH untuk Microsft Teams Direct Routing.

Ini karena Microsoft sendiri memiliki standar dan sertifikasi untuk SBC Direct Routing, adapun list dari SBC Direct Routing yang sudah didukung oleh microsoft sebagai berikut :


https://docs.microsoft.com/en-us/microsoftteams/direct-routing-border-controllers


- AudioCodes

- Ribbon
- MetaSwitch
- Oracle
- TE-SYSTEMS
- ThinkTel

Sekian tulisan mengenai Microsoft Teams Direct Routing dengan FreeSWITCH. 


Links :


- https://ofon.co.id/enterprise/clouddirectrouting

- https://freeswitch.org
- https://docs.microsoft.com/en-us/microsoftteams/direct-routing-plan
- https://docs.microsoft.com/en-us/microsoftteams/direct-routing-configure


Konfigurasi Inbound Routes Issabel PBX


 

Seringkali masi ketemu sama rekan / mitra yang masih kesulitan untuk set routing incoming routes pada Asterisk base PBX. Jadi sebenarnya untuk routing inbound routes di Astersik base PBX cukup mudah kalau dilakukan melalui GUI web. Untuk konfigurasinya menggunakan CLI mungkin akan saya bahas di postingan yang lain. Secara konsep keduanya tetap masih sama.


Berikut step - step konfigurasi inbound routes pada Asterisk base PBX yang mana dalam tulisan ini saya menggunakan contoh Issabel PBX.

Untuk konsep routing DID pada Issabel PBX disini sendiri saya coba gambarkan sebagai berikut.

If Receive DID Digit == DID Listed :
     Teruskan panggilan ke = Extension 1001
Else
      Hangup Call 404 No Route Destination

Dalam tutorial ini diasumsikan koneksi SIP Trunk ke provider teleponi sudah tersambung, jadi kita langsung set untuk inbound routesnya.

Pertama pastikan sudah login ke PBX, langsung ke menu PBX --> PBX Configuration --> Inbound Routes.

Tampilannya kurang lebih seperti berikut.


















Selanjutnya isikan nomor DID Incoming yang akan digunakan, dan arahkan ke destinasi yang dituju. Destinasi bisa bermacam - macam sesuai kebutuhan. Misal saja extension, IVR, conference, queue, dll. Pada contoh kali ini kita akan menggunakan spesifik extension saja.



















Arahkan inbound routes ke salah satu extension di PBX


Jika sudah, submit konfigurasi dan reload konfigurasi Issabell PBX seperti biasanya. Lalu lakukan Test call ke nomer DID yang sudah diset ke Inbound Routes tadi.

Disini saya registerkan extension 1001 seperti pada contoh dan melakukan test call ke nomor DID dummy 02154321234 yang barusan saya set.


Berikut hasil test call dari nomor DID yang saya setting. Call berhasil masuk dengan DID yang spesifik. Kebetulan saya ada 2 rules inbound dengan DID yang berbeda.

Konfigurasi inbound routes yang barusan diset sekarang sudah berjalan. Selanjutnya jika ingin memasukkan DID yang berbeda cukup membuat konfigurasi inbound routes baru dengan DID yang dimaksudkan lalu arahkan ke salah satu target seperti yang dijabarkan diatas.

Semoga bermanfaat.






NGREP dan SNGREP Untuk Troubleshoot SIP


 

Seringkali ketika lagi troubleshoot VoIP nemu obstacle gimana caranya narik log SIP nya yang mudah dan gampang. Dulu awal - awal pas troubleshoot pake tools sejuta umat, wireshark. Cuma lama - lama jadi kesulitan sendiri karena wireshark yang berat dan harus nunggu sesi call selesai utuk troubleshoot.


Akhirnya dapat masukkan dari kawan sekantor buat pake tools baru yaitu NGREP dan SNGREP. Pertama - pertama  disuruh pake NGREP dulu,  lama - lama baru pake SNGREP. Karena emang keluarnya duluan NGREP. 

NGREP sendiri singkatan dari "Network Grep". Disini saya menggunakan distro Centos 7, untuk installasinya sendiri tinggal menggunakan RPM.

Cara installnya sebagai berikut :
 yum install ngrep  

Setelah terinstall, anda bisa menggunakan NGREP melalui command line server anda
 ngrep -W byline -d eth0 port 5060  

Hasilnya kurang lebih sebagai berikut :
 U 185.53.88.40:58777 -> 10.10.10.56:5060 #3  
 INVITE sip:900442038076746@10.10.10.56:5060 SIP/2.0.  
 Via: SIP/2.0/UDP 185.53.88.40:58777;branch=z9hG4bK1763926594.  
 Max-Forwards: 70.  
 From: <sip:61@10.10.10.56:5060>;tag=1590280767.  
 To: <sip:900442038076746@10.10.10.56:5060>.  
 Call-ID: 1842141676-1666533667-1306961472.  
 CSeq: 1 INVITE.  
 Contact: <sip:61@185.53.88.40:58777>.  
 Content-Type: application/sdp.  
 Allow: ACK, BYE, CANCEL, INFO, INVITE, MESSAGE, NOTIFY, OPTIONS, PRACK, REFER, REGISTER, SUBSCRIBE, UPDATE, PUBLISH.  
 User-Agent: sdthsrhstuksz.  
 Content-Length: 206.  
 .  
 v=0.  
 o=61 16264 18299 IN IP4 192.168.1.83.  
 s=call.  
 c=IN IP4 192.168.1.83.  
 t=0 0.  
 m=audio 25282 RTP/AVP 0 101.  
 a=rtpmap:0 pcmu/8000.  
 a=rtpmap:8 pcma/8000.  
 a=rtpmap:101 telephone-event/8000.  
 a=fmtp:101 0-11.  
 #  
 U 10.10.10.56:5060 -> 185.53.88.40:58777 #4  
 SIP/2.0 100 Trying.  
 Via: SIP/2.0/UDP 185.53.88.40:58777;branch=z9hG4bK1763926594.  
 From: <sip:61@10.10.10.56:5060>;tag=1590280767.  
 To: <sip:900442038076746@10.10.10.56:5060>.  
 Call-ID: 1842141676-1666533667-1306961472.  
 CSeq: 1 INVITE.  
 User-Agent: VoIP My ID Mediaserver.  
 Content-Length: 0.  
 .  
 #  
 U 10.10.10.56:5060 -> 185.53.88.40:58777 #5  
 SIP/2.0 403 Forbidden.  
 Via: SIP/2.0/UDP 185.53.88.40:58777;branch=z9hG4bK1763926594.  
 From: <sip:61@10.10.10.56:5060>;tag=1590280767.  
 To: <sip:900442038076746@10.10.10.56:5060>;tag=U3gB9U86j2a6Q.  
 Call-ID: 1842141676-1666533667-1306961472.  
 CSeq: 1 INVITE.  
 User-Agent: VoIP My ID Mediaserver.  
 Accept: application/sdp.  
 Allow: INVITE, ACK, BYE, CANCEL, OPTIONS, MESSAGE, INFO, UPDATE, REGISTER, REFER, NOTIFY.  
 Supported: timer, path, replaces.  
 Allow-Events: talk, hold, conference, refer.  
 Content-Length: 0.  
 .  
 #  

Sekarang ngetrap trafik SIP yang masuk ke server jadi lebih mudah dan trubleshoot juga bisa jadi lebih gercep.

Namun menggunakan NGREP ada kekurangannya, jadi kita agak kerepotan jika trafik call yang masuk ke server sudah berjibun. Maka dari itu akhirnya sama temen dianjurin menggunakan SNGREP kalau saja trafik SIP udah banyak.

SNGREP sendiri sebenarnya adalah kembangan dari NGREP, namun dengan tambahan S didepannya. S sendiri adalah singakatan dari SIP. Yang mana berarti SNGREP ini khsusus dibuat untuk mentrap trafik SIP.

Untuk installasinya lakukan sebagai berikut :
Menambahkan file di /etc/yum.repos.d/irontec.repo dengan isi :
 [irontec]  
 name=Irontec RPMs repository  
 baseurl=http://packages.irontec.com/centos/$releasever/$basearch/  

Tambahkan public key untuk repo irontec
 rpm --import http://packages.irontec.com/public.key  

Jalankan update lalu install SNGREP
 yum check-update -y  
 yum install sngrep -y  

Setelah berhasil terinstall, untuk menjalankannya cukup dengan perintah sngrep


Selanjutnya tinggal klik - klik aja pada bagian transaction yag mau dilihat, contohnya :


Jadi kira - kira seperti itu untuk penggunaan SNGREP dan NGREP, penggunaanya sama - sama mudah tergantung kebutuhan. Kalau trafik sedikit dan mau ambil plain teks bisa langsung pake NGREP. Kalau trafiknya sudah banyak, SNGREP juga bisa jadi opsi.

Semoga bermanfaat.

Contact Us

Phone :

+6221 3970 0001 ext 1123

Address :

Based on Jakarta,
Jakarta Captial Region, Indonesia

Email :

irfan@voip.my.id

Diberdayakan oleh Blogger.

Cari Blog Ini

Halaman