Mengakali multi parameter pada Deep Linking Telegram dengan enkoding Base64 agar parameter /start bisa menampung beberapa nilai parameter sekaligus.
BAHAN BAKU
Untuk mengimplementasikan eksperimen ini perlu dipersiapkan beberapa hal:
- Bot Telegram berikut API Token, anda dapat menyimak cara membuatnya dan mendapatkan API Token pada artikel ini.
- ID dan Username dari bot tersebut yang bisa anda simak caranya di artikel ini.
- Satu file Apps Script, anda bisa menyimak cara membuatnya dan deployment Web Apps di artikel ini.
- Script eksperimen ini yang dapat unduh atau salin dari repository.
- ID User anda sebagai admin bot yang akan digunakan untuk menampung keterangan error bila terjadi kendala, gunakan @simrsinfobot untuk mengetahui ID User anda.
Di dalam script terdapat beberapa konstata yang harus anda isi dengan ID, API TOKEN, dan URL file bahan baku milik anda:
Bila anda menemui kendala saat deployment silahkan simak cara penanganannya pada artikel iniSiLiKiDi
Sekadar mengingatkan kembali bahwa yang dimaksud Deep Linking dalam Telegram adalah link publik dari akun Telegram bisa akun personal, nama bot, nama channel, nama group yang bersifat publik dengan notasi t.me/[username] seperti tampak berikut:
https://t.me/simrsjsonbot
Sedangkan yang dimaksud parameter dalam deep linking adalah tambahan atribut dari link publik akun Telegram dengan notasi t.me/[username]?start=[parameter] seperti tampak berikut:
https://t.me/simrsjsonbot?start=Alohalooo
Artikel ini kelanjutan dari Base64url Encode Dengan Apps ScriptSiLiKiDi
BATASAN DALAM PARAMETER /start
Telegram memperkenankan menyertakan parameter custom dalam deep linking dengan beberapa batasan:
- Panjang maksimal 64 karakter.
- Lebih diprioritaskan berhuruf kecil [lowercase].
- Tidak boleh ada spasi kosong semuanya harus dalam satu rangkaian.
- Tidak boleh melibatkan Reserved Characters URL-Encode seperti ! * ' ( ) ; : @ & = + $ , / ? % # [ ]
TRIK 64 KARAKTER BASE64
Kita akan bereksperimen dengan batasan 64 karakter namun bisa menampung beberapa parameter sekaligus. Misalkan kita buat rangkaian parameter berikut ini yang merepresentasikan data-data yang akan kita sertakan dalam deep linking Telegram:
- brand = dArt vEddEr
- price = 2,500 US$
- discount = 45%
Untuk bisa diolah dalam notasi URL maka dibuat dalam satu baris dipsahkan dengan tanda & sehingga menjadi
brand=dArt vEddEr&price=2,500 US$&discount=45%
Konversikan ke Base64 Web Safe
Enkoding ke Base64 akan memelihara originalitas dari konten parameter tanpa perlu mengorbankan karakter tertentu yang sebenarnya masih dibutuhkan seperti kapitalisasi huruf, tanda pungtuasi, mata uang atau persentase seperti tampak di atas.
konversiBase64(
"encode",
"brand=dArt vEddEr&price=2,500 US$&discount=45%"
);
Sematkan Pada Deep Linking Telegram
Hasil enkoding Base64 berupa string berikut:
YnJhbmQ9ZEFydCB2RWRkRXImcHJpY2U9Miw1MDAgVVMkJmRpc2NvdW50PTQ1JQ==
Lalu tempelkan di akhir deep linking bot anda setelah notasi start:
Decoding Dari Base64
Pada saat link tersebut dieksekusi akan membuka bot, saat user menekan tombol Start, maka Telegram mengirimkan parameter enkoding tersebut ke Apps Script untuk diolah lanjutan.
Di Apps Script parameter enkoding tersebut kemudian di dekoding dengan Base64 Web Safe untuk mendapatkan konten aslinya:
let parameterDecode = konversiBase64(
"decode",
konversiBase64( "encode", data.message.text )
);
Konversikan Menjadi Objek
Karena hasil dekoding berupa konten teks yang bentuknya seperti satu baris parameter dalam URL, maka kita perlu mengubahnya menjadi objek agar lebih mudah untuk diolah dengan Apps Script:
let parameterObjek = ekstrakParameter( parameterDecode );
Setelah menjadi objek, anda bisa menggunakannya dengan beragam notasi javascript seperti tampak berikut ini:
FINAL SCRIPT
Final Script ini merupakan bagian dari pembahasan dalam artikel Random Seed, Secret Key, Token Google, dan oAuth Dengan Apps Script dapat diunduh di repository. Script ini masih mengadopsi script di artikel sebelumnya dengan tambahan dua fungsi yang mengkonversi ke Base64 Web Safe dengan konversiBase64() dan mengekstrak URL parameter menjadi sebuah objek dengan fungsi ekstrakParameter() untuk kemudahan pengolahan di Apps Script:
Untuk parameter yang melebihi 64 karakter memerlukan penanganan khusus yang berbedaSiLiKiDi
TRIK MELEBIHI 64 KARAKTER
Membuat Shortened URL
Pada artikel selanjutnya kita akan bereksperimen menggunakan pemendek URL untuk membuat multi parameter deep linking Telegram yang bisa melebihi 64 karakter.
Membuat Custom Definisi Enum
Enum adalah kodifikasi definisi suatu rangkaian [set] dari beberapa data atau sub-definisi. Contoh sederhananya kode status HTTP berikut:
const statusKode = {
200: "Sucess!",
400: "Bad Request. Make sure everything is entered correctly",
401: "Unauthorized; please make sure you are logged in.",
404: "The requested page was not found.",
//...
}
Dengan menggunakan kode statusKode ataupun 401 sebagai parameter /start anda bisa tetap berada dalam batasan 64 karakter namun mampu menampung parameter-parameter yang melebihi batasan 64 karakter seperti tampak berikut:
https://t.me/simrsjsonbot?start=statusKode
https://t.me/simrsjsonbot?start=401
Selanjutnya dengan berbekal kode parameter tersebut, anda dapat mengolahnya dengan Apps Script berdasarkan pendefinisian const statusKode.
Lebih lengkap membuat custom Enum dalam javascript silahkan simak Creating Enum types in JavascriptSiLiKiDi
Membuat Kodifikasi di Google Sheets
Berbeda dengan trik Enum, anda pun bisa menggunakan solusi dengan membuat kodifikasi di Google Sheets yang tentunya ini akan menambah proses baca kode ke Sheets sebagai rujukan dan tidak akan diuraikan di sini.
Dapatkan skrip semua materi di repository
Dukung donasi agar tutorial ini tetap operasional:
SiLiKiDi
Komentar
Posting Komentar