Langsung ke konten utama

Mengirim Media Group Ke Chat Telegram Dengan Apps Script

Media Group Telegram memungkinkan kita untuk mengirimkan beberapa foto, video, audio, atau dokumen sekaligus dalam satu bungkusan pesan menggunakan metode sendMediaGroup

Ketika sampai di artikel ini berarti anda sudah memahami pengiriman video dan gambar dengan Apps Script. Dilanjutkan kali ini dengan eksperimen mengirim 2-10 file sekaligus dalam satu kali pengiriman.

kita akan menggunakan cara URL dengan memanfaatkan Direct Link file media yang disuplai CloudinarySiLiKiDi

BATASAN PENGIRIMAN MEDIA GROUP

Dalam dokumentasi Telegram API disebutkan beberapa batasan yang harus diperhatikan saat mengirimkan media group:

  • Jenis photo dengan format .JPG .PNG [tanpa transparansi] .GIF [tanpa animasi]
  • Jenis video direkomendasikan dalam format .MP4
  • Jenis audio bisa .MP3 .M4A [media group tidak mendukung WAV dan OGG]
  • Jenis document karena dikirim via URL hanya bisa format .PDF bila selain itu dikirim dengan bungkusan .ZIP
  • Jenis animation tidak bisa dikirim dalam media group
  • Maksimal besar file 5 MB untuk foto dan 20 MB untuk lainnya
  • Maksimal jumlah file yang dikirim 10, minimal terdiri dari 2 file
Sticker TGS dan WEBP dikirim dengan metode tersendiri sendStickerSiLiKiDi

STRUKTUR METODE sendMediaGroup

Kita akan menggunakan tiga properti dalam sendMediaGroup:


var dataMedia = {
  method: "post",
  payload: {
    method: "sendMediaGroup",
    chat_id: "ID Chat - string - wajib",
    media: [
      {"type": "video", "media": "URL_VIDEO"},
      {"type": "photo", "media": "URL_PHOTO"},
      {"type": "document", "media": "URL_DOCUMENT"},
      {"type": "audio", "media": "URL_AUDIO"}
    ]
  }
};
UrlFetchApp.fetch(telegramAPIURL + "/", dataMedia);

Anda dapat menambahkan properti opsional caption untuk masing-masing file-nya:


{
   "type": "video", 
   "media": "URL_VIDEO", 
   "caption": "Keterangan video"
}
Ketika script di atas kita eksekusi, respon di Telegram muncul pesan Error 400. Bad Request: can't parse media JSON objectSiLiKiDi

PENANGANAN ERROR 400

Error ini terjadi karena properti media berbentuk array-object sedangkan Telegram API menuntut payload untuk dikirimkan dalam bentuk string berformat JSON.

Solusinya kita bungkus payload dengan fungsi JSON.stringify() untuk mengkonversi array-object menjadi string:


var dataMedia = {
  method: "post",
  payload: JSON.stringify({
    method: "sendMediaGroup",
    chat_id: "ID Chat - string - wajib",
    media: [
      {"type": "video", "media": "URL_VIDEO"},
      {"type": "photo", "media": "URL_PHOTO"},
      {"type": "document", "media": "URL_DOCUMENT"},
      {"type": "audio", "media": "URL_AUDIO"}
    ]
  })
};
UrlFetchApp.fetch(telegramAPIURL + "/", dataMedia);
Ketika script kembali dieksekusi, muncul lagi pesan berbeda Error 404. Not FoundSiLiKiDi

PENANGANAN ERROR 404

Error ini terjadi karena kita lupa memberi tahu Telegram bahwa yang dikirim adalah dalam format JSON, sehingga tambahkan properti contentType: "application/json" untuk memberi tahu Telegram tentang MIME type JSON sehingga Telegram tahu dengan akurat di bagian mana data berada.


var dataMedia = {
  method: "post",
  contentType: "application/json",
  payload: JSON.stringify({
    method: "sendMediaGroup",
    chat_id: "ID Chat - string - wajib",
    media: [
      {"type": "video", "media": "URL_VIDEO"},
      {"type": "photo", "media": "URL_PHOTO"},
      {"type": "document", "media": "URL_DOCUMENT"},
      {"type": "audio", "media": "URL_AUDIO"}
    ]
  })
};
UrlFetchApp.fetch(telegramAPIURL + "/", dataMedia);

PENANGANAN ERROR GROUP SEND FAILED

Bila anda menemui pesan Error 400. Bad Request: group send failed disebabkan kemungkinan berikut:

  • Kesalahan dalam penentuan properti type. Misalnya khusus dikirim dengan sendMediaGroup gambar .GIF semestinya dengan type: "photo" bukan animation.
  • Kesalahan dalam grouping. Properti type yang berbeda [kecuali photo dan video] dikirim dalam satu grup. Misalnya file bertipe document satu grup dengan photo
  • Terdapat file dengan format yang tidak didukung oleh metode sendMediaGroup atau bahkan dengan Telegram API. misalkan SVG, RAR, PSD, CDR, dll
Photo dan video bisa dikirim dalam satu grup sedangkan lainnya harus dengan tipe yang sama. Selengkapnya simak dokumentasi tentang InputMediaSiLiKiDi

DEMO PENGIRIMAN

Diasumsikan semua file-file media sudah anda simpan di CDN Cloudinary berikut dengan suplai direct link URL:

Media Group Video dan Photo

Hanya video dan photo yang bisa dikirim dalam satu grup secara bersamaan dan kita demokan dengan 5 file berbeda jenis: video MP4, foto JPG, logo transparan PNG, dan animasi GIF:

Beberapa catatan dengan hasil respon di Telegram seperti tampak pada gambar:

  • Video MP4 autoplay hanya saja mute secara default
  • Transparansi PNG hilang berganti berlatar putih
  • Animasi GIF menjadi statis tanpa animasi
  • Layout otomatis disesuaikan gridnya oleh Telegram

Media Group PDF dan ZIP

Media Group MP3

FINAL SCRIPT

Final Script dapat diunduh di repository.

Anda bisa lebih jauh bereksperimen dengan memanfaatkan aset online seperti yang disediakan File ExamplesSiLiKiDi
Dapatkan skrip semua materi di repository

Dukung donasi agar tutorial ini tetap operasional:
Trakteer Saya SiLiKiDi

Komentar