Dalam situasi membutuhkan validasi dari user berupa bukti dokumen atau bukti screenshot untuk syarat pengaduan dan lainnya, langkah selanjutnya bagaimana mengambil file kiriman dari user tersebut agar bisa diolah di backend oleh Apps Script.
Setiap pesan yang berbentuk objek file selalu disertai properti file_id dalam struktur JSON-nya. Properti ini yang nantinya kita manfaatkan sebagai rujukan mengunduhSiLiKiDi
MENDAPATKAN file_id
Dalam contoh struktur JSON berikut ini berisi kiriman document PDF. file_id dari PDF yang akan kita ambil nilainya berada di message.document.file_id, jangan terkecoh dengan file_id yang ada di properti thumb
Dalam JSON tersebut belum tersedia objek file ataupun URL unduhan sehingga perlu proses kedua melibatkan metode getFileSiLiKiDi
STRUKTUR METODE getFile
Telegram tidak otomatis menyediakan URL unduhan dari tiap file kiriman user. Dalam dokumentasinya disebutkan metode getFile berfungsi untuk membangkitkan file_path yang kita butuhkan untuk mendapatkan URL unduhannya.
Setelah file_id kita dapatkan, selanjutnya kita letakkan pada properti file_id di getFile:
var dataFile = {
method: "post",
payload: {
method: "getFile",
chat_id: "ID_CHAT_ANDA",
file_id: "ID_FILE_ANDA"
}
};
var response = UrlFetchApp.fetch( telegramAPIURL + "/", dataFile );
Saat dieksekusi dengan Logger.log menghasilkan respon yang mirip JSON:
{
result = {
file_id = BAACAgUAAxkBAAIBJWFdFthNJ1FihsGDIT8Wk59baznZAALeAwACF4DpVnG7xe1AuXusIQQ,
file_size = 3114374.0,
file_unique_id = AgAD3gMAAheA6VY,
file_path = videos/file_0.mp4
},
ok = true
}
Beberapa catatan dari getFile ini:
- Info file_id akan kadaluarsa setiap satu jam. Untuk mendapatkan file_id yang baru, kita harus eksekusi kembali metode getFile
- Maksimal unduhan 20 MB per file-nya
- Respon dari getFile berupa data File yang berisi informasi file_id, file_unique_id, file_size, file_path
- Respon bukan berupa objek file melainkan file_path yang dibutuhkan dalam URL untuk mengunduh file tersebut.
PENERAPAN DALAM SCRIPT
Umpan di Bot Telegram
Kita masih menggunakan script yang dibuat pada artikel Melihat Struktur JSON Kiriman Telegram. Silahkan unduh file video MP4 untuk contoh bahan di file-examples.com
Buka bot anda lalu kirim file video MP4 tersebut dan tunggu respon JSON dari bot. Lalu salin informasi chat.id [kotak merah] dan file_id dari JSON tersebut [highlight biru], jangan salah ambil file_id yang ada di properti thumb.
Tambahkan Fungsi Penguji
Buat sebuah fungsi buatan tesGetFile untuk menguji respon dari metode getFile dengan rincian script seperti gambar di bawah ini.
Fungsi ini kita jalankan langsung dari tampilan Apps Script tanpa perlu Deploy. Cukup dengan menampilkan hasil eksekusi di Logger.log
- Silahkan lengkapi nilai dari properti chat_id dan file_id
- Jangan lupa untuk disimpan
- Pastikan pada opsi fungsi telah dipilih tesGetFile lalu klik Run
- Pada tampilan Logger.log salin URL file yang tertera di file_url [highlight biru]
Tes URL
file_path kemudian disandingkan dengan notasi default:
https://api.telegram.org/file/bot[API_TOKEN]/[file_path]
Sebagai contoh misalkan nilai dari properti file_path: "videos/file_0.mp4" maka notasinya:
https://api.telegram.org/file/bot2055443321:PLFO8bluA2cwBTcz8mIoIEAHVXx3WAZNVTf/videos/file_0.mp4
Buka browser dan tempelkan URL tersebut, bila video berhasil diunduh dan tayangannya sama dengan yang dikirim user di bot, maka proses pengambilan file dari chat dikatakan berhasil.
Setiap URL yang dibangkitkan dari hasil getFile berlaku juga masa kadaluarsanya 1 jam. Ulangi eksekusi getFile untuk mendapatkan yang baru lagiSiLiKiDi
FINAL SCRIPT
Final Script diunduh di repository dan berikut tampilan hasilnya:
Bila URL unduhan file dapat tampil berarti anda berhasil mengambil file dari chat Telegram dan selanjutnya anda bisa berimprovisasi di backendSiLiKiDi
Dapatkan skrip semua materi di repository
Dukung donasi agar tutorial ini tetap operasional:
SiLiKiDi
Komentar
Posting Komentar