Langsung ke konten utama

Multi Parameter Deep Linking Telegram Dengan URL Shortener

Salah satu trik untuk mengakali batasan parameter 64 karakter pada deep linking Telegram yang bisa menampung multi parameter sebanyak mungkin adalah dengan memanfaatkan URL Shortener.

BAHAN BAKU

Untuk mengimplementasikan eksperimen ini perlu dipersiapkan beberapa hal:

  1. Bot Telegram berikut API Token, anda dapat menyimak cara membuatnya dan mendapatkan API Token pada artikel ini.
  2. Satu file Apps Script, anda bisa menyimak cara membuatnya dan deployment Web Apps di artikel ini.
  3. Script eksperimen ini yang dapat unduh atau salin dari repository.
  4. 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
Eksperimen ini akan membuktikan Click-To-Chat versi Telegram yang jauh lebih baik dan aman dibandingkan WhatsAppSiLiKiDi

KONSEP IDE

Membuat sebuah link dengan bantuan example.com disertai parameter GET sebanyak mungkin, lalu link panjang tersebut diringkas dengan URL shortener yang ada di internet. Kode unik URL short yang didapat akan kita gunakan sebagai parameter /start dalam deep linking Telegram.

Saat deep link t.me/[username]?start=[kode_shortener] dieksekusi, Telegram akan mengirimkan [kode_shortener] ke Apps Script untuk diekstrak guna mendapatkan konten aslinya.

APLIKASI PIHAK KETIGA

Selain Bot Telegram dan Google Apps Script, kita akan membutuhkan bantuan dari aplikasi pihak ketiga:

  • example.com dari IANA sebagai domain dummies yang akan dimanfaatkan untuk menempelkan multi parameter.
  • tinyurl dan bitly sebagai media URL shortener.
  • Template Sheets untuk data-data parameter yang dibutuhkan.

QUERY PARAMETER DARI SHEETS

Ujicoba Dengan 20 Parameter

Anda dapat mengambil contoh data parameter dari template sheets di atas untuk dijadikan bahan eksperimen dengan target 20 parameter yang akan dibungkus dalam satu bungkusan parameter /start dalam deep link Telegram:


name: Keith Houston
phone: (774) 818-2647
email: pede@enimmi.net
date: 11/4/2021
time: 1:23 AM
company: Accumsan Neque Et Incorporated
address: 398-6341 Dolor St.
city: Dublin
zip: 894132
region: North Jeolla
country: United Kingdom
latlng: -65.9513740288, -46.2263893000
text: Aenean sed pede nec ante blandit viverra. Donec
alphanumeric: WJE78GKV6EP
guid: F8555858-437D-374C-745E-6F14116EE6C8
currency: $39.16
iban: KW9621464113574932647083124033
pan: 5224 3486 5895 5185
track1: #ea9ddc
boolean: Yes

20 parameter tersebut nantinya akan kita tempelkan ke domain example.com menjadi sebuah link web yang lengkap:

Example.com milik IANA yang ditujukan untuk keperluan ilustrasi dari sebuah domainSiLiKiDi

Format ke Bentuk Query Parameter GET URL

Kita akan membuat sebuah fungsi parameterFromSheet() dengan tiga fungsional:

  • Mengambil data dari Sheets
  • Mengubahnya menjadi satu baris data
  • Dekoding ke bentuk query parameter URL

Dengan olahan parameterFromSheet() akan dihasilkan link web seperti tampak berikut berikut:


https://example.com/?name%3DBrynne%20Prince%26phone%3D1-264-435-3964%26email%3Dleo.elementum%40sed.org%26date%3D11%2F5%2F2021%26time%3D7%3A09%20AM%26company%3DSed%20Molestie%20LLC%26address%3DHu%20Patrick%2C(811)%20904-1211%2Cvivamus.molestie%40euenimetiam.edu%2CFeb%2025%2C%202021%2C11%3A24%20AM%2CQuis%20Turpis%20Limited%2CAp%20%23461-5141%20Dui.%20Rd.%2CYekaterinburg%2C8260%2CVermont%2CAustria%2C89.621474816%2C%20-85.7927384064%2Cullamcorper%20eu%2C%20euismod%20ac%2C%20fermentum%20vel%2C%20mauris.%20Integer%20sem%20elit%2C%2CYZD27QTJ3QV%2CA8E9D187-8007-518A-6497-8EDAED29B414%2C%2492.10%2CCY98383815161383085142193461%2C453224%208986297739%2C%238ef2cd%2CNo%26city%3DPort%20Lincoln%26zip%3D627130%26region%3DCorse%26country%3DAustria%26latlng%3D-65.9513740288%2C%20-46.2263893001%26text%3DAenean%20sed%20pede%20nec%20ante%20blandit%20viverra.%20Donec%26alphanumeric%3DAJG92YHO3US%26guid%3DD7B833E8-1B2D-9328-BE5D-4411335422CB%26currency%3D%242.80%26iban%3DSK8824979408583559810775%26pan%3D3654%20268344%2045230%26track1%3D%2323af8a%26boolean%3DNo

Kita akan menggunakan Tinyurl dan Bitly sebagai perbandingan dalam meringkas link. Tempelkan link panjang hasil olahan fungsi parameterFromSheet() ke kedua peringkas link tersebut:

Didapatkan hasil ringkasan dari kedua shortener tersebut masing-masing dua kode shortlink berbeda namun tentunya dengan konten yang sama:


  https://tinyurl.com/shortlinktest
  https://bit.ly/shortlinktestbitly

Kita ambil kode unik dari kedua shortlink tersebut shortlinktest dan shortlinktestbitly lalu kita tempelkan pada deep link Bot Telegram:


  https://t.me/pertamakubot?start=shortlinktest
  https://t.me/pertamakubot?start=shortlinktestbitly

PENGOLAHAN DI APPS SCRIPT

Ketika salah satu deep link tersebut di ekskusi di browser akan membuka Bot Telegram dengan kemunculan tombol Start. Pada saat user menekan tombol Start tersebut Telegram kemudian mengirimkan parameter shortlink tersebut, shortlinktest atau shortlinktestbitly, ke Apps Script melalui webhook.

Di Apps Script kiriman kode shortlink tersebut kemudian dieksekusi oleh fungsi getRedirect() yang diracik Joshep Combs - Chris untuk mendapatkan konten aslinya:

Pilah Parameter dan Koversi ke Objek dengan extractLinkToObject()

Setelah konten aslinya kita dapatkan, selanjutnya kita pisahkan parameter dari domain example.com lalu konversikan ke bentuk objek untuk memudahkan pengolahannya dengan Apps Script dengan bantuan fungsi extractLinkToObject() berikut ini:

Kirim Balik ke User dengan sendMessage()

Hasil olahan extractLinkToObject() kemudian dikirimkan ke user sebagai feedback melalui metode sendMessage dan tampil di Telegram seperti tampak berikut ini:

DEMO BOT

Demo Bot :
@simrsdeeplinkbot
Demo Deep Link :
https://t.me/simrsdeeplinkbot?start=shortlinktest
TinyURL Shortened :
https://tinyurl.com/shortlinktest

FINAL SCRIPT

Final Script dapat diunduh di repository dan beberapa improvement lanjutan yang bisa anda lakukan dengan script ini:

  • Lebih meringkasnya dengan notasi ES6
  • Lebih fleksibel mendeteksi domain url shortener
  • Generate otomatis parameter dari Google Sheets
  • Selanjutnya anda coba untuk menambahkan parameter link website anda dan cobalah untuk memasangkannya di Facebook Shops seperti tampak berikut:
Dapatkan skrip semua materi di repository

Dukung donasi agar tutorial ini tetap operasional:
Trakteer Saya SiLiKiDi

Komentar

Postingan populer dari blog ini

Kirim Pesan Ke Telegram Dengan Apps Script

Dengan koneksi webhook anda bisa mulai ujicoba mengirim pesan pertama ke Telegram dari Google Apps Script.

Input User Dengan ForceReply Di Telegram

Metode ForceReply memungkinkan Bot memaksa user untuk memberikan input sebelum melanjutkan proses, dengan demikian anda dapat menggelar Step-by-Step formulir di Telegram.