Langsung ke konten utama

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.

BAHAN BAKU

Untuk mengimplementasikan eksperimen ini perlu dipersiapkan beberapa hal:

  1. Satu file Google Sheets berikut ID dari sheets tersebut, cara mendapatkan ID silahkan simak dalam artikel ini.
  2. Bot Telegram berikut API Token, anda dapat menyimak cara membuatnya dan mendapatkan API Token pada artikel ini.
  3. Satu file Apps Script, anda bisa menyimak cara membuatnya dan deployment Web Apps di artikel ini.
  4. Script eksperimen ini yang dapat unduh atau salin dari repository.
  5. 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
Dengan menerapkan konsep Reply akan membantu developer melacak keterkaitan jawaban user dengan pertanyaan tertentu yang disampaikan Bot khususnya ketika digelar multi pertanyaanSiLiKiDi

NOTASI ForceReply

ForceReply bukanlah metode melainkan sebagai salah satu opsi bernilai true/false dalam parameter reply_markup yang hampir selalu ada di semua metode Send Telegram API:


reply_markup: JSON.stringify({
  "force_reply": true
})

Parameter reply_markup berbentuk objek bukan string sehingga saat dikirimkan via HTTP nilai parameternya harus dibungkus dengan JSON.stringify().

EKSEKUSI ForceReply

Saat ForceReply dikirimkan, Telegram akan menampilkan prompt kotak input seperti tampak berikut:

Saat user memberikan input, Telegram akan mengirimkan update input tersebut ke Apps Script dalam format JSON seperti tampak berikut:

MENDETEKSI HASIL ForceReply

Salah satu ciri respon ForceReply dapat dikenali dengan kehadiran properti reply_to_message:

Dengan reply_to_message kita bisa melacak keterkaitan jawaban user dengan pertanyaan bot dengan memanfaatkan properti from dan chat:


const reply = data.message.reply_to_message;

//pastikan benar berasal dari bot yang sama dan chat yang sama
if (
  //benar dari bot jika is_bot = true
  reply.from.is_bot
  && ( String( reply.from.id ) === telegramBotID )
  && ( reply.from.username === telegramBotUsername )
  && ( String( reply.chat.id ) === String( data.message.chat.id ) )
){
...
}

MENANGKAP DATA DARI ForceReply

Setelah dikenali properti unik dari ForceReply dan dipastikan keterkaitannya, selanjutnya anda dapat menangkap jawaban dari user yang berada di properti message.text:

let jawaban = data.message.text;

Selanjutnya anda bisa berimprovisasi dengan jawaban user tersebut misalkan mengirim pesan balik atau menyimpannya di Google Sheets.

Struktur JSON selengkapnya dapat anda lihat di repositorySiLiKiDi

FINAL SCRIPT

Final Script dapat di unduh di repository. Tambahan dalam script ini opsional menyimpan jawaban user ke Google Sheets.

Contoh implementasi bisa dilihat di @simrsformbot dan template Google SheetsSiLiKiDi
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.

Inline Bot Telegram Dengan DuckDuckGo Instant Answer

Inline Bot adalah bot dengan kemampuan responsif mengolah permintaan user secara on-the-fly dan dapat diakses secara instan tanpa perlu private chat melainkan cukup dengan mention @usernamebot .

Membuat Menu Command Bot Telegram

Dibandingkan Google Dialogflow , Bot Telegram belum dilengkapi fitur AI Natural-language , walaupun begitu ia membuka lebar untuk kita kembangkan dari dasar dan tentunya gratis tidak seperti Dialogflow.