Hai Nama saya Narek Markosyan dan saya adalah pengembang backend di Citimobil. Saya ingin memberi tahu Anda tentang
bot Telegram tertutup kami
"Pembeli Misteri" .
Prolog
Tidak ada yang memakai kacamata merah muda di CityMobile, kami sangat memahami bahwa layanan kami tidak sempurna, oleh karena itu kami selalu berupaya meningkatkannya. Masalah pelanggan mungkin terkait dengan aplikasi, dengan perhitungan harga, tetapi paling sering dengan pengemudi.
Kami mencintai pengemudi kami dan mencoba membuat pekerjaan mereka lebih menyenangkan dan menguntungkan, tetapi karena satu pengemudi yang tidak bermoral kami dapat kehilangan beberapa pelanggan dan dengan demikian menghilangkan pengemudi yang dengan jujur โโmelakukan pekerjaan mereka.
Untuk alasan ini, kami memutuskan untuk mengembangkan alat untuk dengan cepat menanggapi keluhan terkait dengan pengemudi.
Kenapa kita perlu bot
Tentu saja semua keluhan klien kami dipertimbangkan oleh karyawan departemen pendukung, tetapi kami tidak dapat sepenuhnya mengandalkan statistik yang diterima dari klien karena beberapa alasan:
- tidak semua pelanggan meninggalkan umpan balik jika terjadi kesalahan;
- kita tidak selalu dapat yakin akan objektivitas pelanggan;
- kami tidak ingin dan tidak bisa mendapatkan pelanggan banyak pertanyaan klarifikasi untuk mendapatkan gambaran lengkap.
Jadi apa yang harus dilakukan? Minta kolega kami untuk membantu!
- Karyawan kemungkinan besar tidak akan lupa melaporkan masalah;
- Karyawan lebih objektif . Tidak sampai akhir, tapi tetap saja :)
- Anda dapat pergi ke kolega dan mencari tahu semua detail yang diperlukan.
Tentu saja, ketika masalah muncul, Anda selalu dapat memanggil ruang pengiriman dan melakukan tanpa perantara, tetapi bot membantu untuk melakukan dua tugas penting: itu
mengingatkan Anda tentang apa yang perlu Anda perhatikan dan memungkinkan Anda untuk melaporkan masalah dengan mengklik
tombol .
Bagaimana cara kerja bot?

Pembeli misterius itu sangat sederhana. Ini hanya terdiri dari dua penangan:
Handler pertama mengambil dari perjalanan API kami yang baru saja menyelesaikan atau dalam status "In transit", dan mengirimkan pertanyaan perjalanan pertama ke chat.
Handler kedua mengakses Telegram API dan mengambil pesan yang belum dibaca, membaca setiap pesan secara bergantian dan mengirim respons ke obrolan.
Tentu saja, itu memungkinkan untuk membuat server kami secara otomatis mengirim pesan ke bot perjalanan dan balasan pengguna dari Telegram tidak datang dalam batch, tetapi pada saat pengiriman, tetapi setelah diskusi kami memutuskan untuk membuat mekanisme yang dijelaskan di atas. Ada beberapa alasan untuk ini:
- dengan implementasi ini, layanan ini benar - benar tertutup untuk permintaan masuk pada semua port, dengan demikian kami tidak bisa takut terhadap upaya peretasan atau serangan DDOS;
- jika banyak pesan datang dari pengguna secara bersamaan, Telegram tidak akan membombardir kami dengan permintaan ;
- jika bot menjadi tumpul, itu tidak akan memengaruhi server utama kami dan tidak akan memengaruhi proses bisnis.
Kami memilih MySQL sebagai basis untuk bot. Basis data apa pun akan cocok untuk kami, bahkan noSQL, tetapi kami memilih MySQL untuk memudahkan departemen analitik memproses data yang diperlukan.
Adapun bahasa, di sini kami memilih antara PHP dan GoLang. Kami berhenti di PHP, karena "kenapa tidak." Dengan implementasi yang kami miliki, kami tidak akan menggunakan keunggulan utama Go, tetapi akan mempersulit pengembangan lebih lanjut - tidak semua pengembang kami menulis di Go. Jika Anda memiliki gagasan apa yang lebih baik dari PHP dalam implementasi Go ini, saya akan senang membaca di komentar.
Perangkat tambahan
Belum ada banyak perbaikan sejak versi pertama. Setelah peluncuran resmi, kami mulai mengumpulkan umpan balik dan akibatnya hanya ditemukan dua masalah.
Masalah pertama adalah memori pendek . Pada implementasi pertama, bot mulai mempertanyakan karyawan 5 menit setelah perjalanan. Ternyata selama ini penumpang berhasil melupakan beberapa detail, misalnya, nomor registrasi mobil. Setelah disempurnakan, bot memulai survei satu menit setelah penumpang masuk ke mobil. Bot menanyakan pertanyaan, jawaban yang sudah diketahui pasti (kebersihan mobil, apakah mobil memiliki angka yang benar, dll). Setelah perjalanan, bot kembali dengan seikat pertanyaan lain, jawaban yang menjadi jelas hanya selama perjalanan.
Masalah kedua adalah bahwa semuanya hampir selalu baik-baik saja dengan kita . Tidak peduli seberapa aneh kedengarannya, tetapi dari sudut pandang bot, ini telah menjadi masalah. Rekan kami lelah setelah setiap perjalanan 10 kali untuk menjawab "semuanya baik-baik saja." Kami memecahkan masalah ini dengan mengelompokkan pertanyaan: kami menggabungkan semua pertanyaan yang diajukan selama perjalanan dan semua pertanyaan yang diajukan setelahnya menjadi dua pertanyaan yang identik: "Apakah semuanya baik-baik saja?" Dengan serangkaian jawaban yang berbeda.

Dalam waktu dekat kami berencana untuk meningkatkan jumlah pelanggan tepercaya dan dengan demikian membuat bot lebih efisien. Untuk melakukan ini, Anda harus mengulang otorisasi dan menambahkan pemantauan ke peristiwa penting. Jika akan ada perubahan yang menarik, saya akan menulis artikel terpisah tentang mereka ...