Tự động đăng ký theo từ khóa trong bưu phẩm Gamayun trên VK và kiểm tra chức năng “bàn phím”. Cách hoạt động của API gọi lại và bàn phím

Chức năng mới cho bot VK - nút hoặc bàn phím trả lời nhanh.

QUAN TRỌNG! Phiên bản mới hơn của bài viết

Nhóm “người viết bot” của chúng tôi ngay lập tức quan tâm đến sự đổi mới này và bắt đầu nghiên cứu chính thức APIđể thông báo cho bạn và hiển thị cho bạn hướng dẫn chi tiết về cách tạo bot bằng bàn phím. Bài viết này sẽ tạo ra một bot, công việc mà bạn có thể thấy trong nhóm của chúng tôi Mẹo trò chơiở VK. Bạn cũng có thể tham gia cuộc trò chuyện cộng đồng trên VK, nơi họ có thể giúp bạn giải quyết vấn đề.

Tạo và thiết lập cộng đồng

Sau khi tạo cộng đồng trong VK, hãy đi theo đường dẫn sau:
“Quản lý cộng đồng” → “Tin nhắn” và kích hoạt các cuộc trò chuyện trong cộng đồng. Bây giờ, trong menu con “Cài đặt Bot”, hãy bật “Tính năng Bot” và nút “Bắt đầu”.

Chúng tôi sẽ viết bằng Callback api (gửi riêng từng hành động trong cộng đồng đến máy chủ). Vì vậy, nó cũng nên được cấu hình. Chúng ta hãy đi đến
“Quản lý cộng đồng” → “Làm việc với API”. Để bot hoạt động, bạn cần đăng ký khóa truy cập. Nhấp vào “Tạo khóa” và chọn các quyền truy cập cần thiết; bot này chỉ cần quyền đối với tin nhắn. Chúng tôi xác nhận số điện thoại và lưu khóa truy cập ở đâu đó. Bây giờ hãy chuyển đến tab API gọi lại. Chúng tôi đặt tên máy chủ của mình và chọn phiên bản API mới nhất (hiện tại là 5,80 và bot được trình bày bên dưới sẽ hoạt động 100% với nó). Trong tab “Loại yêu cầu”, chỉ chọn các tin nhắn đến.

Điều chỉnh máy chủ

Bây giờ bạn sẽ cần một máy chủ để lưu trữ bot của mình. Bạn có thể sử dụng các dịch vụ lưu trữ miễn phí như 000webhost.

Nếu bạn sử dụng dịch vụ lưu trữ giá rẻ/miễn phí thì rất có thể cURL sẽ bị vô hiệu hóa trên chúng (bạn sẽ không thể gửi tệp phương tiện bằng bot mà chỉ gửi văn bản) và không thể bật tính năng này. 000webhost ổn với điều này, bạn có thể sử dụng nó. Nếu bạn có máy chủ của riêng mình hoặc một máy chủ tốt đã mua thì bạn cần kết nối cURL để bot trong ví dụ của chúng tôi hoạt động đầy đủ.

Cách hoạt động của API gọi lại và bàn phím

Tôi sẽ cung cấp cho bạn một chuyến tham quan ngắn về cách mọi thứ hoạt động. API gọi lại gửi đến máy chủ của bạn bất kỳ sự kiện nào xảy ra trong nhóm dưới dạng JSON. Bạn có thể xem danh sách đầy đủ các sự kiện trong tab “API gọi lại” → “Loại sự kiện”. Đây là giao diện của yêu cầu JSON khi người dùng gửi tin nhắn, trong trường hợp này anh ta đã nhấp vào nút:

