Microsoft Teams Direct Routing (Tulisan 1)

Kali ini saya menambahkan kategori dalam blog saya yang khusus membahas Microsoft Teams Direct Routing. Pembahasan ini akan terbagi menjadi (rencananya sih) dua. Mungkin bisa lebih, karena memang agak panjang ceritanya. Berikut adalah konteks tentang pembahasan Microsoft Teams.

Latar Belakang

Salah satu bundling Office 365 untuk kebutuhan telekomunikasi suara selama ini dilakukan melalui Skype for Business. Di kantor tempat saya bekerja dulu, kebetulan memiliki anak perusahaan yang berkecimpung di licensing Microsoft (Azzure, O365, dst). Waktu itu (2016 – 2017) saya sempat menggunakan Skype for Business Online. Saya tidak paham semua licensing Microsoft jadi saya tidak tau saya menggunakan yang tipe apa. Tapi setahu saya icon Skype nya yang warna putih seperti ini:

alih-alih yang berlatar belakang biru dengan hurup S putih.

Waktu itu untuk tersambung ke PSTN, dibutuhkan Cloud Connector. Untuk keperluan Cloud Connector ini, jika servernya install sendiri memerlukan 4 node server (bisa VM, bisa baremetal) dengan resource dan kapasitas yang besar sekali. Saya lupa pastinya berapa, tapi cukup besar untuk hitungan resource server pada saat itu (2016). Dan rasanya ndak perlu juga diingat-ingat karena saya tidak tertarik memasangnya. Opsi lain adalah dengan membeli appliance (waktu itu ditawari dari AudioCode) dengan harga mencapai ratusan juta rupiah, sekali lagi saya lupa pastinya berapa tapi mendekati IDR 200 juta. Dan geblegnya, Cloud Connector tersebut hanya bisa satu realm. Tentu saja terlalu overkill untuk perusahaan yang tidak sekelas BUMN atau swasta yang besar.

Lalu pada tanggal 2 November 2016, Microsoft mengumumkan produk Microsoft Teams (selanjutnya bakal saya sebut sebagai MSTeams saja). MSTeams direncanakan akan menggantikan Skype secara keseluruhan pada tanggal 31 Juli 2021.

Apa kelebihan MSTeams

Pernah dengar buzzword Unified Communication? Ceritanya semua kanal komunikasi dikonsolidasikan untuk kemudahan dalam bekerja. Saya pernah baca di buku Cisco lama, menurut mereka (saat itu) Unified Communication itu adalah mengabstraksi *halah* link telekomunikasi seperti POTS, TDM, SIP, H323, fax, dan seterusnya. Mungkin….ini mungkin lhoo.. ini yang disebut UC 1.0. Awal-awal belajar VoIP memang saya sering menggabungkan beberapa protokol sambungan telepon seperti di atas.

Lalu belakangan muncul yang namanya konsolidasi komunikasi dengan menggabungkan email, chat, fax, dan telekomunikasi suara menjadi satu platform. Kayaknya sih ini yang namanya UC 2.0.

Lalu sekarang UC 3.0. Saya masih baca-baca lebih jauh tentang definisi terakhir ini tapi sependek yang saya pahami, UC 3.0 ini buzzwordnya menggabungkan 4 hal utama yaitu Customer Experience (CX), User Experience (UX), Teams Experience (TX), dan Business Experience (BX). Ada dua pemain yang paling keliatan saat penulisan ini yaitu Slack dan MSTeams. Keduanya menyediakan layanan Freemium. Gratis sampai dengan penggunaan fitur tertentu dan berbayar ketika mencapai fitur lainnya. Google Chat pun akhir-akhir ini juga tampaknya mulai menyusul dengan menambahkan beberapa hal yang agak berbeda, seperti threaded chat, sama seperti MSTeams channel, dan sudah bisa paste foto di chat langsung sih, ndak seperti sebelumnya.

Kembali ke MSTeams. Salah satu kelebihan yang sesuai dengan bidang saya adalah kemampuannya tersambung ke PSTN, yang memungkinkan SBC melayani lebih dari satu realm.

