Autoprovisioning ip phone Sangoma dengan FreePBX

Kebetulan dapat pinjaman perangkat dari Svarakom, vendor telekomunikasi yang sudah sering banget kerja bareng dengan OFON. Mereka mengirim saya beberapa perangkat Sangoma, antara lain ip phone Sangoma s705 beserta expansion module EXP100, ip phone Sangoma s205, dan Sangoma Vega 60g (4FXO & 4FXS). Plus, satu lagi ip phone Asterisk A22. Postingan kali ini membahas alternatif komunikasi selama bekerja dari rumah maupun dari tempat lain (remote). FreePBX merupakan IP PBX yang sudah banyak dikenal oleh komunitas opensource Indonesia dan mudah sekali didapatkan dengan mengunduh langsung dari lamannya.

Sangoma s705 ip phone + EXP100 expansion module

Sangoma s205 1-Line Basic Entry-Level IP Phone
Sangoma s205 ip phone

Sangoma Vega 60g (4 FXO & 4 FXS)

A22 ⋆ Sangoma
Asterisk A22 ip phone

Seneng rasanya meja kerja jadi penuh.

Hal pertama yang hendak dicoba adalah auto provisioning. Kali ini untuk dua ip phone saja. Karena auto provisioning FreePBX hanya bisa untuk ip phone Sangoma atau Digium saja. Untuk bisa melakukan autoprovisioning brand lain seperti Asterisk A22, atau Linksys SPA942 misalnya, FreePBX perlu ditingkatkan ke PBXAct. Lain waktu saya akan coba autoprovisioning untuk semuanya menggunakan Issabel. Kali ini mari kita coba FreePBX dulu.

Kenapa Auto Provisioning?

Persiapannya agak panjang. Untuk mempersiapkan auto provisioning, alangkah baiknya jika kita catat satu persatu macaddress dan ekstensi yang hendak dipetakan ke perangkat tersebut. Selain itu kita juga harus memasukkan URL auto provisioning ke dalam masing-masing perangkat ip phone. Kelebihannya adalah ketika ada perubahan konfigurasi, misal perubahan ekstensi, maka kita tidak perlu lagi harus login ke masing-masing webGUI ip phone untuk melakukan perubahan. Perubahan ekstensi dapat dilakukan via laman FreePBX. Dan auto provisioning akan sangat membantu ketika perangkat yang hendak dipasang ada banyak dan beragam (selama brand masih Sangoma atau Digium). Saya pribadi pernah melakukan pemasangan 85 ip phone dengan auto provisioning, dibantu oleh 2 orang teman yang menyebarkan perangkat ke bangunan 3 lantai, dapat selesai dalam kurun waktu 1 jam lebih. Rentang waktu tersebut tidak akan tercapai jika harus mengakses masing-masing webGUI ip phone.

Persiapan Sangoma

Dengan asumsi module System Admin sudah aktif (bisa dilihat di link ini), tambahkan 3 ekstensi, yang akan digunakan di Sangoma s205, s705, dan softphone di laptop (contoh di sini saya menggunakan MicroSIP), dengan ext 6681, 6682 dan 6683. Jangan lupa mencatat semua macaddress ip phone, dan mapping extensionnya. Hal ini sangat dibutuhkan jika kita sedang setup ip phone dalam jumlah banyak, sehingga kita dapat melakukan tracing perangat ip phone dan ekstensi yang kita sematkan.

Selanjutnya di halaman FreePBX, masuk ke menu Settings -> Endpoint Manager, lalu klik icon option di sebelah kanan layar yang bergambar :

pilih Global Settings. Di bagian External Address isikan hostname server FreePBX (misal dalam contoh di sini demo-es.ofon.biz), dan biarkan setting yang lainnya untuk saat ini, lalu klik Save Global.

Lalu untuk menu Endpoint Manager -> Options -> Brand, pastikan menggunakan template sangoma_default:

Lalu di bagian Extension Mapping klik Add Extension. Di kolom Extension/Name pilih nomer ekstensi, misal, 6681. Lalu karena hendak disematkan ke Sangoma ip phone s705 yang dapat menampung 6 SIP account, pilih urutan account yang hendak digunakan. Misal contoh di sini adalah Account nomer 1:

Berikutnya di kolom Brand/Macaddress, isikan merk dan macaddressnya:

lalu di kolom Template/Model pilih template yang digunakan dan model ip phone:

Terakhir di bagian menu pulldown bawah sendiri, pilih opsi Save and Rebuild Config(s) dan klik Use Selected:

Setting Sangoma s705 ip phone

Login ke web Sangoma s705 ip phone. Default login jika ini instalasi baru biasanya admin/admin. Jika ip phone ini sebelumnya sudah pernah dipakai, dan kita tidak tahu credential-nya, lakukan reset default factory dengan cara menekan * sebanyak 3 kali ( *** ), lalu tekan tombol x pada ip phone selama 10 detik.

Jika sudah berhasil login, masuk ke menu Management -> Auto Provision

di bagian Upgrade Mode pilih radio button HTTP, lalu di bagian Config Server Path isikan url dan port server FreePBX sesuai dengan informasi bagian Endpoint Management:

http://demo-es.ofon.biz:84

Lalu klik SaveSet dan Restart. IP phone akan reboot dengan config dan ekstensi yang diambil dari server FreePBX.

Setting Sangoma s205 ip phone

Lakukan hal yang sama untuk sisi FreePBX di bagian Endpoint Manager. Jadi settingnya sebagai berikut:

Lalu login ke webgui Sangoma s205. Default login biasanya admin/admin. Tapi jika pernah digunakan oleh pihak lain dan kita tidak mengetahui credentialnya, bisa dilakukan reset default factory dengan cara tekan * sebanayak 3 kali ( *** ) lalu tekan tombol x selama 10 detik.

Jika berhasil login, masuk ke menu Management -> Auto Provision lalu di bagian Config Server Path isikan URL config FreePBX seperti di ip phone sebelumnya, contoh:

http://demo-es.ofon.biz:84

Lalu klik SaveSet dan Restart.

Pranala

https://wiki.freepbx.org/display/FPG/System+Ad. min+-+Activation