("type://message_new","object":("date":1529668584,"from_id":89846036,"id":1522,"out":1,"peer_id":89846036,"text">Vàng cá","conversation_message_id":305,"fwd_messages":,"important":false,"random_id":0,"attachments":,"payload://(\"animals\":\"Goldfish\")" ,"is_hidden":false),"group_id":101461081)

Có một số trường thú vị có thể được xử lý: id người dùng, văn bản tin nhắn (văn bản), tải trọng nút (tải trọng).

Tin nhắn được gửi đến người dùng bằng phương thức tin nhắn.send. Nếu bạn gửi một bàn phím, thì sau tất cả các tham số tiêu chuẩn, bạn thêm tham số bàn phím, chứa json của các nút, nó sẽ trông như thế này:

Bàn phím: ( "one_time": false, "buttons": [ [( "action": ("type": "text", "payload": "(\"button\": \"1\")", " label": "Đỏ", "color": "âm tính" ), ("hành động": ("type": "văn bản", "tải trọng": "(\"button\": \"2\)" , " label": "Xanh"), "màu": "tích cực" )]

Làm việc với thư viện

Để vận hành bot, chúng tôi sử dụng thư viện tự viết bằng PHP. (Nếu liên kết không hoạt động thì đây là kho lưu trữ) bạn có thể tìm tài liệu về thư viện và tải xuống chính thư viện đó. Dưới đây là danh sách ngắn các hàm tạo sẵn để viết bot, hãy tìm thêm chi tiết tại liên kết ở trên. Nếu bạn muốn biết về những thay đổi trong thư viện, hãy viết ít nhất một tin nhắn tới bot trên VK, thông qua đó chúng tôi sẽ thông báo cho bạn về những thay đổi.

$vk = new vk_api(vk_key, version_api) — khởi tạo bot. Tham số: khóa cộng đồng (vk_key), phiên bản API (version_api).

sendMessage(id, text) - chức năng gửi tin nhắn cho người dùng. Tham số: id người dùng(id), nội dung tin nhắn(văn bản).

sendImage(id, patch) - chức năng gửi hình ảnh. Tham số: id người dùng (id), đường dẫn đến hình ảnh (bản vá).

sendButton(id, text,buttons, one_time) - chức năng gửi tin nhắn bằng các nút. Tham số: id người dùng(id), văn bản tin nhắn (không được để trống)(văn bản), mảng có nút(nút), tham số tùy chọn one_time, sai theo mặc định, nếu được đặt thành true thì sau khi nhấn bất kỳ nút nào, bàn phím sẽ biến mất.

request(method, array_arguments) là một hàm phổ biến để làm việc với các phương thức. Tham số: phương thức - tên của phương thức từ api chính thức, array_arguments - mảng tham số.

sendOK() - Hàm beta. Được sử dụng thay cho tiếng vang “ok”, nó giúp ích trong trường hợp tập lệnh mất nhiều thời gian để chạy và bot bắt đầu lặp lại tin nhắn nhiều lần.
QUAN TRỌNG: Nếu bạn sử dụng chức năng này, bạn sẽ không thấy lỗi xuất ra. Khi debug thay bằng echo “ok”

Mã bot đầy đủ bằng PHP

Bây giờ chúng ta hãy chuyển sang phần mã, nơi hầu hết mọi dòng đều được nhận xét.
Mã này được hỗ trợ trên PHP 5.6+
Trong khối CONFIG, chỉ định khóa truy cập cộng đồng, khóa xác nhận máy chủ và phiên bản API bạn đã chọn.

"Cá"], "Có những loại nào?", "xanh"]; //Mã nút "Cá" const BTN_BACK = [["command" => "start"], "<< Назад", "red"]; // Код кнопки "<< Назад" const BTN_SALMON = [["animals" =>"Cá hồi hồng"], "Cá hồi hồng", "trắng"]; // Mã cho nút "Cá hồi hồng" const BTN_GOLDFISH = [["animals" => "Goldfish"], "Goldfish", "blue"]; // Mã cho nút "Cá vàng" const BTN_PLOTVA = [["animals" => "Plotva"], "Roach", "green"]; // Mã cho nút "Roach" $vk = new vk_api(VK_KEY, VERSION); // tạo một thể hiện của một lớp để làm việc với api, chấp nhận khóa và phiên bản api $data = json_decode(file_get_contents("php://input")); //Nhận và giải mã JSON đến từ VK if ($data->type == "confirmation") ( //Nếu vk yêu cầu một key exit(ACCESS_KEY); //Hoàn thành tập lệnh bằng cách gửi key) $vk-> gửiOK(); //Nói với vk rằng chúng tôi đã chấp nhận lệnh gọi lại if (isset($data->type) và $data->type == "message_new") ( // Kiểm tra xem tin nhắn này có phải từ người dùng $id = $data->object - >from_id; //Lấy id của người dùng đã viết tin nhắn $message = $data->object->text; if (isset($data->object->peer_id)) $peer_id = $data->object ->peer_id; // Lấy ngang hàng của cuộc trò chuyện nơi có tin nhắn đến từ else $peer_id = $id; if (isset($data->object->payload))( //lấy tải trọng $payload = json_decode($ data->object->payload, True ); ) else ( $payload = null; ) if (isset($payload["command"]) hoặc mb_strtower($message) == "start") ( //Nếu bắt đầu nút được nhấn hoặc<< назад $vk->sendButton($peer_id, "Bạn có muốn xem cá không?", []); // Gửi nút cho người dùng ) else ( if ($payload != null) ( // nếu tải trọng tồn tại switch ($payload["animals"]) ( //Xem có gì trong trường hợp nút tải trọng "Cá": //Nếu đây là Cá $vk->sendButton($peer_id, "Đây là những cái bạn chọn", [ // Gửi nút cho người dùng, ]); trường hợp "Pink_salmon": //Nếu đây là Cá hồi hồng $vk->sendMessage($peer_id, "Hãy giữ cá hồi hồng của bạn!"); // gửi tin nhắn $vk->sendImage($peer_id, "img/pink_salmon.jpg"); Goldfish": //Nếu đây là Cá vàng $vk->sendMessage( $peer_id, "Cô ấy sẽ thực hiện mong muốn của bạn..."); $vk->sendImage($peer_id, "img/goldfish.jpg"); break ; case "Plotva": //Nếu đây là Roach $vk->sendMessage( $peer_id, "Ồ, có vẻ như hình ảnh đã bị nhầm lẫn)"); $vk->sendImage($peer_id, "img/plotva. jpg"); ngắt;

Bây giờ bạn đã biết cách mã hoạt động và bạn có thể tùy chỉnh nó cho phù hợp với mình.

Hãy bắt đầu!

Tải tập lệnh và thư viện của bạn lên máy chủ. Bây giờ hãy chuyển đến tab API gọi lại trong cài đặt, nhập đường dẫn đến tập lệnh của bạn vào trường địa chỉ và nhấp vào xác nhận. Nếu bạn đã làm mọi thứ chính xác, dấu kiểm màu xanh lục sẽ xuất hiện bên cạnh địa chỉ.

Câu hỏi thường gặp:

Câu hỏi: Không có gì hiệu quả cả!
Trả lời: Vậy là họ đã nhầm lẫn ở đâu đó. Đọc lại bài viết một cách cẩn thận một lần nữa và kiểm tra xem bạn đã làm mọi thứ chưa. Bất kỳ bước nào sang trái đều có thể dẫn đến lỗi...

Câu hỏi: Mọi thứ đều ổn với tôi, nhưng hình ảnh không được gửi.
Trả lời: Kiểm tra xem bạn đã thêm thư mục img có hình ảnh chưa. Ngoài ra, bạn có thể đang sử dụng máy chủ không hỗ trợ cURL.

Câu hỏi: Tôi đã thay đổi phiên bản thành 5.78 hoặc bất kỳ phiên bản nào khác. Không có gì hiệu quả với tôi.
Trả lời: Bạn có thể tự chịu rủi ro khi sử dụng các phiên bản api khác ngoài 5,80. Ví dụ: trên phiên bản 5.78, các tên biến khác nhau đến từ VK (ví dụ: thay vì đối tượng-> văn bản thì có đối tượng-> nội dung), do đó tập lệnh bị lỗi. Tìm kiếm tất cả các thay đổi api

Mạng xã hội VKontakte vừa giới thiệu khả năng kết nối bàn phím với chatbot nhằm đơn giản hóa việc điều hướng và tăng tốc độ giao tiếp với người đăng ký. Bây giờ người dùng có thể chọn một trong các tùy chọn tương tác đặt trước và đặt câu hỏi - và bot sẽ quay lại với câu trả lời.

Làm cách nào để kích hoạt một chức năng mới?

Để các nút hoạt động, bạn phải nhấp vào “Bật API cho bot” trong cài đặt thông báo cộng đồng. Đội VKontakte phát hành tài liệu chi tiết về chức năng này.

Tìm ở đâu?

Các nút mới có thể được kiểm tra:

  • trong cộng đồng Câu lạc bộ hài kịch chính thức;
  • với bot Maxim, giúp chuyển văn bản thành tin nhắn âm thanh;
  • với Callback API Bot theo dõi các cập nhật trong các cộng đồng được chọn.

Điều gì sẽ xảy ra trong các bản cập nhật tiếp theo của VKontakte?

Các nhà phát triển hứa hẹn sẽ sớm bổ sung hỗ trợ cho chatbot trong các cuộc trò chuyện. Được biết, bất kỳ chức năng nào của chúng đều có thể được sử dụng mà không làm gián đoạn cuộc đối thoại và không cần chuyển tiếp tin nhắn bot cho bạn bè.

Chatbots đang trở nên phổ biến đối với người dùng tin nhắn tức thời vì khả năng truy cập và dễ tương tác. Một công ty công nghệ khác của Nga là Just AI vào cuối tháng 5 năm 2018, một nhà thiết kế các bot trò chuyện nhúng có thể hiểu ngôn ngữ tự nhiên. Và những ai muốn tạo bot cho VKontakte của riêng mình có thể làm quen.

Trên VKontakte, để thuận tiện, bạn có thể sử dụng các tổ hợp phím đặc biệt - phím nóng - để gửi tin nhắn, xem video, ảnh, xuất bản bài đăng, v.v. Hãy xem những tổ hợp phím nào được sử dụng thường xuyên nhất.

Khi gửi tin nhắn

Để di chuyển đến một dòng mới trong trường văn bản, hãy sử dụng tổ hợp.

Để gửi tin nhắn đến người nhận, bạn cần sử dụng phím Đi vào.

Hoặc bằng cách nhấp vào mũi tên bên phải, chọn tổ hợp phím khác:

- gửi tin nhắn


Đi vào- để ngắt một dòng

Khi đăng lên tường

Để chuyển đến một dòng mới trong một bài đăng hoặc trong một bình luận cho một bài đăng, hãy sử dụng phím Đi vào.

Để đăng một bài viết hoặc để lại bình luận về nó, hãy sử dụng hoặc.

Khi chuyển đổi giữa các hộp thoại

Để quản lý hội thoại trên VKontakte dễ dàng hơn, có tùy chọn sử dụng phím tắt Ctrl+số(từ 1 đến 0).


Ở bên phải có một cửa sổ thư từ cá nhân, bạn có thể thay đổi dễ dàng. Số lượng hội thoại tối đa được giới hạn là mười. Để viết cho người dùng khác, hãy chọn đoạn hội thoại bằng chuột.

Khi xem ảnh

Để xem hình ảnh thuận tiện hơn, bạn có thể sử dụng chế độ toàn màn hình. Để thực hiện việc này, hãy chọn tổ hợp phím Alt+Enter hoặc Ctrl + Enter .

Alt+Enter hoặc Thoát .


Khi xem một video

Tua lại video bằng các phím mũi tên. Các đoạn tua lại dài khoảng bảy giây.

Nhấn phím cách sẽ tạm dừng video hoặc tiếp tục phát video đó.

Để thoát khỏi chế độ toàn màn hình, hãy sử dụng Alt+Enter hoặc Thoát.

Khi cuộn trang

Để cuộn trang xuống, hãy sử dụng Trang dưới hoặc Kết thúc .


Để cuộn trang lên - Trang lên hoặc Trang chủ .


Tìm hiểu thêm về tính năng này

Đây không gì khác hơn là một chatbot. Để tự động hóa hoạt động của các nút, chúng cần được liên kết với đăng ký bản tin dựa trên từ khóa. Chỉ định một từ khóa (hoặc cụm từ) trên nút, sau đó khi bạn nhấp vào nó, bạn sẽ tự động đăng ký nhận bản tin và gửi tin nhắn. Hoặc một hành động khác mà bạn chỉ định trong kênh tự động.

Tôi đã làm điều đó như thế nào?

Trước đây, tôi đã tạo một chủ đề mới để đăng ký các bài học miễn phí và trong cài đặt, tôi đặt cụm từ khóa để đăng ký nhận bản tin này - “Tôi muốn các bài học”.

Khi một người nhập cụm từ khóa này vào cuộc đối thoại với cộng đồng của tôi, anh ta sẽ tự động đăng ký nhận bản tin (chủ đề) này và nhận bài học. Những bài học này sẽ xuất hiện ngay trong tin nhắn gửi thư tự động đầu tiên. Sau đó, sau 2 ngày, một tin nhắn thứ hai đến, trong đó tôi hỏi liệu người đó đã xem qua các bài học chưa, họ thích chúng như thế nào, nếu có bất kỳ câu hỏi nào, đồng thời đề nghị nhận toàn bộ khóa học và một món quà bổ sung với mức chiết khấu. Tin nhắn tự động tới Gamayun được định cấu hình trong phần “Kênh tự động”. Tôi đã viết thêm về kênh tự động

Trên một trang, tôi viết dòng chữ “Không, cảm ơn” - nếu một người đăng ký nhấp vào nút này, thì tôi thấy trong tin nhắn cộng đồng rằng anh ta không quan tâm.

Nếu một người nhấp vào nút “Tôi muốn học”, anh ta sẽ tự động đăng ký các bài học và ngay lập tức nhận được tin nhắn có liên kết. Và tôi đã phân khúc những người quan tâm rồi sử dụng kênh tự động.

Hiện tại, chức năng bàn phím chỉ khả dụng khi gửi bản tin theo cách thủ công nhưng họ hứa sẽ sớm triển khai chức năng này trong các kênh tự động.

Dựa trên kết quả kiểm tra

Về nguyên tắc, mọi thứ đều ổn, đúng như tôi dự định. Có một số trục trặc - khi người dùng nhấp vào nút “Tôi muốn học”, thông báo kèm theo các bài học được gửi đến với độ trễ đôi chút, ở một số nơi nhanh hơn, ở những nơi khác lâu hơn.

Khi một người nhấp vào nút “Không, cảm ơn”, tôi thấy thông báo này trong các cuộc đối thoại cộng đồng của mình và xem qua hồ sơ của những người này. Một số người đơn giản là không quan tâm đến chủ đề này, nhưng người đó đã trở thành mục tiêu. Cũng có một số người mà tôi thấy trong hồ sơ của họ rằng về cơ bản chúng tôi không đi chung đường - và tôi đã hủy theo dõi họ để không làm phiền tôi với những bức thư của mình.

Nếu một người đã không mở cuộc trò chuyện trong một thời gian dài và tôi đã gửi được các tin nhắn khác trong thời gian này thì bàn phím sẽ tiếp tục treo bên dưới cuộc trò chuyện cho đến khi bạn nhấp vào cuộc trò chuyện đó (điều quan trọng là phải chọn hộp “Ẩn khi nhấn” hộp kiểm trong cài đặt bàn phím). Do đó, thông báo đã tăng cao hơn và không phải ai cũng hiểu chính xác những nút này ám chỉ điều gì

Nhìn chung, chức năng này hoạt động như bình thường - bàn phím thực hiện chức năng của bot trò chuyện và đăng ký bằng cách sử dụng cụm từ khóa, từ đó cho phép bạn phân khúc đối tượng đang hoạt động và tạo chuỗi tự động được nhắm mục tiêu nhiều hơn theo sở thích của mọi người.

Chúng ta hãy xem từng bước cách thiết lập đăng ký khóa và liên kết nó với bàn phím

Đầu tiên, hãy tạo chủ đề đăng ký và thêm cụm từ khóa(đây có thể là một từ) để đăng ký tự động. Để thực hiện việc này, hãy truy cập ứng dụng Gamayun thông qua nút trong nhóm, chuyển đến tab “Mailouts” - “Chủ đề”. Nhấp vào “Tạo chủ đề”.

Nêu tiêu đề và mô tả của chủ đề. Ví dụ tôi sẽ tạo chủ đề “Quà tặng cho hoạt động”.

Chủ đề đã tạo có thể được ẩn trong ứng dụng bản tin. Sau đó, họ sẽ chỉ có thể đăng ký nó bằng từ khóa hoặc liên kết mà bạn cung cấp. Để ẩn khả năng hiển thị, hãy nhấp vào biểu tượng con mắt và nó sẽ bị gạch chéo.

Bạn cũng có thể thêm từ khóa để tự động đăng ký vào một chủ đề đã tạo trước đó bằng cách chỉ cần nhấp vào bút chì để chỉnh sửa nó.

Bây giờ là chủ đề mới được tạo Hãy đặt tin nhắn tự động đầu tiên sau khi đăng ký. Vì vậy, khi bạn bấm vào nút – Tôi muốn một món quà, người đó sẽ nhận được ngay món quà này. Việc này được thực hiện trong tab “Kênh tự động”.

Trong trường đầu tiên, chọn chủ đề đã tạo, sau đó nhấp vào “Tạo tập lệnh”.

Bấm vào bút chì để chỉnh sửa khối.

Chúng ta tạo một hành động mới trong khối – Gửi tin nhắn.

Chúng tôi đang viết tin nhắn của chúng tôi. Ví dụ, đối với tôi đây sẽ là một liên kết đến một món quà. Bạn có thể chèn biến tên người đăng ký vào tin nhắn để cá nhân hóa tin nhắn. Nhấp vào để lưu".

Theo cách tương tự, bạn có thể tiếp tục chuỗi tin nhắn tự động, tạo các khối mới và liên kết chúng lại với nhau. Để liên lạc, bạn cần đi tới khối trước đó, thêm hành động “Cuộc gọi bị trì hoãn” và cho biết sau thời gian nào khối (hành động) tiếp theo trong kênh sẽ được thực thi.

Bây giờ hãy liên kết từ khóa của chúng tôi với bàn phím và kiểm tra đăng ký tự động.

Chúng tôi chọn chủ đề (nhóm người đăng ký) mà chúng tôi muốn gửi bản tin. Bạn có thể chọn nhiều chủ đề cùng một lúc. Nếu bạn không chọn một bản tin, bản tin sẽ được gửi đến tất cả những người đăng ký của bạn. Ví dụ: tôi chọn một nhóm thử nghiệm do tôi tạo hoàn toàn cho chính mình, trong đó tôi là người đăng ký duy nhất. Tôi cũng khuyên bạn nên làm điều này để thử nghiệm ban đầu.

Tôi đang viết một tin nhắn đề nghị nhận một món quà.

Nhân tiện, một tính năng mới khác là khả năng tắt tính năng xem trước liên kết (nghĩa là hình ảnh được kéo lên bởi một liên kết trong tin nhắn). Điều này không phải lúc nào cũng phù hợp. Điều này được giới thiệu vì khi thêm liên kết hủy đăng ký, một hình ảnh có thể nhấp vào sẽ được kéo lên, thu hút mọi sự chú ý. Điều này bây giờ có thể bị vô hiệu hóa.

Ở đây, điều quan trọng là phải theo liên kết được nêu trong mẹo lần đầu tiên và bật khả năng của bot trong cài đặt, nếu không bàn phím sẽ không hoạt động!

Đồng thời chọn hộp kiểm “Ẩn bàn phím khi nhấn” - điều này có nghĩa là khi bạn nhấp vào nút, nó sẽ biến mất.

Bạn có thể thêm một hoặc nhiều nút bằng cách nhấp vào dấu cộng. Để thay đổi màu của nút và dòng chữ trên đó, chỉ cần nhấp chuột vào nút đó.

Ví dụ: tôi sẽ tạo hai nút - xanh lam và xanh lục. Trên một mặt, tôi sẽ viết cụm từ khóa “Tôi muốn một món quà”, và trên mặt thứ hai “Không, cảm ơn” (xét cho cùng, luôn phải có một sự lựa chọn).

Đây là giao diện của tin nhắn này với bàn phím trong tin nhắn cá nhân của người đăng ký.

Tôi bấm vào nút “Tôi muốn nhận quà” và nhận ngay. Nghĩa là, việc tự động đăng ký chủ đề đã xảy ra và kênh đã được kích hoạt. Đó là cách nó hoạt động.

Nhân tiện, điều này có thể được sử dụng theo cách này - ví dụ: chúng tôi đăng ký một bản tin và hủy đăng ký một bản tin khác. Để thực hiện việc này, chỉ cần thêm hành động tương ứng vào khối đầu tiên của kênh tự động.

Bạn cũng có thể thêm một số nút (4-5) để phân khúc người đăng ký thành các chủ đề khác nhau (theo sở thích của họ). Tức là thực hiện một cuộc khảo sát...

Bạn có thể xem bài học trực quan cho bài viết:

Cảm ơn bạn đã quan tâm và tôi sẽ rất vui khi thấy ý kiến ​​​​của bạn!

Trân trọng, Victoria Karpova