MSTeams menyediakan dua cara untuk tersambung ke PSTN. Yang pertama adalah Calling Plan. Calling Plan ini menjadikan Microsoft sebagai operator/penyedia layanan telepon, tapi hanya di beberapa negara yaitu (per tanggal tulisan ini):

  • Belgium
  • Canada
  • France
  • Germany
  • Ireland
  • Puerto Rico
  • Netherlands
  • Spain
  • United Kingdom (U.K.)
  • United States (U.S.)

Sebenarnya ada dua lagi yatu Jepang dan Australia. Tapi nomer Jepang dan Australia hanya bisa digunakan di dalam negara masing-masing sehingga ada perlakuan khusus.

Jadi pada dasarnya kita bisa menggunakan nomer dari daftar negara di atas (kecuali tentu saja Australia dan Jepang). Lalu membeli talk time nya dengan list harga ada di sini.

Kelebihannya adalah, kita tidak perlu membeli SBC atau berlangganan cloud SBC untuk tersambung ke PSTN, karena semua sudah ditangani oleh Microsoft. Kekurangannya? Khususnya bagi orang Indonesia, tidak ada nomer dengan kepala +62.

Cara kedua untuk tersambung ke PSTN adalah dengan fitur Direct Routing. Cara ini untuk mengakomodasi pengguna yang membutuhkan nomer di luar list negara di atas. Kalau istilah bakulnya, BYOC, Bring Your Own Carrier. Nah, cara ini membutuhkan SBC. SBC nya sendiri bisa dengan dua cara, on premise atau hosted SBC. On premise artinya, perangkat SBC berada di lokasi pengguna, dan digunakan hanya oleh pengguna (CAPEX). Sedangkan hosted SBC, perangkat disediakan operator. Perawatan, pemeliharaan, dan operasi dilakukan oleh operator (OPEX), walhasil SBC dapat digunakan rame-rame oleh banyak pengguna dari realm/domain yang berbeda. Hal lain yang perlu diketahui adalah, untuk on premise SBC diperlukan:

  • CAPEX untuk pembelian perangkat SBC.
  • Satu license Phone System untuk sambugan ke cloud MSTeams.
  • SSL certificate
  • Sambuang telepon yang hendak digunakan di site SBC.

Ke-4 hal pertama di atas tidak diperlukan ketika menggunakan layanan hosted SBC.

Baik layanan Calling Plan maupun Direct Routing, masing-masing membutuhkan license tambahan yang namanya license Phone System dari Microsoft. Pada awal saya ngoprek, baru ada 2 Office 365 yang bisa ditambahkan license, yaitu E1 dan E3. Sedangkan jika membeli E5, otomatis sudah mendapatkan license Phone System.

Kabar terakhir, di beberapa produk SKU sudah bisa dilakukan license Phone System. Berita lengkapnya bisa dibaca di link ini. Dan perlu di ketahui, jika ingin Audio Conference yang bisa dihost di cloud MSTeams diperlukan license yang berbeda lagi. Sebaiknya dibaca baik-baik kebutuhannya atau bisa berkonsultasi dengan beberapa rekanan Microsoft di Indonesia seperti VibiCloud, Asaba, Master System, dst.

Selama beberapa bulan terakhir, saya terlibat deployment hosted SBC yang dilakukan oleh Ofon. Dalam pembahasan teknis nanti, mungkin saya tidak akan membahas untuk setting hosted SBC, tapi selama bermain dengan MSTeams Direct Routing, saya sempat mendapat penjaman SBC appliance Ribbon/Sonus SBC1000 dari Svarakom dan AudioCodes Mediant800 dari Tecnomic. Kalau yang dua ini kapan-kapan saya bisa share.

Koneksi Ke MSTeams Phone System

Sebenarnya sambungan SBC ke MSTeams Phone System cloud hanya menggunakan SIPS trunk. Sesimple itu. Hanya saja Microsoft melakukan sertifikasi merk SBC yang bisa tersambung ke cloudnya. List SBC tersebut (per tanggal tulisan ini) adalah

  • AudioCodes
  • Ribbon Communications
  • ThinkTel
  • Oracle
  • TE-SYSTEMS
  • Metaswitch