https://www.microsip.org/

Panggilan Nomor Ekstensi di MSTeams

Diskusi

Masih sehubungan dengan postingan yang lalu mengenai auto attendant, yang kemudian memunculkan pertanyaan selanjutnya;

Bisakah pemanggil menekan nomor ekstensi setelah diterima auto attendant?

Pertanyaan di atas sehubungan dengan transisi dari kebiasan pemanggilan PBX tradisional.

Contoh kasus, seorang klien sebuah kantor pengacara yang sudah terbiasa atau hafal nomor ekstensi pengacaranya, ketika menekan nomor utama, langsung diikuti oleh nomor ekstensi. Kebiasaan tersebut sudah terbentuk dari proses penyesuaian yang sebelumnya terjadi, dan mungkin cukup lama, sehingga alur bisnis berangsur berjalan dengan baik. Jika alur ini kemudian sedikit saja terganggu dengan masalah sepele, misal tiba-tiba nomor ekstensi ditiadakan, diganti dengan pencarian nama karena migrasi ke MSTeams. Akibatnya tidak bisa ditebak. Ada yang kemudian mencoba menyesuaikan dengan cara baru, tapi tidak sedikit yang merasa terganggu jika harus menjalani penyesuaian dengan cara yang berbeda dari sebelumnya. Istilah sekarang: Susah muvon.

“Ah cuma membiasakan perubahan sedikit saja, masa ndak bisa?”

Walaupun cuma terjadi hanya terhadap beberapa pengguna, tapi tetap saja ada akibat yang tidak terduga.

MSTeams mempromosikan cara panggilan dengan pencarian nama pengguna, atau alamat surat elektronik (surel), untuk mempermudah inisiasi komunikasi suara. Tapi kita dapat mengakali supaya bisa tetap menggunakan nomor ekstensi.

Dengan asumsi, layanan PSTN yang tersambung ke MSTeams tipe Direct Routing, caranya seperti berikut:

Panggilan inbound dari PSTN

Untuk yang biasanya melakukan panggilan ke sebuah nomor utama, lalu diterima oleh rekaman auto attendant dan menekan nomor ekstensi tujuan, MSTeams terlebih dahulu mengarahkan ke dial dengan menu. Contoh yang dial menu ditemui ketika menelpon layanan perbankan dan disambut dengan:

“Selamat datang di Bank Fulan. Untuk layanan perbankan, tekan 1. Untuk informasi produk perbankan, tekan 2. Untuk keluhan Layanan Perbankan, tekan 3. Untuk berbicara dengan customer service kami, tekan 0.”

Menu tersebut bisa disetel dengan mengakses Teams Admin Center (TAC) dengan memilih menu Voice di panel kiri, kemudian pilih Auto attendants, dan pilih nama auto attendant yang dimaksud, dari daftar yang ada/pernah dibuat.

Screenshot of dial key options.

Jika pilihan menu di atas dilewati dan hendak langsung menuju ke orang yang dimaksud, MSTeams menyediakan dua pilihan: pencarian berdasarkan nama, atau pencarian berdasarkan nomor ekstensi.

Kok di situ ada 3 pilihan?

Opsi None dipilih bila panggilan langsung ke nomor ekstensi atau pencarian nama seseorang tidak diperbolehkan, misal karena harus melalui operator/resepsionis/sekretaris.

Setelan bawaan atau yang direkomendasikan oleh MSTeams adalah “Dial by name”.

Jika kita memilih Dial by extension, yang selanjutnya perlu ditambahkan adalah nomor ekstensi masing-masing pengguna. Penambahan nomor ekstensi ini dilakukan di portal administrasi Microsoft Office 365, dengan login ke https://portal.office.com sebagai global administrator, lalu pilih aplikasi Admin.

Microsoft 365 Admin - Aplikasi di Google Play
app Admin

Kemudian dari panel sebelah kiri, pilih Users -> Active users

Pilih salah satu nama pengguna yang dimaksud, yang kemudian menampilkan laci menu di layar sebelah kanan. Klik Manage contact information di bawah Phone number, di area Contact information:

isikan: ext=XXXX di kolom Office phone, misal seperti berikut:

Klik Save changes jika sudah selesai.

Perlu diketahui, hasil dari perubahan setelan ini cukup lama. Jadi setelah disimpan, dan mencoba telepon, tapi masih belum bisa terhubung, tunggu sampai maksimal 12 jam terlebih dahulu. Hal ini juga disampaikan di laman dokumentasi Microsoft:

Hal lain yang juga perlu diketahui, nomor ekstensi ini tidak bisa dipanggil secara internal di MSTeams. Jadi nomor tersebut hanya bisa ditekan pada saat penelpon tersambung ke auto attendant.

Untuk dapat mengakomodasi pemanggilan melalui nomor ekstensi, misal dikarenakan masa transisi dari kebiasaan lama ke kebiasaan baru, perlu dilakukan dengan cara lain seperti berikut.

Normalisasi nomor

Yang akan kita coba agar masing-masing pengguna dapat menekan nomor ekstensi selama masa transisi kebiasaan lama ke kebiasaan baru, adalah dengan menormalisasi nomor nomor telepon.

Misal perusahaan mendapatkan alokasi 100 nomor DID untuk 100 pengguna, biasanya nomor akan berurut. Misal dari +622139735300 sampai dengan +622139735399. Dari penomoran tersebut kita dapat membuat ekstensi misal 4 digit dengan rentang 1000 sampai dengan 1099. Perhatikan dua digit terakhir nomor ekstensi akan sama dengan dua digit terakhir nomor DID.

Konfigurasi melalui CLI PowerShell

Yang suka ketak-ketik dan merasa lebih cepat menjalankan konfigurasi dari CLI (Command Line Interface) PowerShell, bisa menjalankan berikut ini.

Pertama, kita buat wadah untuk menyimpan aturan modifikasi nomor DID ke nomor ekstensi melalui PowerShell dengan bantuan modul cmdlet Microsoft-Teams.

New-CsTenantDialPlan -Identity OFFICE-EXT -Description "Default Office Extensions Dialplan"

lalu buat peraturannya:

$NR = New-CsVoiceNormalizationRule -Identity Global/Office-Ext-Call -Description "Extension calling" -Pattern '^10(\d{2})$' -Translation '+6221397353$1' -InMemory

Masukkan peraturan di atas ke wadah bernama OFFICE-EXT yang telah dibuat:

Set-CsTenantDialPlan -Identity "OFFICE-EXT" -NormalizationRules @{Add=$NR}

Terakhir, sematkan wadah yang sudah terisi peraturan tersebut ke pengguna langsung:

Grant-CsTenantDialPlan -Identity "user@domain.tld" -PolicyName OFFICE-EXT

Untuk memeriksa, apakah peraturan tersebut sudah diterapkan ke pengguna, dapat dilakukan dengan tes simulasi menekan, misal ekstensi 1075 seperti berikut:

Get-CsEffectiveTenantDialPlan -Identity "user@domain.tld" | Test-CsEffectiveTenantDialPlan -DialedNumber 1075

Jika sukses, keluarannya akan seperti berikut:

RunspaceId       : b1734b39-aa75-8623-12c4-a1b1e3d28da4
TranslatedNumber : +622139735375
MatchingRule     : Description=Extension calling;Pattern=^10(\d{2})$;Translation=+6221397353$1;Name=OFFICE-Ext;IsInternalExtension=True

Terlihat dari keluaran di atas, ketika pengguna tersebut menekan 1075, akan ditranslasikan ke +622139735375, lalu panggilan diarahkan ke DID tersebut.

Melalui Web TAC

