Tutorial Kirim WhatsApp OTP Lewat Qiscus Omnichannel Chat

One Time Password (OTP) kode singkat yang berguna untuk autentikasi keamanan pengguna dalam sebuah aplikasi. OTP hadir untuk melindungi data pribadi data pengguna saat masuk ke dalam aplikasi. Sifatnya yang menjaga keamanan data membuat data hanya diaktifkan dalam beberapa menit saja. Selain itu, sebagai penyedia layanan aplikasi, Anda pun harus ikut menjaga kerahasiaan kode OTP yang Anda kirimkan.

Umunya, kode OTP dikirimkan melalui layanan SMS. Hanya saja banyak kelemahan dari segi keamanan data jika OTP dikirim melalui SMS. Untuk itu, ada baiknya Anda mulai berpikir untuk berpindah menggunakan WhatsApp Business API untuk mengirim kode OTP. Fitur end-to-end encryption pada WhatsApp membuat pesan hanya bisa dibaca oleh pengguna. Selain keunggulan itu, pengiriman yang cepat, kuota pengiriman, dan karakter menjadi keunggulan dalam menggunakan WhatsApp Business API.

Dapatkan layanan WhatsApp Business API dengan menggandeng Qiscus sebagai partner resmi WhatsApp Business di Indonesia. Qiscus menyediakan layanan WhatsApp Business API dalam satu dashboard yang disebut Qiscus Omnichannel. Jika Anda tertarik untuk mengirim OTP melalui WhatsApp, ada baiknya Anda mulai menyimak tutorial berikut ini.

Hal yang Harus Dipersiapkan

Ada beberapa hal yang harus Anda persiapkan sebelum akhirnya bisa mengirim kode OTP melalui WhatsApp Business API, berikut ini rinciannya:

  1. Mengaktifkan WhatsApp Business API, Anda bisa menghubungi Qiscus di sini.
  2. Aktivasi Qiscus Omnichannel Chat, untuk bantuan Anda bisa mengubungi kami di sini.
  3. Integrasi akun WhatsApp dengan Qiscus Omnichannel Chat, gunakan panduan dokumentasi di sini untuk melakukan integrasi.
  4. Membuat template pesan untuk mengirim OTP, simak dokumentasi produk di sini untuk implementasinya.

Mulai Implementasi

Ada beberapa langkah yang harus Anda lakukan setelah pengaturan Qiscus Omnichannel Chat selesai dilakukan. Simak langkah-langkahnya sebagai berikut.

1. Autentikasi

Anda harus mendapatkan autentikasi AdminToken sebelum akhrinya mengirim OTP menggunakan WhatsApp Business API. Gunakan API berikut ini untuk mendapatkannya.
Gunakan API berikut untuk Admin Token:

[POST] https://multichannel.qiscus.com/api/v1/auth

Sample Request Body

{
    "email": "YOUR_EMAIL",
    "password": "YOUR_PASSWORD",
}

Contoh Request

curl --location --request POST 'https://multichannel.qiscus.com/api/v1/auth' \
--form 'email=YOUR_EMAIL' \
--form 'password=YOUR_PASSWORD'

Contoh Respon

{
    "data": {
        "user": {
            "id": 2,
            "name": "Qismo",
            "email": "qiscus_xxxx_YOUR_EMAIL",
            "authentication_token": "QEXevusxxxxxxxxxx1lsl8",
            .......
        },
        "long_lived_token": "CztxxxxxxxxxxxxxxxjtS",
        "user_configs": {
            "notifagentjoining": null,
            "is_notifagentjoining_enabled": true,
            "notifmessagecoming": null,
            "is_notifmessagecoming_enabled": false
        }
    }
}

Dari contoh di atas, AdminToken Anda adalah long_lived_token. Jika masih kebingungan, Anda dapat mempelajari tentang AdminToken di sini.

2. Memilih Template

Jika Anda kesusahan dalam membuat template pesan untuk OTP, Qiscus Omnichannel Chat menyiapkan beberapa pilihan template yang bisa Anda gunakan. Temukan rincian pesan yang lebih mendetail di sini. Untuk membuat template baru, Anda bisa menuju menu pesan keluar di dashboard Qiscus Omnichannel Chat. Di halaman yang sama, Anda juga bisa melihat template pesan yang telah Anda buat.

Memilih template pesan pada Qiscus Omnichannel Dashboard.
Template pesan yang sudah tersimpan di Qiscus Omnichannel Chat Dashboard

3. Menggunakan API

Setelah mendapatkan AdminToken dan memilih template pesan, langkah selanjutnya adalah menggunakan API. Dalam tutorial ini, kita akan menggunakan contoh template “otp_confirmation_text”. Untuk mendapatkan informasi detail tentang channel_id, template_name, namespace dan lainnya, klik View pada template yang dipilih.