dan sepertinya akan terus bertambah. Sebenarnya bisa saja sih menggunakan Asterisk, Kamailio ataupun FreeSWITCH. Tapi jika suatu saat ada kendala, tidak bisa open ticket ke Microsoft karena jika mereka tau SBC bukan Microsoft Certified, konon akan diblacklist. Cuma saya ndak yakin juga sejauh apa blacklistnya, tapi sebaiknya yang belum Microsoft certified cukup buat test atau PoC saja, jangan coba-coba dikomersilkan jika tidak ingin pelangguna lari ke SI lain karena diblacklist.

Detail produk yang dapat melakukan MSTeams Direct Routing masing-masing merk bisa dilihat update-nya di sini. Di Indonesia, dua merk yang paling banyak digunakan adalah Ribbon Communication (ini dulunya Sonus) dan AudioCodes.

Untuk SSL, juga hanya boleh dari yang direkomendasikan oleh Microsoft. Per tulisan ini yang direkomendasikan adalah:

  • AffirmTrust
  • AddTrust External CA Root
  • Baltimore CyberTrust Root
  • Buypass
  • Cybertrust
  • Class 3 Public Primary Certification Authority
  • Comodo Secure Root CA
  • Deutsche Telekom
  • DigiCert Global Root CA
  • DigiCert High Assurance EV Root CA
  • Entrust
  • GlobalSign
  • Go Daddy
  • GeoTrust
  • Verisign, Inc.
  • SSL.com
  • Starfield
  • Symantec Enterprise Mobile Root for Microsoft
  • SwissSign
  • Thawte Timestamping CA
  • Trustwave

Pastikan selalu update daftarnya di sini. Dan pastikan mengikuti berita perusahaan penyedia sertifikat tersebut. Terakhir saya menggunakan Comodo SSL, setelah dibeli oleh perusahaan Sectigo yang notabene tidak masuk dalam list di atas, malah tidak bisa tersambung ke cloud MSTeams. Padahal sudah tertulis di situ ada Comodo SSL. Sekarang saya menggunakan DigiCert.

Untuk topologi MSTeams Direct Routing sendiri seperti berikut:

MSTeams Phone System sendiri bisa dianggap sebagai PBX, dan kebetulan dulu namanya CloudPBX juga. Tidak jauh beda topologi layanan hosted PBX di Ofon (jika butuh perbandingan apple to apple) :

Jadi semua user MSTeams bisa dianggap sebagai ekstensi dari Phone System. Tapi tidak semua fitur hosted PBX bisa dilakukan di MSTeams, seperti misalnya jika PBX (hosted maupun on premise) ada fitur global callerid, yaitu satu nomer telepon yang digunakan oleh banyak ekstensi sebagai identitas untuk melakukan panggilan. Di MSTeams Phone System-nya sendiri hanya bisa dilakukan di layanan Calling Plan, tidak bisa dilakukan di Direct Routing. Pilihan untuk global callerid di Direct Routing hanya Anonymous, nomer telepon tidak ditampilkan. Untuk beberapa operator, hal ini tidak diperbolehkan. Oleh karena itu perlu dibantu di sisi SBC. Hal lain yang ada di PBX tapi tidak ada di MSTeams Phone System adalah panggilan nomer ekstensi, karena id user sudah berupa email. Sebenarnya ini adalah bentuk identitas di masa depan (entah kapan). Kelak (mungkin) nomer telpon sudah tidak berlaku. Dalam kartu nama hanya ada alamat email yang berlaku menjadi kontak email, messaging, chat, dan juga telepon. Tapi kayaknya masih lama banget karena dengan format demikian, pengguna akan rentan terhadap robocalling ataupun spam. Jadi nomer telpon sepertinya akan menjadi pilihan identitas dalam jangka waktu lama.

Untuk IVR, juga bisa dilakukan di MSTeams Phone System, dan license untuk instance IVR ini pun digratiskan selama sudah membeli license Phone System. Namanya Phone System – Virtual User (PSVU). License ini tidak sama dengan license Phone System jadi tidak akan bisa jika disandingkan dengan Office 365 E1/E3 untuk menggantikan Phone System. Lincese ini benar-benar untuk AutoAttendant dan Queue.

Sebenarnya apa yang membedakan client MSTeams dengan Phone System dengan yang tanpa Phone System? Dialpad. Di MSTeams yang ada license Phone System akan muncul dialpad sehingga pengguna dapat melakukan panggilan ke mana pun.

Sedangkan yang tanpa license Phone System hanya dapat melakukan panggila ke sesama pengguna MSTeams, dan dapat melakukan panggilan bereda realm/domain.

(Bersambung ke Tulisan 2)

Links:

Replikasi usrloc Kamailio Dengan dmq_usrloc

Salah satu redundansi SIP yang digunakan di kantor adalah dengan replikasi usrloc antar dua SIP registrar di dua datacenter yang berbeda. Lalu hostname akan diresolve ke kedua server tersebut, sehingga jika pada saat ada panggilan masuk dari Offnet ke pelanggan, dan kebetulan salah satu server SIP registrar down beberapa detik sebelum panggilan diteruskan, di SIP server lain masih memiliki AoR/usrloc user yang dituju dan panggilan tetap bisa diteruskan. (Untuk redundansi outbound call tidak akan di bahas di tulisan ini).

Untuk mereplikasi AoR/usrloc saya menggunakan modul dmq

Berikut cara install dan konfigurasi dmq untuk dua SIP server yang saya beri nama sip01.domain.tld (10.0.0.1) dan sip02.domain.tld (10.0.0.2). Skenario berikut ini juga bisa dijalankan untuk dua datacenter yang berbeda, sehingga dmq melakukan sinkronisasi via internet.

sip01.domain.tld (10.0.0.1)

Dengan asumsi server yang dijalankan adalah Centos versi 7 dan ini adalah SIP server untuk Kazoo platform yang sudah disetup dan berjalan, install dmq:

yum install -y kamailio-dmq_userloc.x86_64

Karena ini adalah salah satu komponen dari Kazoo platform, edit file /etc/kazoo/kamailio/default.cfg, dan tambahkan baris berikut:

...
...
...
####### DMQ & dmq_userloc #######
loadmodule "dmq.so"
loadmodule "dmq_usrloc.so"
modparam("dmq", "server_address", "sip:10.0.0.1:5060")
modparam("dmq", "notification_address", "sip:10.0.0.2:5060")
modparam("dmq", "num_workers", 8)
modparam("dmq", "ping_interval", 90)
modparam("dmq_usrloc", "enable", 1)
modparam("dmq_usrloc", "sync", 0)
...
...
...

Perhatikan baris yang ada server_address dan notification_address. Untuk server pertama, server_address diisikan ip address dari server sip01.domain.tld, dan notification_address diisikan sip address sip02.domain.tld.

Lalu masih di dalam file yang sama, tapi di dalam block route, tambahkan baris:

...
...
...
# routing dmq 
    if(is_method("KDMQ"))
        {
                dmq_handle_message();
        }
...
...
...

Save dan restart service kamailio.

sip02.domain.tld (10.0.0.1)

Pada dasarnya kita melakukan hal yang sama dengan sip server pertama. Install module dmq di server sip server kedua.

yum install -y kamailio-dmq_userloc.x86_64

Lalu konfig file /etc/kazoo/kamailio/default.cfg dan tambahkan baris berikut:

...
...
...
####### DMQ & dmq_userloc #######
loadmodule "dmq.so"
loadmodule "dmq_usrloc.so"
modparam("dmq", "server_address", "sip:10.0.0.2:5060")
modparam("dmq", "notification_address", "sip:10.0.0.1:5060")
modparam("dmq", "num_workers", 8)
modparam("dmq", "ping_interval", 90)
modparam("dmq_usrloc", "enable", 1)
modparam("dmq_usrloc", "sync", 0)
...
...
...

Perhatikan di baris yang ada server_address dan notification_address. IP address diset berbalik dengan konfigurasi terhadap sip server pertama. Selanjutnya untuk blok route sama:

...
...
...
# routing dmq 
    if(is_method("KDMQ"))
        {
                dmq_handle_message();
        }
...
...
...

Save file konfigurasi dan reload Kamailio.

Test Hasil

Untuk melihat apakah jumlah pengguna yang teregistrasi di kedua sip server sudah sama (harusnya sama, jika ada perbedaan mungkin sedang dalam tahap sinkronisasi karena kadang-kadang pengguna terputus dan tersambung di sip server) jalankan perintah berikut:

kamctl ul show --brief | jq

Perhatikan output di bagian berikut untuk kedua server:

 "Stats": {
            "Records": 670,
            "Max-Slots": 4
          }

Untuk entri Records baik di server pertama maupun server kedua, harusnya berjumlah sama yaitu 670. Jika ada perbedaan paling hanya 5 – 10 angka saja. Dan jika ingin benar-benar memastikan, ambil contoh satu record dari hasil di atas (harusnya hasil di atas berupa list panjang, tapi dalam contoh di sini hanya diambil potongan output itu saja), misal untuk record:

{
   "AoR": "user_8udxaw@11778f.sip.domain.tld"
}

Kita bisa search AoR tersebut di kedua server dengan cara:

kamctl ul show user_8udxaw@11778f.sip.domain.tld | jq

Jika tanpa dmq user tersebut hanya ada di salah satu server. Jika dengan dmq yang terinstall dengan baik, maka di kedua server mencatat AoR yang sama sekaligus.

[tips] Mematikan autorotate Layar di Ubuntu 19.10

Ndak tau sejak kapan, desktop Ubuntu ku bisa autorotate ketika posisi laptop agak berubah kemiringannya (misal pindah lokasi duduk atau sekedar ngangkat). Yang menyebalkan kadang sudah diputer-puter berapa kali layar ndak kembali ke semula.

Untuk mematikan autorotate, caranya adalah dengan mematikan aplikasi iio-sensor-proxy dengan cara berikut:

# systemctl stop iio-sensor-proxy
# systemctl disable iio-sensor-proxy
# apt remove iio-sensor-proxy --purge

Dah, habis itu laptop diputer-puter bagaimana pun layar ga akan ikut muter kayak henpon.

Bahasa Afrika di Shell Linux

Pernah nemuin respon shell di Linux (kebetulan saya pakai Centos 7 di server) menggunakan bahasa selain bahasa Inggris seperti berikut ini?

root# kopet
bash: kopet: bevel nie gevind nie

Setelah saya check di translate.google.com ternyata ini bahasa Afrika.

Ternyata memang default bahasa di Centos 7 menggunakan bahasa Afrika seperti yang tertera di output berikut:

root# locale
LANG=af_ZA.UTF-8
LC_CTYPE="af_ZA.UTF-8"
LC_NUMERIC="af_ZA.UTF-8"
LC_TIME="af_ZA.UTF-8"
LC_COLLATE="af_ZA.UTF-8"
LC_MONETARY="af_ZA.UTF-8"
LC_MESSAGES="af_ZA.UTF-8"
LC_PAPER="af_ZA.UTF-8"
LC_NAME="af_ZA.UTF-8"
LC_ADDRESS="af_ZA.UTF-8"
LC_TELEPHONE="af_ZA.UTF-8"
LC_MEASUREMENT="af_ZA.UTF-8"
LC_IDENTIFICATION="af_ZA.UTF-8"
LC_ALL=

Penasaran setting ini ada di mana saya menjalankan perintah berikut:

root# fgrep -R "LANG=af_ZA.UTF-8" *
grub2.cfg:      linux16 /vmlinuz-3.10.0-957.27.2.el7.x86_64 root=/dev/mapper/centos-root ro crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet LANG=af_ZA.UTF-8
grub2.cfg:      linux16 /vmlinuz-3.10.0-957.21.3.el7.x86_64 root=/dev/mapper/centos-root ro crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet LANG=af_ZA.UTF-8
grub2.cfg:      linux16 /vmlinuz-3.10.0-957.12.2.el7.x86_64 root=/dev/mapper/centos-root ro crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet LANG=af_ZA.UTF-8
grub2.cfg:      linux16 /vmlinuz-3.10.0-957.12.1.el7.x86_64 root=/dev/mapper/centos-root ro crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet LANG=af_ZA.UTF-8
grub2.cfg:      linux16 /vmlinuz-3.10.0-957.10.1.el7.x86_64 root=/dev/mapper/centos-root ro crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet LANG=af_ZA.UTF-8

Ternyata dari grub2.cfg, sehingga pas booting diset sebagai bahasa Afrika. Oleh karena itu saya coba override dari /etc/environment dengan menambahkan baris:

export LANG=en_US.utf8

Lalu jalankan perintah:

root# source /etc/environment

Lalu test dengan perintah salah:

root# kopet
bash: kopet: command not found

Done.

[tips][self reminder] tmux untuk bantu sesi ssh yang sering putus

Minggu-minggu terakhir ini sedang menjalankan sebuah proses clone database nosql di datacenter yang saya sendiri tidak memiliki akses console vm nya. Walhasil satu-satunya cara mengakses hanya via ssh. Tapi sialnya ssh baik di rumah maupun di kantor sering banget putus setelah sekian jam tersambung. Eh temen kantor ngajarin menggunakan tmux. Ini catatan buat saya sendiri, sukur-sukur kalo ternyata kepake juga buat teman yang lain. Kalau dari cheatsheet nya sih daftar shortcut/perintah nya cukup banyak, tapi yang di bawah ini list sangat pendek shortcut yang paling saya butuhkan.

Membuat sesi baru di tmux:

# whereis tmux
tmux: /usr/bin/tmux /usr/share/man/man1/tmux.1.gz

# tmux new -s backupDB

[backupDB] 0:root@db003:/home/godril*                                                       "db003.localhost.localdomain" 20:33 27-Jun-19

perintah di atas mencari apakah tmux sudah ada. Jika belum bisa diinstall dengan package manager atau langsung dari sourcenya di https://github.com/tmux/tmux/wiki.

perintah ke-dua membuat sesi tmux baru dengan nama  backupDB dan secara otomatis langsung masuk ke terminal backupDB tersebut (nama sesi akan muncul di kiri bawah). Di dalam terminal ini, saya menjalankan perintah untuk clone database. Lalu console saya tinggal dengan menjalankan perintah ctrl + B, D. 

Untuk melihat terminal yang aktif, bisa dilihat dengan perintah:

# tmux ls
backupDB: 1 windows (created Thu Jun 27 20:33:54 2019) [131x34]
mengalir: 1 windows (created Thu Jun 27 20:12:24 2019) [131x34]

tampak ada dua sesi tmux yang aktif. Untuk masuk ke sesi backupDB dengan cara:

# tmux attach -t backupDB

Dan untuk menghapus sesi tmux:

# tmux kill-session -t backupDB

# tmux ls
mengalir: 1 windows (created Thu Jun 27 20:12:24 2019) [131x34]

tampak backupDB sudah hilang dari list sesi tmux.

[tips] Failed package update di Debian Jessie

Nemu notifikasi failed seperti di bawah ketika update Debian Jessie.

W: Failed to fetch http://ftp.us.debian.org/debian/dists/jessie-updates/InRelease  Unable to find expected entry 'main/source/Sources' in Release file (Wrong sources.list entry or malformed file)

Ternyata sejak tanggal 20 Maret 2019 untuk distro Wheezy dan Jessie dijadikan satu di server archive.debian.org. Sehingga perlu edit file /etc/apt/sources.list dan mengganti server (dalam contoh di atas server mengarah ke ftp.us.debian.org) menjadi archive.debian.org.

Ulang kembali proses update dan upgrade. Kemungkinan akan ada masalah minor dengan notifikasi seperti:

W: Failed to fetch http://archive.debian.org/debian/dists/jessie-updates/main/source/Sources  404  Not Found [IP: 193.62.202.28 80]

W: Failed to fetch http://archive.debian.org/debian/dists/jessie-updates/main/binary-amd64/Packages  404  Not Found [IP: 193.62.202.28 80]

E: Some index files failed to download. They have been ignored, or old ones used instead.

tapi abaikan saja karena memang distro ini sudah seharusnya ditinggalkan dan mulai memasang versi Debian paling baru.

Menambah Shortcut Program di Desktop Ubuntu 18.04

Ini catatan buat diri sendiri sih.. selalu lupa gimana caranya menambah shortcut program di desktop Ubuntu setelah install program/app baru.

  • Masuk ke direktori /usr/share/applications 
  • Drag & drop icon applications yang hendak ditambahkan.
  • Pertama kali muncul di desktop, icon program belum seperti bawaan aslinya:

cukup klik untuk menjalankan program lalu pilih Trusn and Launch

setelah itu icon akan muncul: