Mudah untuk membangun bot telegram di PHP

Hei yang disana! Hari ini saya akan memberi tahu Anda cara membuat bot telegram webhook paling sederhana di PHP.

⚠️ Persyaratan:

Anda membutuhkan php 7.2+ , ekstensi cUrl dan domain dengan sertifikat SSL. Anda dapat menggunakan sertifikat SSL gratis dari otoritas sertifikat Let’s Encrypt https://letsencrypt.org/getting-started

Langkah 0 – Perumusan Masalah

Pada artikel ini kita akan membuat bot sederhana, yang menyimpan data pengguna dari obrolan dengan pengguna dan mengembalikan data ini kembali ke pengguna. Ini akan terjadi setelah:

  • / start action: bot mengatakan “Halo” dan menjelaskan fungsinya
  • / save action: simpan nama dan nama belakang pengguna
  • / me action: mengembalikan data yang disimpan tentang pengguna, tetapi hanya jika data pengguna disimpan. Dalam kasus lain, ini mengembalikan pesan bahwa dia tidak mengingat pengguna ini

Kami ingin berinteraksi dengan bot dengan bidang masukan, jenis bot ini disebut ” mode Inline” dan berarti interaksi tersebut dilakukan melalui kueri sebaris dari bidang masukan teks dalam obrolan apa pun. Telegram mendukung berbagai fasilitas bot, seperti: mode inline , platform pembayaran , platform game , keyboard , perintah , dll . Jika Anda ingin mengetahui lebih banyak tentang keuntungan, lihat https://core.telegram.org/bots#5-bot-perks

Implementasi bot saya berdasarkan pustaka bot-telegram-sederhana . Karena tidak ada keajaiban di sana, Anda bisa melihatnya sendiri, hanya layanan koneksi dasar dan pembantu sederhana.

Langkah 1 – Sedikit Teori

Bot adalah akun khusus tanpa nomor telepon yang diperlukan. Pengguna dapat berinteraksi dengan bot dengan dua cara:

a) mengirim pesan dan perintah ke bot dengan menggunakan obrolan dengannya;

b) menggunakan @botname untuk menambahkan bot ke grup dan menggunakannya dari sana;

Kami menggunakan antarmuka HTTPS sederhana untuk berkomunikasi dengan server API Telegram. Antarmuka mendukung metode HTTP GET dan POST . Respons berisi objek JSON, yang selalu memiliki kolom Boolean ‘ ok ‘ dan mungkin memiliki kolom String opsional ‘ deskripsi ‘ dengan deskripsi hasil yang dapat dibaca manusia. Anda dapat membaca informasi lebih lanjut tentang membuat permintaan di sini: https://core.telegram.org/bots/api#making-requests

Untuk membuat bot, seseorang harus mulai dengan… berbicara. Berbicara dengan BotFather . Setelah beberapa langkah sederhana, ia mengirimkan token otorisasi bot Anda. Informasi lebih lanjut dapat Anda temukan di https://core.telegram.org/bots#3-how-do-i-create-a-bot

Sekarang saatnya mendapatkan pembaruan dari telegram, karena bot kami akan bereaksi. Bot apa pun bisa mendapatkan pembaruan dengan dua cara:

  • using / getUpdate , yang akan mengembalikan pembaruan, hanya pada saat dipanggil
  • menggunakan webhook , setiap tindakan dengan bot akan mengirimkan permintaan ke aplikasi kita

GetUpdate sederhana berguna ketika Anda perlu mengirim notifikasi ke pengguna atau grup di telegram dari aplikasi kami setelah beberapa tindakan di dalamnya.

Anda memerlukan webhook saat Anda ingin menggunakan bot Anda tidak hanya untuk pemberitahuan. Ini membantu untuk membuat bot otomatis, yang akan berkomunikasi dengan pengguna, segera setelah pengguna menulis ke bot. Informasi lengkap tentang mendapatkan pembaruan dapat Anda temukan di sini: https://core.telegram.org/bots/api#getting-updates

[1–2] Pengguna mengirimkan perintah ke bot kami

[2–3] Aplikasi Telegram mengirimkan permintaan ke API

[3–4] Dua cara komunikasi antara aplikasi dan Telegram API

  • [Kasus A]: menggunakan getUpdate – kami tidak dapat menjawab pengguna tepat setelah dia mengirim perintah, jadi dalam kasus ini kami hanya bisa mendapatkan pembaruan setelah beberapa tindakan di sisi aplikasi kami
  • [Kasus B]: menggunakan webhook – kita dapat berkomunikasi dengan pengguna secara real time. Setiap pembaruan bot kami akan membuat permintaan ke aplikasi kami

Langkah 2 – Membangun…

Yey! Kami siap membangunnya!

1. Buka BotFather dan dapatkan token Bot Anda dan ssst… ini adalah token rahasia.

2. Seperti yang saya katakan, kita dapat bekerja dengan API Telegram hanya dengan antarmuka HTTS, jadi itulah mengapa kita membutuhkan cUrl dalam aplikasi kita. Anda dapat mengujinya, dengan membuat permintaan sederhana ini dari browser, cukup tempelkan ke masukan url:https://api.telegram.org/bot<SecretBotToken>/getMe

3. Sekarang kita perlu membuat beberapa layanan koneksi dari sini, kita akan selalu menggunakan koneksi cUrl , contoh:

define ('BASIC_API_URL', 'https://api.telegram.org/bot <BOT_TOKEN> /');public function make (string $ action): array 
{ 
    $ curlInit = curl_init (); 
    curl_setopt ($ curlInit, CURLOPT_URL, BASIC_API_URL. $ action); 
    $ curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, 1); 
    $ keluaran = curl_exec ($ ch); 
    curl_close ($ curlInit);    return json_decode ($ output, true); 
}

Saya menggunakan CurlConnectionService ini yang mengimplementasikan antarmuka ConnectionService .

4. Untuk setiap tindakan Anda akan membutuhkan token rahasia, itu akan digunakan di url, seperti contoh / getMe . Jadi bayangkan, kita telah membuat beberapa metode dengan сURL, yang mengambil url untuk permintaan. Maka tindakan sederhananya akan seperti ini:

$ aboutMe = (baru ConnectionService ()) -> make ('getMe');

Dan ya, hasil $ aboutMe akan berformat json:

{ 
    "ok": true, 
    "result": { 
        "id": <bot_id>, 
        "is_bot": true, 
        "first_name": "bot_name", 
        "username": "bot_username" 
    } 
}

Oke, tapi apa selanjutnya? Sekarang kita perlu mengatur webhook, Anda perlu hosting dengan URL HTTPS . Di URL itu, Anda memerlukan rute unik atau nama file (.php) – rute atau file ini akan berfungsi sebagai pengendali CORE untuk bot kita.

Tutorial Chatbot Paling Populer

1. Komunikasi REST API Dialogflow V2

2. Percakapan Dengan Chatbot Saya yang berusia 35 tahun (Bagian 1)

3. ChatBot untuk ServiceNow menggunakan Amazon Connect, Lex dan Lambda

4. Konferensi Chatbot 2020

Path ke webhook ini harus dirahasiakan (demi alasan keamanan), anda dapat menamainya sebagai token bot anda , tidak ada yang mengetahuinya, jadi aman. Informasi tentang pengaturan webhook: https://core.telegram.org/bots/api#setwebhook

Anda cukup mengatur webhook dari input pencarian browser.

https://api.telegram.org/bot<SecretBotToken>/setWebhook?url= <webhookPageUrl>

Dalam kasus saya, saya menyiapkan pembantu untuk hal ini: WebhookConfigurationHelper

5. Mulai sekarang, kita dapat menangkap update dari bot, tanpa memuat ulang halaman. Mari persiapkan penangan untuk tugas ini:

// mendapatkan semua data dari permintaan POST yang masukfile_get_contents ("php: // input");/ * 
* menangani pembaruan sebagai array asosiatif 
* (atau Anda dapat menggunakan objek untuk tugas ini) 
* /$ update = json_decode ($ update, true );

Semua params, yang berisi permintaan ‘Perbarui’, Anda dapat melihat di dokumen resmi: https://core.telegram.org/bots/api#update

Kami ingin bereaksi atas perintah pengguna. Jadi kita perlu menangkap data pesan dengan sub params ‘chat’ dan ‘text’, dan tepatnya sub params ‘text’ yang kita butuhkan.

switch ($ update ['text']) { 
    case '/ start': 
        // beberapa tindakan 
    keluar; 
}

oke, sekarang kita bereaksi pada user commad ‘/ start’, mari kita kirimi dia pesan:

/ * 
* jika pengguna mengirim / memulai perintah 
* kami menjawab hai! 
* /$ connectionService-> make ( 
    'sendMessage? chat_id ='. $ update ['chat'] ['id']. '& text = hi!' 
);

Setelah itu Anda bisa mengujinya di bot Anda. Kirim saja dia pesan ‘/ start’.

6. Sekarang, kita dapat menangkap perintah sesuai keinginan kita. Selanjutnya – kita perlu membuat layanan penyimpanan data, silakan lakukan sendiri.

Informasi lebih lanjut, informasi apa yang bisa Anda dapatkan dari jenis yang tersedia baca di sini: https://core.telegram.org/bots/api#available-types

Langkah 3 – Itu hidup!

Selamat! Kami membuat bot telegram di PHP, yang dapat menyimpan nama pengguna dan nama keluarga dari obrolan. Ini adalah bot telegram yang sangat sederhana!

Tangkapan layar dari obrolan dengan bot-telegram-sangat-sederhana

Di sini Anda dapat menemukan implementasi bot saya: really-simple-telegram-bot . Konektor dasar dan pembantu di dalamnya, diambil dari pustaka bot-telegram-sederhana saya

Terima kasih atas perhatian Anda!

Leave a Reply

Your email address will not be published. Required fields are marked *