Cara lain menjalankan konfigurasi di atas yaitu melalui web TAC (https://admin.teams.microsoft.com).

Login sebagai global admin, lalu pilih menu Voice dari panel sebelah kiri, dan pilih Dial plans. Dari tabel Dial plans, kita bisa menambahkan atau mengedit dari daftar dial plan yang ada.

Kali ini kita menambahkan dial plan baru dengan klik + Add.

Di bawah Add a name for your dial plan, isikan dengan, misal: Office Default Dialplan (nama ini akan menjadi nama dial plan yang akan diberikan ke pengguna nantinya).

Dan tambahkan di bagian Add a friendly description so you know why it was created dengan keterangan, misal: Dialplan percobaan.

Berikutnya, di bagian Normalization rules, klik Add yang kemudian memunculkan laci menu di sebelah kanan layar.

Name: <isikan, misal:> Office-Ext-Call.

Description: <isikan deskripsi untuk menjelaskan penggunaannya>. Misal, Normalisasi untuk transisi panggilan ke nomor ekstensi.

Di bawahnya lagi ada dua pilihan radio button Basic dan Advanced. Pilih radio button Advanced.

Di bagian bertuliskan The number dialed matches this regular expression isikan dengan regexp : ^10(\d{2})$.

berlanjut ke bawah tulisan Then do this, isikan: +6221397353$1

Untuk memastikan konfigurasi sudah benar, dapat dilakukan tes di bawah Test this rule. Isikan, misal 1075. Jika berhasil, keluarnya menjadi +622139735375.

Jika sudah yakin, klik Save.

Lalu di halaman utama Dial plan, klik Save sekali lagi.

Untuk menambahkan dial plan tersebut ke pengguna, dari menu halaman TAC di panel sebelah kiri, klik Users, lalu pilih nama pengguna yang dimaksud. Di barus nama pengguna, terutama di kolom Policies assigned, klik View policies.

Di halaman pengguna tersebut, di bagian agak ke bawah layar, pilih tab Policies lalu pilih Edit.

Di bagian kanan layar akan muncul laci menu, cari pilihan Dial plan dan pilih Default Office Dialplan (sesuai nama dial plan yang telah kita buat di atas). Lalu klik Apply.

Walaupun ditranslasi ke nomor DID/PSTN pengguna lain di dalam MSTeams tenant yang sama, panggilan yang terjadi tidak akan ke arah PSTN, melainkan terjadi di internal MSTeams.

Dengan OnPremLineURI

Pada saat mengaktifkan EnterpriseVoice di pengguna, salah satu setelan yang digunakan adalah OnPremLineURI untuk menambahkan nomor telepon. Format nomor harus dalam E.164 walaupun hanya sekedar penomoran ekstensi. Jika kita hanya memasukkan nomor ekstensi tanpa prefiks +62 sesuai dengan aturan E.164 untuk kode negara Indonesia, PowerShell tidak akan menampilkan error apa pun. Setelan akan tetap diterima dan disimpan. Tetapi nomor tersebut tidak akan dicari maupun dapat dihubungi.

Misal kita hendak menambahkan nomor ekstensi 1075 ke pengguna, maka formatnya harus +621075. Dari sini kita bisa melakukan normalisasi nomor seperti di atas dengan ekspresi “^(\d{4})$” yang ditranslasi ke “+62$1″:

$NR = New-CsVoiceNormalizationRule -Identity Global/Ofon-Ext-Call -Description "Extension calling" -Pattern '^(\d{4})$' -Translation '+62$1' -InMemory

Agar tetap dapat melakukan panggilan keluar (Offnet), dapat dikombinasikan dengan CsCallingLineIdentity policy yang bisa dibaca di postingan ini.

Migrasi sepenuhnya

Kenapa cara di atas ruwet sekali? Padahal cuma pengen bisa panggilan ke nomor ekstensi?

Sekali lagi, MSTeams mempromosikan dan merekomendasikan panggilan dengan nama atau alamat surel pengguna sebagai identitas utama untuk berkolaborasi dengan sesama pengguna platform MSTeams lainnya. Sebaiknya segera dibuat proses transisi, dengan pelatihan dan pembiasaan cara baru tersebut. Pembiasaan baru ini mau tidak mau harus ditempuh, dan menurut pengalaman, tidak memerlukan waktu lama untuk pengguna dapat menyesuaikan dan mulai terbiasa.

Pranala

Berbagi CallerID untuk pengguna MSTeams Phone System

Latar belakang

Dalam rangka membantu pengguna bertransisi dari teknologi PBX sebelumnya ke MSTeams Phone System, banyak pertanyaan mengenai padanan fitur PBX lama yang bisa didapati di MSTeams Phone System. Salah satunya adalah nomer telepon utama yang bisa digunakan untuk seluruh karyawan, seperti pada umumnya PBX.

Secara konsep, masing-masing pengguna MSTeams Phone System memilki DID/DDI/nomer telepon tersendiri. Tapi akan selalu ada kebutuhan satu DID untuk dipakai bersamaam di perusahaan/organisasi sebagai nomor telepon utama.

Beberapa waktu lalu, callerid bersama yang menggunakan policy CallingLineIdentity Direct Routing masih belum bisa dilakukan dari sisi MSTeams. Agar pengguna dapat memanfaatkan satu callerid/DID/DDI/nomor telepon, masih harus dibantu oleh konfigurasi SBC Direct Routing. Tentu rasanya sangat ganjil, mengingat MSTeams Phone System itu sendiri semacam PBX yang seharusnya ada setelan nomor utama.

Sebelumnya, callerid bersama hanya dapat disetel sebagai Anonymous, atau pilihan lain dapat menggunakan nomer telepon yang diperoleh dari Microsoft (Calling Plan) yang kemudian dijadikan sebagai service number.

Karena Microsoft bertindak sebagai operator telepon, maka tidak ada nomer telepon dengan kode negara Indonesia (+62) yang disediakan, dikarenakan peraturan dari pemerintah Indonesia yang membatasi. Pilihan lainnya, kita dapat mengambil salah satu nomor telepon kode negara Indonesia untuk diport ke Microsoft agar bisa digunakan sebagai service number. Tapi prosesnya cukup panjang, karena harus bertukar surel dengan pihak Microsoft dan operator pemilik nomer telepon Indonesia bersangkutan. Bergh!

Cara lain yang juga digunakan untuk skenario seperti ini adalah call delegate. Tetap saja rasanya masih kurang sreg.

Kabar baiknya, di versi modul powershell MicrosoftTeams 2.3.1, sudah ada cara yang memungkinkan MSTeams Phone System menggunakan nomor telepon dari resource account seperti Auto attendant atau Call queue. Per tulisan ini versi modul powershell MicrosoftTeams malah sudah versi 2.5.1.

Persiapan

Ada beberapa persiapan sebelum kita menambahkan policy CallingLineIdentity.

  • Pastikan ForwardPAI di OnlinePSTNGateway diset ke False. Caranya dengan menjalankan perintah seperti berikut:
Set-CsOnlinePSTNGateway -identity sbc.domain.tld -ForwardPAI $false
  • Jika pengguna merupakan administrator SBC, pastikan SBC Direct Routing tidak mengubah host di SIP header FROM menjadi Anonymous sehubungan dalam memproses P-Asserted-Identity mengikuti RFC5379 dan RFC3325. Tapi jika menggunakan layanan hosted Direct Routing, tidak perlu khawatir mengenai hal ini.
  • Karena dalam contoh di sini menggunakan resource account tipe Auto attendant, buatlah terlebih dahulu resource account tersebut. Caranya dapat mengikuti postingan di sini.
  • Per tanggal tulisan ini, penyetelan callerid ke resource account hanya dapat dilakukan melalui powershell seperti yang tertera di laman dokumentasi Microsoft berikut:

Setelan policy CallingLineIdentity

Masuk ke powershell sebagai global admin:

Connect-MicrosoftTeams

Pastikan versi modul powershell MicrosoftTeams >= 2.3.1

Get-Module -name MicrosoftTeams

contoh keluaran:

Jika masih menggunakan versi lama, perbaharui modul dengan perintah:

Update-Module MicrosoftTeams

Setelah itu pastikan resource account (dalam contoh di sini Auto attendant) sudah disetel dan memiliki nomor telepon yang terpasang. Dapat juga dilihat dari TAC (https://admin.teams.microsoft.com) seperti berikut:

atau bisa juga dari perintah powershell:

Get-CsOnlineApplicationInstance -Identity aadrofon@ofon.id


RunspaceId        : 84cb1d7e-d197-44d4-8c98-2c5ad09f4dea
ObjectId          : 194f4aef-ff92-5f84-ccde-1f3ffdbc153c
TenantId          : 00a2eb1a-39dc-3da1-b492-29c4ac01b6d3
UserPrincipalName : aadrofon@ofon.id
ApplicationId     : ce933385-9390-45d1-9512-c8d228074e07
DisplayName       : AutoAttendant Ofon
PhoneNumber       : tel:+622139735381

Dari keluaran di atas, ambil bagian ObjectId lalu simpan di sebuah variabel, misal, $ObjId

$ObjId = (Get-CsOnlineApplicationInstance -Identity aadrofon@ofon.id).ObjectId

Buat policy CallingLineIdentity baru dengan CallingIDSubstitute disetel ke Resource:

New-CsCallingLineIdentity -Identity "OFON" -CallingIDSubstitute Resource -EnableUserOverride $false -ResourceAccount $ObjId -CompanyName "OFON"

Dari perintah di atas, kita akan mendapatkan policy baru dengan nama “OFON”. Nama policy ini dapat diganti dengan nama lain yang lebih informatis, misal, “NomorUtamaKantor”, dan CompanyName dapat diset sesuai nama perusahaan. Misal menjadi :

New-CsCallingLineIdentity -Identity "NomorUtamaKantor" -CallingIDSubstitute Resource -EnableUserOverride $false -ResourceAccount $ObjId -CompanyName "PT Mekindo Nusantara"

Grant policy ke pengguna

Ada dua cara melakukan grant policy baru tersebut ke masing-masing pengguna:

Melalui PowerShell

Bagi yang suka ketak ketik dan ingin cepat bisa melakukan via PowerShell (contoh nama policy: OFON):

Grant-CsCallingLineIdentity -identity "user@domain.tld" -PolicyName "OFON"

Melalui Teams Admin Center (TAC)

Cara kedua yang lebih enak di mata adalah melalui TAC.

Buka halaman https://admin.teams.microsoft.com dan login sebagai administrator.

Di panel sebelah kiri layar, pilih menu Users. Lalu di tabel yang berisi daftar pengguna dengan lisensi Phone System aktif, pilih nama pengguna yang dimaksud, dan di kolom Policies assigned klik View policies.

Di halaman berikutnya, pilih tab Policies lalu klik Edit di sebelah tulisan Assigned policies:

Setelah klik Edit, di layar sebelah kanan akan muncul semacam laci menu dengan daftar Policies untuk pengguna tersebut. Cari Policy dengan nama Caller ID policy, lalu di menu dropdown, pilih nama policy (dalam contoh di sini: OFON).

Lalu klik Apply.

Lakukan test panggilan, jika setup lancar, nomor telepon yang muncul seharusnya sudah sesuai dengan nomor telepon yang ada di resource account Auto attendant. Jika masih belum bisa, tunggu beberapa saat, karena terkadang platform Microsoft membutuhkan waktu bervariasi antara hitungan menit sampai dengan hitungan jam agar perubahan tersebut berjalan.

SBC Direct Routing onprem dengan POTS

Ada sedikit catatan bagi yang memiliki SBC Direct Routing berlokasi di gedung/kantor pengguna, terutama yang masih tersambung dengan POTS (Plain Old Telephone System). Biasanya berupa kabel analog dengan konektor RJ11. Untuk menggunakan nomor telepon yang sama, tidak harus mengikuti langkah di atas. Selama SBC tidak menyaring nomor telepon pemanggil (OnpremLineURI), secara otomatis berapapun nomor telepon pengguna, akan ditimpa oleh konfigurasi dari CO operator ketika melakukan panggilan keluar.

Apakah OnPremLineURI tetap digunakan?

Tergantung dengan keperluan pengguna itu sendiri, apakah masih memerlukan nomor yang bisa langsung menghubunginya, atau cukup melalui operator/auto attendant?

Biasanya tidak semua pengguna MSTeams memerlukan direct number. Jika demikian, pada saat menjalankan perintah Set-CsUser atai Set-CsPhoneNumberAssignment dapat meninggalkan setting OnPremLIneURI atau PhoneNumber dan PhoneNumberType.

Alih-alih menjalankan perintah seperti berikut:

Set-CsUser -identity "user@domain.tkd" -EnterpriseVoiceEnabled $true -HostedVoicemail $true -OnPremLineURI tel:+6221XXXXXXXX

atau di perintah module cmdlet MicrosoftTeams yang baru:

 Set-CsPhoneNumberAssignment -Identity "user@domain.tld" -PhoneNumber "+6221XXXXXXXX" -PhoneNumberType DirectRouting

administrator dapat mengosongkan OnPremLineURI atau PhoneNumber dan PhoneNumberType:

Set-CsUser -identity "user@domain.tkd" -EnterpriseVoiceEnabled $true -HostedVoicemail $true

atau di perintah module cmdlet MicrosoftTeams yang baru:

Set-CsPhoneNumberAssignment -Identity "user@domain.tld" -EnterpriseVoiceEnabled $True

Menurut saya pribadi, sangat sayang jika MSTeams tidak memiliki direct number sendiri. Rasanya ada yang kurang dan penggunaannya belum maksimal, apalagi jika sedang bekerja dari rumah, maupun saat tugas luar kota. Bukannya terkadang lebih enak jika urusan pekerjaan, di kartu nama terlampir nomor perusahaan yang terpasang di MSTeams, dan tidak harus membagi nomor selular/pribadi? Tapi itu cuma pikiran saya saja sih….

Pranala

Koreksi nomer telepon inbound di MSTeams Phone System

Latar belakang

Saya menemukan sebuah permasalahan yang nampaknya sepele, tapi bakal menjadi besar karena sangat mengganggu user experience panggilan di MSTeams Phone System.

Ketika pengguna menerima panggilan masuk dari nomor selular ke MSTeams Phone System, ada kesalahan format nomor pemanggil sehingga ada sisipan angka 0 setelah kode negara +62.

Ini menyebabkan pengguna akan mengalami kegagalan panggilan ketika melakukan callback dari log panggilan masuk. Sebenarnya jika menekan nomor telepon tujuan langsung di dialpad bisa tersambung, tapi cara seperti ini rasanya agak mengganjal, karena pengguna berharap panggilan callback dengan sekali klik dari log panggilan seharusnya berfungsi.

Problem ini sebenarnya juga bisa diselesaikan dari sisi SBC Direct Routing. Tapi ada kalanya harus diselesaikan di sisi MSTeams Phone System untuk alasan tertentu.

Cara mengatasi

Perhatikan output dari perintah Get-CsOnlinePSTNGateway seperti berikut:

Identity                            : sbc.ofon.biz
InboundTeamsNumberTranslationRules  : {}
InboundPstnNumberTranslationRules   : {}
OutboundTeamsNumberTranslationRules : {}
OutboundPstnNumberTranslationRules  : {}
Fqdn                                : sbc.ofon.biz
...

Kita akan memanfaatkan InboundPstnNumberTranslationRules dan InboundTeamsNumberTranslationRules.

Pertama buat terlebih dahulu translasinya, misal dengan menamai Remove+620 (karena memang hendak menghilangkan prefix+620 dan diganti dengan +62) seperti berikut:

New-CsTeamsTranslationRule -Identity 'Remove+620' -Pattern '^\+620(\d+)$' -Translation '+62$1'

Perhatikan regex di atas, yang menyatakan apabila ada nomor telepon dengan awalan +620 lalu diikuti satu atau lebih digit, maka prefix +620 dihilangkan dan diganti dengan +62.

Lalu tambahkan ke konfigurasi PSTNGateway seperti berikut:

Set-CsOnlinePSTNGateway -Identity sbc.ofon.biz -InboundPstnNumberTranslationRules Remove+620

Set-CsOnlinePSTNGateway -Identity sbc.ofon.biz -InboundTeamsNumberTranslationRules Remove+620

Sehingga ketika dilihat kembali konfigurasinya jadi seperti berikut:

Identity                            : sbc.ofon.biz
InboundTeamsNumberTranslationRules  : {Remove+620}
InboundPstnNumberTranslationRules   : {Remove+620}
OutboundTeamsNumberTranslationRules : {}
OutboundPstnNumberTranslationRules  : {}
Fqdn                                : sbc.ofon.biz
...                     : None

Efek dari perintah ini bisa bervariasi antara langsung hingga beberapa jam (iya, ngehe memang). Setelah beberapa saat, test call kembali harusnya nomor telepon inbound sudah dikoreksi.

Pranala luar

Setup Auto Attendant di Microsoft Teams Phone System

Salah satu yang sering ditanyakan ketika membahas Microsoft Teams Phone System adalah auto attendant. Pada dasarnya Microsoft Teams Phone System (selanjutnya saya sebut MSTeams Phone System) adalah sebuah Cloud PBX / Hosted PBX dengan merek Microsoft, yang diaktifkan dengan pembelian lisensi Phone System /Enterprise Voice (Untuk produk Office365) atau Business Voice (Microsoft365).

Karena juga merupakan PBX, maka salah satu fitur yang didapat adalah auto attendant. Sebelum beranjak untuk melakukan setup auto attendant, tenant Microsoft harus terlebih dahulu mengaktifkan lisensi tambahan yaitu Phone System – Virtual User untuk dapat mengaktifkan resource accounts. Lisensi ini gratis. Dalam contoh kasus saya, yang beli Office 365 E1 + Phone System, mendapatkan 25 lisensi gratis Phone System – Virtual User.

Untuk memperoleh lisensi ini, masuk ke portal portal admin tenant Microsoft, lalu pilih menu Billing -> Purchase services. Di bagian kotak pencarian, ketik Phone System Virtual User yang akan memunculkan produk tersebut:

Karena sudah mengambil jatah saya, maka akan tertulis YOU OWN THIS.

Jika belum, silahkan untuk diklaim.

Resource accounts

Sebelum melakukan setup Resource accounts, saya menyiapkan rekaman terlebih dahulu untuk auto attendant. Rekaman dapat dibuat dengan perangkat seperti gawai untuk nanti diupload ke MSTeams admin center di https://admin.teams.microsoft.com. Format rekaman dapat berupa .wav maupun .mp3.

Berikutnya, login ke Teams Admin Center di atas dengan akses global admin atau teams admin. Lalu masuk ke menu Org-wide settings -> Resource accounts -> + Add. Di bagian Add resource account isikan parameter sebagai berikut:

Display name: AutoAttendant Ofon

Username: aadrofon, lalu pilih domain dari dropdown menu, misal ofon.id.

Resource account type: Auto attendant (dari menu dropdown)

Klik Save.

Login ke Microsoft 365 admin center (https://portal.office.com) dan masuk ke menu User -> Active users lalu sematkan lisensi Microsoft 365 Phone System – Virtual User ke resource account aadrofon@ofon.id yang telah kita buat sebelumnya.

lalu klik Save changes.

Sematkan nomor telepon/DID dari Direct Routing melalui PowerShell dengan perintah :

Set-CsOnlineApplicationInstance -Identity aadrofon@ofon.id -OnpremPhoneNumber +622139735381

Jika berhasil, akan muncul informasi seperti berikut:

RunspaceId        : 821e53ce-8ff1-44d1-b872-f538d4bb3e99
ObjectId          : 294d4ae3-ff81-4f64-bbde-8f8fedbc374b
TenantId          : 00a4eb42-49dc-4df1-b492-28b4ac01b6d3
UserPrincipalName : aadrofon@ofon.id
ApplicationId     : ce933385-9390-45d1-9512-c8d228074e07
DisplayName       : AutoAttendant Ofon
PhoneNumber       : tel:+622139735381

Menyusun flow Auto Attendant

Login kembali ke Teams Admin Center di https://admin.teams.microsoft.com, lalu masuk ke menu Voice -> Auto attendants -> + Add. Isikan parameter sebagai berikut:

di baris atas dengan tulisan Add a name for your auto attendant, isikan nama untuk auto attendant ini, misal: AutoAttendant OFON.

Time zone diset untuk time zone Indonesia (UTC +7). Lalu klik Next.

di halaman Call flow, bagian First play a greeting message, pilih radio button Play an audio file, lalu unggah hasil rekaman untuk sambutan auto attendant.

Di bagian Then route the call pilih Play menu option untuk memberikan pemberitahuan opsi tujuan. MSTeams Phone System menyediakan dari 0 s/d 9 untuk pilihan menu panggilan. Dan biasanya angka 0 untuk panggilan ke operator.

Unggah file rekaman di bagian Play an audio file, dan di bagian Set menu options masukkan kontak untuk masing-masing dial key (dari 0 s/d 9).

dalam contoh di atas, saya hanya memasukkan Dial key 0 saja untuk disambungkan ke id saya langsung (di bagian Destination).

Di bagian Directory search, biarkan tetap Dial by name.

Di halaman Set business hours, kita dapat menentukan jam buka kantor. Misal dari Senin sampai dengan Jumat buka dari jam 8 pagi s/d jam 5 sore. Bahka kita bisa melakukan kustom dengan menu +Add new time. Sementara untuk kali ini dilewatkan saja.

dibagian Set up after hours call flow digunakan jika kita menentukan penerimaan panggilan di luar jam kantor. Klik Next.

Halaman Holiday call settings digunakan jika kita telah mengetahui hari libu untuk melakukan rekaman penerimaan panggilan di waktu-waktu tersebut. Untuk kali ini bisa dilewatkan saja, lalu klik Next.

Di halaman Find People klik Next.

Di halaman Resource accounts klik + Add, lalu pilih id AutoAttendant Ofon yang resource accountnya telah kita buat sebelumnya.

Klik Submit.

Setelah selesai melakukan konfigurasi, di halaman Auto attendants muncul daftar auto attendant yang baru saja kita buat seperti berikut:

Lakukan test panggilan ke nomer DID auto attendant tersebut.

Lakukan beberapa modifikasi yang belum dicoba di contoh ini untuk mendapatkan flow auto attendant yang benar-benar sesuai dengan kebutuhan organisasi.

Jika resource account tidak muncul saat pembuatan alur Auto attendant

Ada beberapa kejadian, account resource tidak mau muncul ketika ditambahkan ke alur pembuatan/penyusunan auto attendant seperti di atas, padahal ketika di lihat dari menu Org-wide settings -> Resource accounts, resource account yang dimaksud muncul di daftar tersebut.

Jika hal ini terjadi, ada cara lain yang bisa ditempuh adalah dengan tidak membuat account resource terlebih dahulu di awal, melainkan langsung menyusun alur auto attendant dari menu Voice -> Auto attendant langsung. Di langkah terakhir ketika hendak menambahkan resource account, klik +Add, lalu di laci menu sebelah kanan layar isikan nama resource account di kolom Search by display or username (tentu saja jika dilakukan search, akun ini belum ada), yang akan memunculkan opsi + Add resource account seperti yang tampak berikut ini:

Klik di bagian + Add resource account, lalu ikuti langkah pembuatan resource account seperti biasa.

Pranala luar

[tips] Random DID untuk outbound call di FusionPBX/FreeSWITCH

Latar belakangnya adalah pertanyaan apakah FusionPBX/FreeSWITCH dapat melakukan random DID ketika melakukan outbound call? Jawabnya bisa. Tapi saat ini syaratnya DID harus urut, dan belum nemu cara random DID dengan nomer yang berpencar. Tips berikut ini didapat dari rekan kerja saya, mas Irfan Rifai.

Misal dalam contoh kita hendak merandom nomer DID +622430000060 s/d +622430000069 (10 DID nomer daerah Semarang). Maka dialplannya akan seperti berikut:

<action application="set" data="random_cid=${expr(randomize(&x);ceil(random(0,9,&x)))}"/>
		<action application="set" data="effective_caller_id_number=+62213000006${random_cid}"/>

Dalan dialplan tersebut kita mengambil satu digit terakhir (jika 100 DID, maka ambil 2 digit terakhir, jadi sesuaikan saja dengan jumlah digit berurutannya), yang memiliki rentang 0 s/d 9.

Lalu kita buat variabel random_cid dengan nilai hasil fungsi random dari 0 s/d 9 yang dinyatakan dengan random(0,9,&x). Kemudian ekstrapolasi variabel random_cid di bagian belakang dari effective_caller_id_number.

Pengumuman Dukungan MSTeams Direct Routing SBA untuk IP Phone

Jadi beberapa waktu lalu ada kebutuhan untuk SBC Direct Routing yang mendukung SBA (Survivable Branch Appliance). Hanya saja dokumentasi per tanggal tersebut masih mengatakan bahwa Teams client yang didukung baru MS Windows dan MacOS client. Padahal di remote site tersebut mengharapkan adanya pesawat telepon desktop yang dapat memanfaatkan SBA.

dan ternyata baru-baru ini ada pengumuman dari Microsoft mengenai dukungan SBA ke perangkat IP phone yang bisa disimak di tautan berikut:

https://techcommunity.microsoft.com/t5/microsoft-teams-blog/what-s-new-in-microsoft-teams-may-2021/ba-p/2391927

Walaupun pengumuman perangkat yang mendukung fitur baru ini belum ada, dalam waktu 1 atau 2 bulan ke depan diharapkan akan ada rilis firmware IP phone untuk fitur SBA ini. Jadi bersiap saja.

RibbonCommunications SWelite SBA

Produk yang sering banget berkeliaran di kantor salah sekiannya brand RibbonCommunications (atau dikenal juga Sonus). Kebetulan di produksi juga ada SWe (SoftWare edition) SBC carrier class untuk melayani hosted Direct Routing. Selain edisi besar, ada juga edisi enterprise versi virtual juga yang disebut SWelite, yang juga dapat ditambahkan fitur SBA

yang dapat dibaca lebih lanjut di laman:

https://ribboncommunications.com/products/service-provider-products/cloud-and-edge/session-border-controllers/session-border-controllers-edge-virtual-and-cloud

pemilihan penggunaan software/virtual SBC ini sebenarnya tergantung jenis sambungan telepon yang ada di situs pengguna. Kebanyaka pengguna yang membutuhkan SBA ini adalah pelanggan yang berlokasi di daerah dengan layanan internet minimal. Lokasi yang cukup jauh dari perkotaan juga menyebabkan layanan internet yang bagus menjadi mahal sekali, sehingga untuk menekan biaya, jaringan internet yang digunakan pun dengan harga yang masuk akal bagi pengguna. Sehingga kemungkinan pengguna berlangganan SIP trunk ke penyelenggara layanan di lokasi sangat kecil kemungkinannya. Yang paling sering terjadi, sambungan telepon berupa jaringan analog dengan konektor RJ11. Jika demikian, appliance perangkat keras dengan port FXO atau ISDN lebih bermanfaat, walaupun untuk versi virtual juga dimungkinkan dengan tambahan perangkat media gateway. Tapi jadi dua kali kerja kan?

AudioCodes Virtual DR-SBA

Sehubungan dengan fitur SBA di atas, baru-baru ini AudioCodes juga merilis SBA versi virtual yang dapat dideploy di VMware dan Hyper-V, sehingga tidak harus beli appliance perangat keras. Di laman AudiCodes yang bisa diakses di tautan:

https://www.audiocodes.com/solutions-products/products/products-for-microsoft-365/direct-routing-survivable-branch-appliances

dapat dilihat tabel perbandingan untuk appliance perangkat keras dengan versi virtualnya:

Semua produk SBA AudioCodes dapat dilihat sebagai berikut :

Jadi bagi pengguna yang sudah memiliki investasi virtualisasi server di lokasi, dapat memanfaatkan produk ini untuk kemudahan deployment, dan untuk menghindari kunjungan ke datacenter memasang perangkat di situasi pandemi yang angka penularannya melonjak sampai dengan 15000 kasus lebih per-hari seperti sekarang.

Pranala luar

Membatasi panggilan pengguna MSTeams Direct Routing ke kode area tertentu

Latar belakang

Ada permintaan dari sebuah perusahaan yang sudah menggunakan MSTeams Direct Routing untuk membatasi panggilan pengguna MSTeams Phone System di kantor cabang Lampung supaya hanya bisa melakukan panggilan ke seluruh kode area Lampung saja (yang menurut wikipedia, ada 9 kode area: 0721 s/d 0729), dan tidak memperbolehkan panggilan ke nomer selular.

Cara konfigurasi

Sebenarnya ada banyak cara yang dapat dilakukan. Jika ngobrol sama rekan-rekan kerja, ada yang suka menggunakan dialplan, ada juga yang lebih nyaman melakukan di level VoiceRoute. Tapi kali ini saya akan menggunakan PSTNUsages. Jadi cara apa pun ndak masalah yang penting tujuan utama tercapai, yaitu membatasi panggilan hanya ke seluruh kode area wilayah Lampung.

Langkah awal adalah membuat kompartemen PSTNUsage untuk menampung semua OnlineVoiceRoute untuk wilayah Lampung (semua perintah dijalankan via powershell:

PS> Set-CsOnlinePstnUsage -Identity Global -Usage @{Add="Lokal_Lampung"}

Setelah kompartemen dibuat, berikutnya adalah menentukan number pattern melalui OnlineVoiceRoute:

PS> CsOnlineVoiceRoute -Identity "Lokal_Lampung072X" -NumberPattern "^072[1-9](\d{5,})$" -OnlinePstnGatewayList sbc.directrouting.tld -OnlinePstnUsages Lokal_Lampung

PS> CsOnlineVoiceRoute -Identity "Lokal_Lampung+62" -NumberPattern "^\+6272[1-9](\d{5,})$" -OnlinePstnGatewayList sbc.directrouting.tld -OnlinePstnUsages Lokal_Lampung

Saya membuat dua pattern yang satu berawalan 0 dan satunya berawalan +62. Biasanya, pengguna yang melakukan panggilan dengan menekan numpad ke kode area, akan menggunakan awalan 0, sedangkan untuk panggilan dari phonebook, call history, dst, kadang ada awalan +62.

Setelah kedua VoiceRoute di atas tersimpan dalam satu PSTNUsage Lokal_Lampung, berikutnya kita buat VoiceRoutingPolicy seperti berikut:

PS> New-CsOnlineVoiceRoutingPolicy -Identity "Lokal_Lampung" -OnlinePstnUsages Lokal_Lampung

Jika kita memiliki lebih dari satu PSTNUsage bisa ditambahkan juga di baris atas dengan pemisah koma. Misal saya sudah pernah membuat PSTNUsage untuk panggilan emergency, dan saya beri nama Emergency, maka bisa ditambahkan sebagai berikut:

PS> New-CsOnlineVoiceRoutingPolicy -Identity "Lokal_Lampung" -OnlinePstnUsages Lokal_Lampung, Emergency

Jika tidak ada error yang muncul, maka sematkan policy dengan nama (kebetulan sama) “Lokal_Lampung” di atas ke pengguna, misal seperti berikut:

PS> Grant-CsOnlineVoiceRoutingPolicy -Identity "user@directrouting.tld" -PolicyName Lokal_Lampung

Selamat mencoba.

Pranala luar

  • https://docs.microsoft.com/en-us/powershell/module/skype/new-csonlinevoiceroutingpolicy
  • https://docs.microsoft.com/en-us/powershell/module/skype/set-csonlinepstnusage

Microsoft Teams Chat Bubbles

Jika mengikuti Roadmap Microsoft, baru-baru ini ada pengumuman di Roadmap ID 65948 yang bakal dirollout per akhir Juli 2021 ini, yaitu fitur chat bubbles ketika sedang konferensi video. Selama ini jika kita konferensi video di MSTeams, lalu ingin menambahkan informasi di dalam diskusi (misal tautan/pranala, atau mengkoreksi informasi yang disampaikan pembicara, dan lain sebagainya), peserta harus repot-repot membuka jendela chat terlebih dahulu untuk mengetik maupun membaca percakapan. Rencananya dengan chat bubbles ini, apa yang kita ketik di chat ketika orang lain sedang bicara akan muncul sebagai bubbles di jendela video wajah kita dari perspektif orang lain, yang kira-kira bakal seperti ini:

Chat bubbles

Jangan sampai dibuat ngomentarin orang lain yang ada di dalam pertemuan tersebut ya? Baik-baik jaga chat nya atau bakal malu keceplosan dilihat orang banyak. Lebih sial lagi jika ada yang sempat membuat tangkapan layar.

Fitur ini katanya bisa diaktifkan dengan menu elpisis di kanan atas, lalu ada pilihan Don’t show chat bubbles

Chat bubbles

ya kira-kira tujuannya untuk menghindarkan kejadian memalukan seperti yang dibahas di atas, jadi sebaiknya fitur tersebut dimatikan sama sekali.

Saya belum tau pasti seberapa membantunya fitur ini di pertemuan-pertemuan selanjutnya. Bisa jadi cukup membantu, atau bahkan bisa jadi menyebalkan, apalagi kalo berhadapan dengan netijen +62 wkwkwkwkwkw….

Calling Policy Busy on Busy (Busy Options)

Saat kita tengah melakukan panggilan MSTeams atau sedang di tengah pertemuan daring dengan MSTeams, kadang masih bisa menerima panggilan masuk. Dan ternyata di beberapa negara/budaya, hal ini termasuk tidak sopan. Jika kebetulan sedang bekerja sama dengan orang lain yang memiliki kebudayaan tersebut, alangkah baiknya kita mengatur panggilan masuk ditengah sedang menerima panggilan atau sedang tengah konferensi daring.

Busy on Busy ini dapat diaktifkan melalui web GUI portal MSTeams, dan juga bisa dilakukan melalui perintah powershell Set-CSTeamsCallingPolicy dengan opsi:

  • Enabled – yang akan langsung menolak panggilan jika ada panggillan kedua masuk ditengah kita sedang menerima panggilan lain atau sedang dalam pertemuan daring.
  • Unanswered – yang dikombinasikan dengan pengaturan berikutnya dengan mengalikan panggilan ke voicemail, atau ke pengguna lain sebagai perwakilan kita,
  • Disabled – ini adalah setting default.

Untuk setting dari TAC (Teams Admin Console), dapat melalui menu Voice -> Calling policies -> Global (Org-wide default).

Tautan: