Langsung ke konten utama

Mengambil Kiriman File Chat Telegram

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

  1. Silahkan lengkapi nilai dari properti chat_id dan file_id
  2. Jangan lupa untuk disimpan
  3. Pastikan pada opsi fungsi telah dipilih tesGetFile lalu klik Run
  4. 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:
Trakteer Saya SiLiKiDi

Komentar

Postingan populer dari blog ini

Mengirim File Google Drive ke Telegram

Pada eksperimen kali ini anda akan diajak untuk mencoba mengirimkan file yang ada di Google Drive ke chat Telegram menggunakan perantaraan Apps Script.

Meracik Script Untuk Merespon Command Bot Telegram - PART 1

BotFather hanya menyiapkan menu command sedangkan menghidupkannya perlu sentuhan Apps Script. Bot Telegram mengirim command dari user, selanjutnya Apps Script membalasnya dengan konten tertentu.