Detail template pesan.

Anda dapat mengirim OTP menggunakan API ini:

[POST] https://multichannel.qiscus.com/api/v3/admin/broadcast/client

Header

KeyTipe
Authorization{{AdminToken}}
Detail header

Body

KeyTipeDeskripsi
channel_idOpsional, jika null akan menggunakan channel WhatsApp pertamaID Channel untuk identifikasi channel
template_nameDibutuhkanNama template pesan dan template yang dipilih
namespaceDibutuhkanNamespace dari template yang dipilih
languageString, dibutuhanBahasa yang digunakan dalam template pesan yang dipilih
variables[]Array string, dibutuhkanKode OTP yang ingin Anda kirim
phone_numberString, dibutuhkanNomor telepon tujuan
button_paramsDibutuhkan jika ada tombol dalam template pesanAnda hanya perlu mengisinya jika ada tombol dalam pesan yang dikirim
Detail body.

Contoh Request

curl --location -g --request POST 'https://multichannel.qiscus.com/api/v3/admin/broadcast/client' \
--header 'Authorization: CztxxxxxxxxxxxxxxxjtS' \
--form 'channel_id: 7xx' \
--form 'template_name: otp_confirmation_text' \
--form 'namespace: 51dcd9a4_xxxx_xxxx_xxxx_xxxxxxbb5' \
--form 'language: id' \
--form 'variables[]: 5678' \
--form 'phone_number: +628xxxxxxx321' \
--form 'button_params:""' 

Contoh Respon

{
    "data": {
        "broadcast_job_id": xxx24,
        "broadcast_logs": [
            {
                "id": 12371070,
                "message_id": "gBGHxxxSGUDxsVcB",
                "notes": null,
                "phone_number": "+628xxxxxxx321",
                "sent_at": "2022-07-29T03:47:14Z",
                "status": "sent",
                "variables": "[\"5678\"]"
            }
        ],
        "language": "id",
        "name": "otp_confirmation_text",
        "namespace": "51dcd9a4_xxxx_xxxx_xxxx_xxxxxxbb5"
    },
    "status": 200
}

Hasil

Begini tampilan pesan di WhatsApp pelanggan

Tampilan pesan di WhatsApp pelanggan.

4. Memeriksa Apakah Pesan Benar-benar Terkirim

Anda dapat memeriksa apakah pesan kode OTP telah dikirim ke pelanggan dengan dua cara:

  • Melalui Dashboard Qiscus Omnichannel Chat

Untuk melihat apakah pesan OTP sudah terkirim, Anda bisa melihat riwayat broadcast di menu Send WhatsApp Broadcast Messages . Klik See Log untuk mendapatkan informasi lengkap mengenai pesan tersebut.

Status pengiriman pesan di Qiscus Omnichannel Chat Dashboard

Ada 4 status pengiriman pesan:

  • Terkirim: Pesan telah terkirim.
  • Terkirim: Pesan telah terkirim tapi belum dibaca oleh pengguna
  • Baca: Pengguna telah menerima dan membaca pesan
  • Gagal: Pesan gagal terkirim

Anda dapat melihat status pesan di log detail seperti yang ditunjukkan di bawah ini.

Status pengiriman pesan
  • Melalui Webhook

Anda juga dapat melihat status pesan melalui Webhook. Untuk melakukan ini, Anda harus menyiapkan API untuk URL webhook.

API

[POST] https://multichannel.qiscus.com/whatsapp/{{APP-ID}}/{{channel-id}}/settings

Headers

Qiscus-App-Id : {{APP-ID}}
Qiscus-Secret-Key : {{Secret Key}}
content-type : application/json

Anda bisa mendapatkan app_id dan secret_key dari dashboard Qiscus Omnichannel Chat di menu Setting lalu klik App Information.

App Information di Qiscus Omnichannel Chat Dashboard

Body

{
    "webhooks": {
        "url": "YOUR_DOMAIN_URL.com/receive_webhooks"
    }
}

Contoh Request

curl -X POST \
  https://multichannel.qiscus.com/whatsapp/evo-hxybzc3pcehtbokfv/779/settings \
  -H 'Qiscus-App-Id: evo-hxybzc3pcehtbokfv' \
  -H 'Qiscus-Secret-Key: xxxxxxxxxx' \
  -H 'Content-Type: application/json' \
  -d '{
    "webhooks": {
        "url": "YOUR_DOMAIN_URL.com/receive_webhooks"
    }
}'

