Bot PHP pertama untuk VKontakte

Halo, orang Khabrovit. Dalam publikasi ini, saya akan menulis tentang cara membuat bot obrolan pertama saya untuk VKontakte. Saya pikir ini tidak akan menarik bagi programmer berpengalaman, tetapi mereka yang baru memulai perjalanan mereka akan tertarik, karena saya sendiri belum melangkah terlalu jauh dan memahami masalah pemula. Dan saya segera memperingatkan Anda bahwa sebagian besar tangkapan layar akan menggunakan bahasa Inggris.

Pertama, kita perlu membuat komunitas. Saya pikir semua orang bisa menangani ini.

Kemudian kita masuk ke pengaturan komunitas dan memilih item "Penggunaan API" dan klik tombol "Buat token".

gambar

Selanjutnya, Anda harus memilih, pada kenyataannya, apa yang dapat kita gunakan dengan token ini. Kami membutuhkan akses ke pesan komunitas, tetapi kami dapat memilih semua hak akses sehingga kami tidak harus mengingat tentang membuat token di masa mendatang.

gambar

Dan jadi kami mendapat tanda didambakan. By the way, itu harus disimpan di tempat yang aman dan tidak diperlihatkan kepada siapa pun. Sekarang Anda dapat melanjutkan ke kode.

gambar

Kami akan menulis kode dalam PHP, sehingga Anda dapat mengunduh kode Visual Studio atau PHPStorm. Pada prinsipnya, kode dapat ditulis dalam notepad, tetapi tidak akan nyaman. Setelah kode, kita akan beralih ke pengaturan grup lebih lanjut.

Jadi, sebagai permulaan, kita perlu mendapatkan informasi tentang pesan yang masuk dan menerjemahkannya dari format JSON menjadi yang ramah untuk PHP.

<?php $data = json_decode(file_get_contents('php://input')); ?> 

Dalam variabel data, kami sekarang memiliki larik dengan pesan, ID pengguna dan ID obrolan.
"Apa jenis" json_decode (file_get_contents ('php: // input')) ", Anda bertanya.

Mari kita mulai dari saat ini:

 file_get_contents('php://input') 

Secara sederhana, kami bertanya pada skrip apa yang datang ke input kami, yaitu, permintaan apa yang VC kirimkan. Di bawah ini adalah contoh dari permintaan semacam itu.

 {"type":"message_new","object":{"date":1568464037,"from_id":450829055,"id":5400,"out":0,"peer_id":450829055,"text":" .","conversation_message_id":1478,"fwd_messages":[],"important":false,"random_id":0,"attachments":[],"is_hidden":false},"group_id":171524656} 

Saya pikir mudah untuk memahami apa yang tertulis dalam permintaan, jika Anda memiliki pengetahuan bahasa Inggris yang minimal.

Nah, "json_decode ()" adalah fungsi yang menerjemahkan JSON di atas ke dalam array yang dapat digunakan PHP.

Sekarang kita akan menulis kode yang melihat kejadian apa yang terjadi, dan jika ada pesan baru yang datang kepada kita, itu membandingkan pesan itu dengan yang di mana kita mendapat respons dan melihat pada ID obrolan.

 <?php $data = json_decode(file_get_contents('php://input')); switch ($data->type) { case 'confirmation': echo $confirmation_token; break; case 'message_new': $message_text = $data -> object -> text; $message_text = $data -> object -> peer_id; if ($message_text == ""){ // -  } if ($message_text == ""){ // -  } echo 'ok'; break; } ?> 

Sekarang kita perlu menanggapi pesan-pesan ini. Untuk melakukan ini, kami menulis fungsi sederhana.

 <?php function vk_msg_send($peer_id,$text){ $request_params = array( 'message' => $text, 'peer_id' => $peer_id, 'access_token' => "TOKEN", 'v' => '5.87' ); $get_params = http_build_query($request_params); file_get_contents('https://api.vk.com/method/messages.send?'. $get_params); } ?> 

Apa yang sedang terjadi di sini? Di sini kami membuat permintaan ke VK API (saya sarankan membaca dokumentasi) dengan teks pesan, ID obrolan dan token yang kami buat sebelumnya, dan mengirimkannya ke server VK.

Sekarang hubungkan potongan kode ini dan tulis reaksi bot terhadap pesan tertentu.

 <?php $confirmation_token = 'CONF_TOKEN' function vk_msg_send($peer_id,$text){ $request_params = array( 'message' => $text, 'peer_id' => $peer_id, 'access_token' => "TOKEN", 'v' => '5.87' ); $get_params = http_build_query($request_params); file_get_contents('https://api.vk.com/method/messages.send?'. $get_params); } $data = json_decode(file_get_contents('php://input')); switch ($data->type) { case 'confirmation': echo $confirmation_token; break; case 'message_new': $message_text = $data -> object -> text; $chat_id = $data -> object -> peer_id; if ($message_text == ""){ vk_msg_send($chat_id, ",  ,    ."); } if ($message_text == ""){ vk_msg_send($chat_id, ".    - ,     ,    ."); } echo 'ok'; break; } ?> 

"Yah, mengapa kita harus menulis 'ok' setelah mengirim pesan?"

Karena kita akan menggunakan metode pembaruan yang disebut Call Back API, yaitu, VK akan berbicara tentang pesan baru kepada kita, kita perlu mengatakan bahwa kita mendengarnya, jika tidak maka akan diulangi kepada kita beberapa kali.

Sekarang mari kita beralih ke pengaturan grup.

Kami masuk ke pengaturan dan memilih API versi 5.87 (Anda tentu saja dapat memiliki versi yang lebih baru, tetapi lebih baik memiliki satu kesatuan versi API).

gambar

Dari bagian yang sama, kami mengambil baris yang harus dikembalikan oleh server, dan menggantinya dengan variabel confirm_token.

Setelah itu, isi alamat server. Untuk melakukan ini, Anda harus memiliki domain dan hosting. Alamat yang Anda tentukan hanya berupa file dengan bot. Saya harap pembaca dapat menangani ini sendiri.

Lalu kami memilih acara apa di komunitas yang akan dilaporkan kepada kami oleh VKontakte. Kami hanya perlu pesan masuk.

gambar

Selanjutnya, kami mengkonfirmasi alamat server, dan bot pertama kami siap digunakan.

gambar

Karena ini adalah publikasi pertama saya tentang Habré, saya ingin mendapatkan komentar pada artikel dan hanya meningkatkan lebih lanjut.

Terima kasih sudah membaca.

Source: https://habr.com/ru/post/id468531/


All Articles