Edisi perdana the first encounter antara Telegram Bot dengan Google Apps Script. Di sini kita akan mengenal bagaimana keduanya saling berkomunikasi.
HTTP vs HTTPS
Telegram menyediakan gerbang Web API untuk berinteraksi dengan botnya. Jadi selama aplikasi bisa menggunakan protokol HTTPS yang biasa digunakan saat browsing internet dan mendapat otorisasi token bisa dengan mudah terkoneksi dengan platform bot Telegram.
HTTP tanpa S sangat rentan disadap karena komunikasi antar kedua belah pihak tidak terenkripsi dengan aman. Tidak bisa pula mixed content antar keduanya, HTTP dengan HTTPS. Anda akan banyak mendapatkan error atau warning di console log browser jika memaksakannya.
Baik Telegram maupun Google mewajibkan penggunaan HTTPS. Jadi secara default kita tidak perlu memilih lagi atau menyetel ulang HTTPS di kedua aplikasi ini.
WEBHOOK vs LONG POLLING
Kedua metode ini berbeda dalam penanganan ketika server tidak mengalami update. Web Hook akan konsisten mengirimkan notifikasi sekalipun tidak ada update, mungkin kurang efisien di sisi penggunaan resource. Long polling mengutamakan efisiensi ini hanya mengirimkan notifikasi bila server mendapatkan update saja.
Untuk memperoleh update [push system] dari sisi Telegram tersedia dua metode: getUpdates dan setWebhook. Perbedaan keduanya baru terasa dalam konsistensi push update.
getUpdates
punya karakter tidak responsif karena menerapkan konsep Long polling jadi jangan berharap banyak mendapat kiriman update secara real time dengan metode ini.
Oleh karena itu akan digunakan metode setWebhook untuk mengintegrasikan Bot Telegram dengan Google Apps Script.
POST vs GET
Setelah dipilih metode push system dengan webhook, selanjutnya menentukan metode pengiriman data POST atau GET. Baik keduanya tersedia di Telegram API Bot.
Metode POST lebih disarankan dan dipilih di sini karena tidak vulgar menempelkan parameter data di URL sebagaimana yang biasa diterapkan di GET. Untuk melihat contoh proses metode GET silahkan simak artikel ini. Selain itu hampir selalu Telegram mengirim respon dengan POST.
JSON RESPONSE
Baik melalui POST atau GET, Telegram selalu mengirimkan responnya dalam format JSON dan berbentuk string. Untuk kemudahan pengolahannya perlu dikonversi dari JSON-string [saat dikirimkan] menjadi JSON-object.
Setiap bahasa pemrograman versi terbaru sudah menyediakan pengolahan format JSON. Google Apps Script menggunakan platform javascript sehingga respon dari Telegram dikonversi ke JSON-object dengan fungsi JSON.parse().
Dari sini disimpulkan bahan baku yang akan digunakan:
HTTPS, WEBHOOK, POST, JSON
langkah selanjutnya membuat botSiLiKiDi
MEMBUAT BOT
Telah dijelaskan dengan lengkap bagaimana membuat bot di Telegram dengan artikel tersendiri Membuat Bot Telegram Dengan BotFather.
Anda akan memerlukan API Token yang di-generate saat membuat bot sebagai otorisasi dari Telegram agar Google Apps Script bisa berkomunikasi dengan bot anda nantinya.
MEMBUAT APPS SCRIPT
Buat baru Google Apps Script yang standalone langsung dari Google Drive dengan klik + New lalu pilih More - Google Apps Script
Konstanta Identitas
Siapkan tiga konstanta untuk menampung data URL dari Telegram API, API Token, dan URL dari Google Web Apps. Tidak dipilih var atau let karena const menjamin nilai di dalamnya akan selalu konstan tidak berubah selama proses berlangsung melainkan ada intervensi dari programmer.
const telegramAPIToken
diisi dengan API Token yang di-generate oleh BotFatherconst telegramAPIURL
diisi"https://api.telegram.org/bot" + telegramAPIToken
const googleWebAppsURL
dibiarkan kosong sementara akan diisi nanti saat deployment
Membuat Fungsi getMe()
Dengan telah tersedianya API Token maka kita bisa menguji konektivitas ke Telegram API dengan memanfaatkan metode getMe untuk menampilkan informasi tentang bot anda. Hasil pengujian ditampilkan ke Logger Apps Script.
Buatlah skrip fungsi buatan getMe() seperti gambar berikut ini, pastikan simpan dulu hasil modifikasi Apps Script tersebut, dan cobalah mengujinya dengan klik tombol Run [pastikan pada dropdown fungsi sudah terpilih getMe
]
Bila kemudian tampilan Authorization required tak perlu panik karena ini adalah inisiasi pertama dan Google meminta anda untuk memberi ijin otoritas Apps Script anda. Ikuti caranya pada artikel tersendiri Kendala Saat Deploy Google has not verified this app.
Bila sesuai skenario, respon dari Telegram akan ditampilkan di Logger.log berupa informasi tentang bot anda seperti tampak berikut:
Selamat! anda berhasil membangun koneksi Apps Script anda dengan Bot Telegram andaSiLiKiDi
Membuat Fungsi setWebHook()
Setelah berhasil menguji konektivitas dengan getMe(), selanjutnya siapkan sebuah fungsi buatan setWebHook() untuk mengaitkan URL Web Apps anda dengan Web Hook dari Telegram API. Buatlah skrip fungsinya seperti gambar berikut ini:
Karena fungsi ini membutuhkan URL Web Apps yang belum tersedia, maka kita perlu men-deploy terlebih dulu. Silahkan klik tombol Deploy dan pilih New deployment. Klik icon Gear dan pilih Web app
Beri deskripsi bilamana diperlukan, pastikan pada pilihan Who has access dipilih Anyone, lalu klik tombol Deploy.
Copy URL Web Apps yang telah di-generate. Kemudian paste ke dalam konstanta googleWebAppsURL
Menguji Webhook
Setelah URL Web Apps disalin ke konstanta googleWebAppsURL selanjutnya anda bisa mengujinya dengan klik tombol Run [pastikan pada dropdown fungsi sudah terpilih setWebHook]
Bila sesuai skenario akan tampil respon dari Telegram di layar Logger.log yang menyebutkan Webhook was set seperti gambar berikut:
Selamat! anda berhasil membangun Webhook Push System yang secara realtime mengirimkan update dari Bot TelegramSiLiKiDi
FINAL SCRIPT
Final Script tampak berikut silahkan salin ke Code.gs di project Apps Script anda:
/**********************************************************
* Simpan ke file Code.gs
* FIRST ENCOUNTER GOOGLE APPS SCRIPT DENGAN BOT TELEGRAM *
* https://telegram-bot-script.blogspot.com/2021/09/telegram-bot-dengan-google-apps-script-the-first-encounter.html
***********************************************************/
const telegramAPIToken = "GANTI_DENGAN_API_TOKEN_BOT_ANDA";
const telegramAPIURL = "https://api.telegram.org/bot" + telegramAPIToken;
const googleWebAppsURL = "GANTI_DENGAN_URL_WEB_APPS_ANDA";
/********************************************************************
* Fungsi buatan untuk meminta info tentang bot dengan metode getMe *
* Respon dari Telegram ditampilkan dalam layar Logger Apps Script
*********************************************************************/
const getMe = () => {
let url = telegramAPIURL + "/getMe";
let response = UrlFetchApp.fetch(url);
Logger.log(response.getContentText());
}
/*************************************************************************************
* Fungsi buatan untuk membangun koneksi webhook Google Web Apps dengan Telegram API *
* Respon dari Telegram ditampilkan dalam layar Logger Apps Script
**************************************************************************************/
const setWebhook = () => {
let url = telegramAPIURL + "/setWebhook?url=" + googleWebAppsURL;
let response = UrlFetchApp.fetch(url);
Logger.log(response.getContentText());
}
/***********************************
* Fungsi buatan menghapus webhook *
************************************/
const deleteWebhook = () => {
let url = telegramAPIURL + "/deleteWebhook";
let response = UrlFetchApp.fetch( url );
Logger.log( response.getContentText() );
}
MEMBUAT WEB APPS
Google Apps Script harus di-deploy dalam bentuk Web Apps agar bisa di-webhook dengan Telegram API Bot. Setiap kali anda men-deploy secara otomatis anda sudah membuat sebuah Web Apps.
Ingat! segera Copy dan Paste ke konstanta googleWebAppsURL karena setiap deployment akan menghasilkan URL yang baru berbeda dari sebelumnya.
Artikel selanjutnya anda akan diajak untuk mulai mengirim pesan sederhana ke Bot Telegram dari Google Apps ScriptSiLiKiDi
Dapatkan skrip semua materi di repository
Dukung donasi agar tutorial ini tetap operasional:
SiLiKiDi
Komentar
Posting Komentar