Anda bisa mendapatkan ID Aplikasi dan Secret Key Qiscus untuk diautentikasi di Qiscus Omnichannel Chat dengan mengikuti halaman ini.

Contoh Respon

{
    "business_id": "331765761667523",
    "status": 200,
    "webhooks": {
        "url": "YOUR_DOMAIN_URL.com/receive_webhooks (http://your_domain_url.com/receive_webhooks)“
    }
}

Anda dapat membaca detail tentang pengaturan webhook di WhatsApp Business API di sini.

5. Jika Kode OTP Tidak Terkirim

Ada beberapa alasan yang membuat pesan OTP Anda tidak terkirim kepada pelanggan, yakni:

  • Nomor telepon pelanggan salah
  • Nomor telepon tidak terdaftar di WhatsApp

Lakukan langkah berikut ini jika pesan OTP Anda tidak terkirim:

  • Coba lagi untuk mengirim pesan
  • Gunakan metode lain untuk mengirim OTP. Anda bisa menggunakan SMS atau email yang sudah terintegrasi dengan Qiscus Omnichannel Chat

Himbauan Penting

OTP bersifat rahasia dan melindungi data pribadi dari pelanggan Anda. Untuk menjaga kerahasiaan, Anda bisa menyembunyikan variabel OTP pada dashboard Qiscus Omnichannel Chat. Anda dapat menggunakan API yang sama dengan API untuk mengirim OTP WhatsApp melalui Qiscus. Namun, untuk menyembunyikan variabel dan membuatnya hanya bisa dibaca oleh pelanggan, Anda harus menambahkan hide_variables di body.
API:

[POST] https://multichannel.qiscus.com/api/v3/admin/broadcast/client

Headers

KeyTipe
Authorization{{AdminToken}}
Detail header.

Body

KeyTipeDeskripsi
channel_idOpsional, jika null akan menggunakan channel WhatsApp pertamaID Channel untuk identifikasi channel
template_nameDibutuhkanNama template pesan dan template yang dipilih
namespaceDibutuhkanNamespace dari template yang dipilih
languageString, dibutuhanBahasa yang digunakan dalam template pesan yang dipilih
variables[]Array string, dibutuhkanKode OTP yang ingin Anda kirim
phone_numberString, dibutuhkanNomor telepon tujuan
button_paramsDibutuhkan jika ada tombol dalam template pesanAnda hanya perlu mengisinya jika ada tombol dalam pesan yang dikirim
hide_variablesTRUEhide_variables is used to hide OTP code di Qiscus Omnichannel Chat Inbox
Detail body.

Contoh Request:

curl --location -g --request POST 'https://multichannel.qiscus.com/api/v3/admin/broadcast/client' \
--header 'Authorization: QEXevusxxxxxxxxxx1lsl8' \
--form 'channel_id: 7xx' \
--form 'template_name: otp_confirmation_text' \
--form 'namespace: 51dcd9a4_xxxx_xxxx_xxxx_xxxxxxbb5' \
--form 'language: id' \
--form 'variables[]:5678' \
--form 'phone_number:+628xxxxxxx321' \
--form 'button_params:""' \
--form 'hide_variables="true"'

Catatan:

Anda dapat mendapatkan semua data AdminToken, channel_id, template_name, namespace, dan yang lain sama seperti langkah ketiga.

Contoh Respon

{
    "data": {
        "broadcast_job_id": xxx24,
        "broadcast_logs": [
            {
                "id": 12371070,
                "message_id": "gBGHxxxSGUDxsVcB",
                "notes": null,
                "phone_number": "+628xxxxxxx321",
                "sent_at": "2022-07-29T03:47:14Z",
                "status": "sent",
                "variables": "[\"5678\"]"
            }
        ],
        "language": "id",
        "name": "otp_confirmation_text",
        "namespace": "51dcd9a4_xxxx_xxxx_xxxx_xxxxxxbb5"
    },
    "status": 200
}

Hasil

Beginilah cara hide_variables akan memengaruhi dashboard Qiscus Omnichannel Chat.

Hasil dari hide variable.

Sekarang WhatsApp Business API sudah siap untuk mengirim OTP kepada pelanggan, pastikan untuk melakukan testing pengiriman terlebih dahulu.

Hubungi Qiscus untuk Implementasi WhatsApp Business API

Qiscus Omnichannel Chat adalah dashboard yang mewadahi semua solusi percakapan bisnis untuk Anda. Masih ada solusi lain seperti Chatbot dan WhatsApp Chatbot yang berguna untuk memaksimalkan komunikasi bisnis Anda dengan pelanggan. Jangan ragu untuk menghubungi kami untuk berkonsultasi dan mendapatkan penawaran terbaik. Hubungi Qiscus di sini.

You May Also Like