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:
- Satu file Google Sheets berikut ID dari sheets tersebut, cara mendapatkan ID silahkan simak dalam artikel ini.
- Bot Telegram berikut API Token, anda dapat menyimak cara membuatnya dan mendapatkan API Token pada artikel ini.
- Satu file Apps Script, anda bisa menyimak cara membuatnya dan deployment Web Apps di artikel ini.
- Script eksperimen ini yang dapat unduh atau salin dari repository.
- 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:
SiLiKiDi
Komentar
Posting Komentar