Добавить ботов в группу вконтакте. Как сделать бота в группы вк для сообщений

По многочисленным просьбам, которыми я был засыпан после — рассказываю пошаговую инструкцию создания бота для Вконтакте, который может отвечать человекоподобными сообщениями в личных сообщениях.

Шаг 1

Создаем профиль на iii.ru

Видим кнопку «Создать инфа» — она перебросит вас на страницу регистрации

Проходим элементарную регистрацию (можно войти через одну из трех социалок на выбор)

У вас будет немного другой интерфейс, но это сейчас не суть. Вам нужно будет создать «инфа» и получить его уникальный идентификатор

Так выглядит уникальный идентификатор (все, что идет после iii.ru/inf/)

Шаг 2

Скачиваем программу с сайта qsme.ru (название программы банально до невозможного «Бот»). Есть версии под Windows, Linux и MacOS. Перед установкой программы нужно убедиться, что у вас стоит Java Runtime Environment, так как без него программа даже не запустится (скачать последний JRE можно , если что). После того, как вы установили JRE и установили программу «Бот» — «софтина» запросит у вас ключ. Не бойтесь — полный функционал программы доступен бесплатно. Все, что нужно сделать — запросить ключ на почту и после получения ввести его в поле, которое появляется после загрузки программы. Программа позволит вам использовать один профиль любой из возможных социалок, с которыми работает Qsme «Бот» (Одноклассники, Мамба, Вконтакте и LovePlanet).

В нашем случае это Вконтакте 🙂

Шаг 3

Назначение заданий — это самый важный шаг, после которого ваш бот «заговорит». 🙂 Необходимо найти кнопку «Настроить задания», которая находится прямо на новосозданной анкете и настроить приблизительно так, как вы видите на скриншоте ниже.

Приблизительные настройки задания для анкеты

Остальные настройки, как говорится, по вашему вкусу. 😉

Финита ля комедиа

Собственно говоря — это все, но есть еще несколько мелких деталей. Во-первых напомню, что своего бота вы можете «кастомизировать» и «модифицировать» так, как вашей душеньке угодно. Научив его отвечать на сообщения так, как хочется вам. Ну или может быть вы филолог и хотите наловчиться в семантических связях или что-то еще. В любом случае — это уже совершенно другая история. О кастомизации я раскажу несколько позже.

Продолжаем цикл статей посвященный написанию чат-ботов для социальных сетей на php. Прошлый раз мы создавали бота для Телеграм, а в этот раз я расскажу как сделать аналогичного бота для ВКонтакте. Забегая вперед скажу, что сегодня мы не будем использовать ВКшный PHP SDK и наш бот будет состоять лишь из одного файла (про SDK поговорим в другой раз).

Также, как и в случае с Телеграмм ботом нам потребуются минимальные навыки программирования на php, хостинг и ssl сертификат. Готовы? Приступим!

Что будет уметь наш бот?

Возможности бота ограничены лишь фантазией программиста (благо api вк многое позволяет), поэтому для примера наш бот будет уметь лишь самое простое, а именно:

  1. Отправлять уведомления при вступлении в сообщество;
  2. Отвечать в случае если пользователь отправил ЛС в чат группы;
  3. Отправлять уведомление в момент когда пользователь покидает группу.

Начинаем создавать бота

Прежде чем начнем писать код, создадим ключи доступа для нашего бота. Для этого перейдем в Управление сообществом, выберем справа «Работа с API» и нажмем на «Создать ключ».

Во всплывающем окне отметим галочками права доступа. В нашем случае достаточно лишь поставить галочку напротив пункта «Разрешить приложению доступ к сообщениям сообщества «, но имейте ввиду, что для более крутых ботов стоит ставить галки напротив всех пунктов сразу. Подтвердим действие нажатием по кнопке «Создать».

Теперь перейдем во вкладку Callback API->Настройки сервера. Здесь нас интересуют сразу 3 вещи: Адрес, Строка, которую должен вернуть сервер и Секретный ключ. Адрес пока пропустим (в целом вы можете сразу его заполнить если определились с тем, где будет лежать основной файл нашего php-бота, но поскольку сам файл еще не создан, то ВК будет ругаться, ибо сразу после ввода url соцсеть отправляет POST-запрос на проверку доступности бота по указанному адресу). Скопируем значение напротив «Строка, которую должен вернуть сервер» (confirmationToken). (в нашем случае это tt32e1 . Придумает Секретный ключ (secretKey). Не забываем нажать «Сохранить».

Итак, на выходе у нас должны быть где-то записаны 3 вещи:

  1. confirmationToken
  2. token
  3. secretKey

Теперь можно приступить к написанию php кода.

Как создать бота в ВК (кодинг на php)

Начинаем писать файл нашего бота ВКонтакте. Назовем его vk_bot.php. Напомню, что код необходимо писать в кодировке UTF-8 (без BOOM).

Определимся с константами:

if (!isset($_REQUEST)) {return;}
// Строка, которую должен вернуть сервер (См. Callback API->Настройки сервера)
$confirmationToken = "tt32e1";
// Ключ доступа сообщества (длинная строчка которую получили нажав "создать ключ")
$token = "тутбудетмногобуквицифр";
// Секретный ключ. (Задаем в Callback API->Настройки сервера)
$secretKey = "testKeyMyBot";

Теперь проверим поступившие данные:

// Получаем и декодируем уведомление
$data = json_decode(file_get_contents("php://input"));
// проверяем secretKey
if (strcmp($data->secret, $secretKey) !== 0 && strcmp($data->type, "confirmation") !== 0) {return;}

Используя switch проверим, что находится в поле «type» (какое событие сработало и в зависимости от этого сформируем ответ).

// Проверяем, что находится в поле "type"
switch ($data->type) {
// Запрос для подтверждения адреса сервера (посылает ВК)
case "confirmation":
echo $confirmationToken; // отправляем строку для подтверждения адреса
break;
// Если это уведомление о новом сообщении...
case "message_new":

$userId = $data->object->user_id;



$user_name = $userInfo->response->first_name;

$request_params = array(
"message" => "{$user_name}, Ваше сообщение получено!
В ближайшее время админ группы на него ответит.",
"user_id" => $userId,
"access_token" => $token,
"v" => "5.0"
);



break;
}

Небольшое пояснение:

Когда юзер отправляет сообщение в чат с группой срабатывает событие. Событие представляет собой JSON, имеющий следующую структуру:

{«type»: <тип события>, «object»: <объект, инициировавший событие>, «group_id»: }

В зависимости от того, что нам пришло в type, мы можем понять, какая структура будет у объекта object. Полный список возможных событий см. в официальной справке ВКонтакте.

Итак, на данный момент мы научили нашего бота 2-м вещам: корректно отвечать роботу ВК на проверочный запрос, а также автоматически отправлять пользователю уведомление в случае, если он отправит любой текст.

Теперь можно закачать наш с вами файл на сервер и заполнить в настройках адрес (если не сделали этого ранее).

Кроме этого необходимо перейти во вкладку «Типы событий» и поставить галочку напротив «Входящие сообщения».

Теперь можем проверить работу:

Как видим - все пашет. По сути у нас уже получилось сделать бота в вк. Давайте его немного прокачаем.

Добавим в конструкцию case еще 2 условия. Первое - отправит уведомлений в случае если человек вступил в нашу группу:

// Сработало событие - человек вступил в группу
case "group_join":
// получаем id автора сообщения
$userId = $data->object->user_id;
// через users.get получаем данные об авторе
$userInfo = json_decode(file_get_contents("https://api.vk.com/method/users.get?user_ids={$userId}&v=5.0"));
// Вытаскиваем имя отправителя
$user_name = $userInfo->response->first_name;
// Через messages.send используя токен сообщества отправляем ответ
$request_params = array(
"message" => "Добро пожаловать в группу, {$user_name}!",
"user_id" => $userId,
"access_token" => $token,
"v" => "5.0"
);
$get_params = http_build_query($request_params);
file_get_contents("https://api.vk.com/method/messages.send?". $get_params);
echo("ok"); // Возвращаем "ok" серверу Callback API
break;

Второе - аналогичное уведомление, но только в момент, когда человек покинет сообщество:

// Сработало событие - человек покинул группу
case "group_leave":
// получаем id автора сообщения
$userId = $data->object->user_id;
// через users.get получаем данные об авторе
$userInfo = json_decode(file_get_contents("https://api.vk.com/method/users.get?user_ids={$userId}&v=5.0"));
// Вытаскиваем имя отправителя
$user_name = $userInfo->response->first_name;
// Через messages.send используя токен сообщества отправляем ответ
$request_params = array(
"message" => "{$user_name}, нам очень жаль, что вы покинули нашу группу!",
"user_id" => $userId,
"access_token" => $token,
"v" => "5.0"
);
$get_params = http_build_query($request_params);
file_get_contents("https://api.vk.com/method/messages.send?". $get_params);
echo("ok"); // Возвращаем "ok" серверу Callback API
break;

Не забудем добавить соответсвтующие галочки напротив нужных нам событий в настройках группы:

Чего нельзя делать ботам

Не лишним будет процитировать один из разделов справки ВК:

Теперь вы знаете как создавать своего бота в ВК. Исходники урока можно скачать тут. В следующий раз поговорим о работе с PHP SDK для вк-ботов. Если у вас остались вопросы - задавайте в комментах. И не забываем репостить и лайкать эту статью)

Для ведения бизнеса во ВКонтакте немаловажную роль играет общение с аудиторией. Ответы на часто задаваемые вопросы, информирование клиентов, прием заявок и просто общение – все это требует большого количества свободного времени. Но оно есть далеко не у каждого руководителя сообщества. Что делать? – Спросите вы. Ответ прост – использовать бота для сообщений.

В сегодняшнем материале будет рассмотрена тема ботов в ВК, способных общаться с людьми, информировать их и тем самым облегчать работу админов.

В чем особенность использования ботов для сообщений?

Боты для сообщений (или автоответчики) – это уникальные помощники, задача которых состоит в отправке грамотных ответов на входящие сообщения. И чем естественнее робот умеет общаться, тем более востребован он будет.

Боты для сообщений в ВК используются не только руководителями бизнесов. Они также пользуются спросом и среди обычных пользователей. Например, для развлечения.

Особенности:

  • Автоматизация. От вас требуется лишь качественная настройка. Бот будет самостоятельно анализировать присланное сообщение, подбирать фразы и отвечать.
  • Индивидуальность. Сегодня есть большое количество сервисов, позволяющих создать своего уникального робота и наделить его теми возможностями, которые нужны именно вашему проекту.
  • Высокая эффективность. Бот будет работать 24 часа в сутки, 7 дней в неделю. Он будет отвечать пользователям мгновенно и без промедления.
  • Низкая стоимость. Куда дешевле создать и использовать программу, чем нанимать отдельного человека.

В основу каждого бота входит код, который и отвечает за его функционал и возможности. Чем более проработана программа, тем больше она умеет. Зачастую, выбирая роботизированного собеседника, люди смотрят именно на его возможности и настройки.

Сегодня для многих недостаточно, чтобы бот просто одинаково отвечал всем подряд. Люди жалеют завести такого помощника, который будет общаться, как вполне живой человек. И сегодня это возможно.

Лучшие боты для сообщений ВК

Ниже вашему вниманию будут представлены наиболее популярные боты для сообщений во ВКонтакте.


Онлайн сервис по созданию роботизированных собеседников для ВК. Сервис стал очень популярным, как среди бизнес сообществ, так и среди групп и пабликов для развлечений.

РобоЧат умеет:

  • автоматически отвечать на любые сообщения пользователей;
  • собирать заявки;
  • выдавать купоны и скидки;
  • делать массовые рассылки;
  • проводить тесты;
  • вести потенциальных клиентов по воронке продаж.

Кроме того здесь есть множество полезных функций и инструментов для более качественной настройки автоответчика: ключевые слова, вложения фото/видео, макросы, плагины, таргетинговые сообщения и т.д. Все это позволяет сделать бота более «живым» и максимально полезным.

Чтобы воспользоваться РобоЧатом нужно проделать несколько шагов:

  1. Зайти на сайт сервиса https://robochat.io и зарегистрироваться.
  2. Авторизоваться и привязать сообщества.
  3. Настроить бота или выбрать готовые шаблоны.
  4. Запустить.

Сервис позволит создать робота, работающего сразу с несколькими группами, что очень удобно, когда у вас не одно, а несколько сообществ.

Стоимость сервиса начинается от 399 руб./мес. (если до 100 тыс. подписчиков) и заканчивается 1999 руб./мес. (при любом числе подписчиков). Есть также бесплатная версия (если аудитория до 50 тыс.) и пробная 3-хдневная версия для любого тарифа.


Еще один довольно популярный конструктор ботов для сообщений во ВКонтакте. Сервис специализируется на создании ботов и текстовых рассылок от имени сообщества. С его помощью можно создать уникального помощника, который будет уметь:

  • общаться, как живой человек (чат с ботом, анонимный чат);
  • информировать клиентов и подписчиков (погода, калькулятор, поиск в Википедии, случайные факты);
  • развлекать аудиторию (цитаты, эффекты, сигны, случайные шутки);
  • управлять сообществом (антимат, команды администратора, реакция на медиавложения);
  • рассылать сообщения всем, с кем открыт диалог;
  • выгружать базы ID;
  • добавлять особо надоедливых в ЧС.

Как настроить робота:

  1. Войти на сайт https://bot-vk.ru и авторизоваться.
  2. Выбрать сообщество.
  3. Настроить функционал бота или выбрать готовые решения (шаблоны).
  4. Запустить бота и наблюдать за его работой.

Стоимость сервиса – 100 руб./мес. за группу и 500 руб. единожды за использование модуля рассылки. Есть также и бесплатный пробный период на 3 дня.


Это многофункциональная программа для продвижения социальных сетей и медиа. Одной из функций БроБота является автоответчик (или бот для сообщений), который работает в 6-ти соц. сетях, в число которых входит и «ВКонтакте».

Возможности автоответчика в ВК:

  • автоматический ответ на любые сообщения (при желании можно ответить вручную);
  • ответы по ключевым словам;
  • прикрепление медиа файлов (фотографий, видеозаписей);
  • интеграция с сервисом iii.ru (обучите там бота и используйте его);
  • поддержка синонимов;
  • скрипты на JavaScripts;
  • готовые шаблоны;
  • возможность отвечать в беседах.

Как воспользоваться программой:

  1. Скачать с сайта и установить на свой ПК.
  2. Авторизоваться и привязать аккаунты ВК.
  3. Назначить анкетам задачи (выбрать наиболее подходящий вариант переписки).
  4. Настроить задачу.
  5. Запустить программу.

Сервис сразу же начнет отвечать на входящие сообщения, в зависимости от выбранного вами способа переписки.

Стоимость сервиса – от 599 руб./мес. (за 10 анкет) до 1799 руб./мес. (за неограниченное число анкет). Если вы используете одну анкету, вы можете пользоваться БроБотом бесплатно (полный функционал).


Это удобный бот для сообщений во ВКонтакте, имеющий большое количество шаблонов и готовых решений для общения с аудиторией. При желании вы также можете настроить бота вручную.

Что умеет BOTiX:

  • Автоматически отвечать на любые сообщения пользователей;
  • Приветствовать новых участников группы или паблика;
  • Следить за комментариями на стене (фильтры по ключевым словам, антимат);
  • Переписываться сразу с нескольких аккаунтов и многое другое.

Воспользоваться роботом очень просто:

  1. Скачайте его на сайте и установите на свой ПК.
  2. Авторизуйтесь и добавьте аккаунты.
  3. Перейдите в раздел «Автоответчик» и настройте бота. Можно добавить готовые шаблоны или настроить вручную.
  4. Запустите программу.

Стоимость сервиса – 50-100 руб./мес. Также есть и бесплатная пробная версия с ограниченным функционалом.

Плюсы и минусы

Роботизированные собеседники для общения во ВКонтакте обладают рядом преимуществ и недостатков. Давайте поговорим о них.

К плюсам можно отнести:

  • полная автоматизация процесса. Вам нужно лишь правильно настроить бота;
  • экономия личного времени;
  • программа работает круглые сутки без перерыва и отвечает без промедления;
  • возможность глубокой проработки автоответчиков, чтобы те общались как живые люди;
  • большой выбор сервисов;
  • низкая стоимость.

К минусам можно отнести:

  • необходимы определенные знания о ЦА, чтобы правильно настроить общение по ключам;
  • при недостаточной проработке, люди будут видеть, что с ними общается робот. Это отталкивает.

Итог

Боты для сообщений во ВКонтакте завоевали большую популярность среди владельцев сообществ. При грамотном и правильном использовании, данный софт сделает жизнь паблика интереснее и поспособствует увеличению продаж. Используйте ботов с умом!

К сожалению, на данный момент нет хороших библиотек на Python2, для того, чтобы быстро создать чат-бота. Ниже я покажу, как легко можно написать примитивного чат бота для VK, используя API VK.


Статья написана для новичков, чтобы показать, что ничего сложного в написании ботов на Python нет.

Авторизация

Нам понадобится библиотека vk_api . Авторизоваться в вк можно двумя способами:
- Как пользователь
- Как сообщество


В первом случае надо будет ввести логин и пароль. Во втором случае в группе надо включить "Сообщения сообщества" и создать ключ доступа к API:





import time import vk_api vk = vk_api.VkApi(login = "login", password = "password") #vk_api.VkApi(token = "a02d...e83fd") #Авторизоваться как сообщество vk.auth()

Отправка сообщений

Теперь напишем короткую функцию, которая отправляет сообщение выбранному человеку.


P.S. Сообщество может отправлять сообщения только ранее писавшим пользователям.


def write_msg(user_id, s): vk.method("messages.send", {"user_id":user_id,"message":s})

В vk.method мы можем вызывать любой метод из VK API и передавать параметры в виде словаря.


В данном случае мы вызываем метод messages.send и в качестве параметров передаем id пользователя и текст сообщения.

Прием сообщений

Отлично! Отправлять сообщения мы научились, осталось научиться их принимать. Для этого нам нужен метод messages.get .


Несколько параметров, на которые стоит обратить внимание:


1) out - если этот параметр равен 1, сервер вернет исходящие сообщения.
2) count - количество сообщений, которое необходимо получить.
3) time_offset - максимальное время, прошедшее с момента отправки сообщения до текущего момента в секундах.
4) last_message_id - идентификатор сообщения, полученного перед тем, которое нужно вернуть последним (при условии, что после него было получено не более count сообщений)


values = {"out": 0,"count": 100,"time_offset": 60} vk.method("messages.get", values)

В нашем случае этот метод вернет все полученные сообщения за последние 60 сек, если их конечно было меньше 100, а если больше, то последние 100.


В итоге мы получаем список items:


{u"count": 3441, u"items": [{u"body": u"\u041f\u0438\u0448\u0435\u043c \u0431\u043e\u0442\u0430 \u0434\u043b\u044f \u0432\u043a!", u"date": 1491934484, u"id": 7387, u"out": 0, u"read_state": 0, u"title": u" ... ", u"user_id": 23107592}, {u"body": u"\u041f\u0440\u0438\u0432\u0435\u0442 \u0425\u0430\u0431\u0440!", u"date": 1491934479, u"id": 7386, u"out": 0, u"read_state": 0, u"title": u" ... ", u"user_id": 23107592}]}

Если объяснять простыми словами, то items - это то, что можно выделить в диалоге.



Финальный аккорд, делаем вечный цикл, где на каждое сообщение будем отвечать "Привет, Хабр!".


while True: response = vk.method("messages.get", values) if response["items"]: values["last_message_id"] = response["items"]["id"] for item in response["items"]: write_msg(item,u"Привет, Хабр!") time.sleep(1)

Чат-бот готов.


P.S. Мы запоминаем параметр last_message_id, чтобы в следующий раз обрабатывать только новые сообщения.


Полный код

# -*- coding: utf-8 -*- import time import vk_api vk = vk_api.VkApi(login = "login", password = "password") #vk_api.VkApi(token = "a02d...e83fd") #Авторизоваться как сообщество vk.auth() values = {"out": 0,"count": 100,"time_offset": 60} def write_msg(user_id, s): vk.method("messages.send", {"user_id":user_id,"message":s}) while True: response = vk.method("messages.get", values) if response["items"]: values["last_message_id"] = response["items"]["id"] for item in response["items"]: write_msg(item,u"Привет, Хабр!") time.sleep(1)


Получилось 17 строк кода. Успехов!


UPD 17.09.18:
К сожалению в новой версии (5.80) VK API был убран метод "messages.get" и данная статья потеряла актуальность. Теперь для создания ботов используйте систему longpoll. Пример на модуле vk_api для Python вы можете найти .

Новый функционал для ботов ВК — кнопки быстрых ответов или же keyboard.

ВАЖНО! Более свежая версия статьи

Наша команда «ботописцев» сразу заинтересовалась этим нововведением и начала изучать официальную API , чтобы рассказать вам и показать подробную инструкцию по созданию бота использующего keyboard. В ходе этой статьи получится бот, посмотреть работу которого вы можете в нашей группе GameTips в ВК. Так же вы можете присоединиться к беседе-комьюнити в вк, где вам могут помочь с возникшей проблемой.

Создание и настройка сообщества

После создания сообщества в ВК проследуйте по этому пути:
«Управление сообществом» →«Сообщения» и включите диалоги сообщества. Теперь в подменю «Настройки для бота» включите «Возможности ботов» и кнопку «Начать».

Писать будем используя Сallback api(отправляет каждое действие в сообществе по отдельности на сервер). Поэтому его тоже следует настроить. Переходим в
«Управление сообществом» →»Работа с API». Для работы бота нужно зарегистрировать ключ доступа. Нажимаете «Создать ключ» и выбираете необходимые права доступа, для этого бота нужны только права на сообщения. Подтверждаем номер телефона и сохраняем куда нибудь ключ доступа. Теперь переходим во вкладку Callback API. Ставим свое название сервера и выбираем последнюю версию API(на данный момент она 5.80, и именно с ней ниже представленный бот будет работать 100%) . Во вкладке «Типы запросов» выбираем только входящие сообщения.

Настройка сервера

Теперь вам понадобится сервер для хостинга своего бота. Вы можете использовать бесплатные хостинги, например 000webhost.

Если вы будете использовать дешевые/бесплатные хостинги, то вероятнее всего на них будет отключен cURL(вы не сможете отправлять ботом медиа файлы, только текст), и его нельзя включить. У 000webhost все с этим нормально, можете использовать. Если у вас свой сервер или хороший купленный, то вам надо подключить cURL для полноценной работы бота из нашего примера.

Как работает Callback API и keyboard

Проведу краткий экскурс как все работает. Сallback API отсылает на ваш сервер любое событие, которое происходит в группе виде JSON. Полный список событий можно посмотреть во вкладке «Сallback API» → «Типы событий». Вот так выглядит JSON запрос когда пользователь отправляет сообщение, в данном случае он нажал на кнопку:

{"type":"message_new","object":{"date":1529668584,"from_id":89846036,"id":1522,"out":1,"peer_id":89846036,"text":"Золотая рыбка","conversation_message_id":305,"fwd_messages":,"important":false,"random_id":0,"attachments":,"payload":"{\"animals\":\"Goldfish\"}","is_hidden":false},"group_id":101461081}

Тут есть несколько интересных полей, которые можно обработать: id пользователя, текст сообщения(text), полезная нагрузка кнопки(payload).

Отправка сообщений пользователю происходит с помощью метода messages.send . Если вы отправляете клавиатуру, то после всех стандартных параметров вы добавляете параметр keyboard, который содержит json кнопок, вот как он выглядит:

Keyboard: { "one_time": false, "buttons": [ [{ "action": { "type": "text", "payload": "{\"button\": \"1\"}", "label": "Red" }, "color": "negative" }, { "action": { "type": "text", "payload": "{\"button\": \"2\"}", "label": "Green" }, "color": "positive" }]

Работа с библиотекой

Для работы бота мы используем самописную библиотеку на PHP. (Если ссылка не работает, то вот архив)вы можете найти документацию к библиотеке и скачать саму библиотеку. Вот короткий листинг готовых функций для написания бота, подробнее ищите по ссылке выше. Если вы хотите узнавать об изменениях в библиотеке, то напишите хотя бы одно сообщение нашему боту в ВК , через него мы будет вас оповещать об изменениях.

$vk = new vk_api(vk_key, version_api) — инициализация бота. Параметры: ключ сообщества(vk_key), версия API(version_api).

sendMessage(id, text) — функция отправки сообщений юзеру. Параметры: id пользователя(id), текст сообщения(text).

sendImage(id, patch) — функция отправки изображений. Параметры: id пользователя(id), путь до изображения(patch).

sendButton(id, text, buttons, one_time) — функция отправки сообщения с кнопками. Параметры: id пользователя(id), текст сообщения(не может быть пустым)(text), массив с кнопками(buttons), не обязательный параметр one_time, по дефолту false, если поставить true, то после нажатия на любую кнопку клавиатура скроется.

request(method, array_arguments) — универсальная функция работы с методами. Параметры: method — название метода из официального api, array_arguments — массив параметров.

sendOK() — Бета функция. Используется вместо echo «ok», помогает в тех случаях, когда время работы скрипта долгое, и бот начинает повторять сообщения по несколько раз.
ВАЖНО: есть использовать эту функцию, то у вас не будет отображаться вывод ошибок. Во время дебага заменяйте на echo «ok»

Полный код бота на PHP

Теперь перейдем собственно к коду, где прокомментирована почти каждая строка.
Данный код поддерживается на PHP 5.6+
В блоке CONFIG укажите свой ключ доступа сообщества, ключ для подтверждения сервера а так же выбранную вами версию API.

"Fish"], "А какие бывают?", "blue"]; //Код кнопки "Fish" const BTN_BACK = [["command" => "start"], "<< Назад", "red"]; // Код кнопки "<< Назад" const BTN_SALMON = [["animals" => "Pink_salmon"], "Горбуша", "white"]; // Код кнопки "Горбуша" const BTN_GOLDFISH = [["animals" => "Goldfish"], "Золотая рыбка", "blue"]; // Код кнопки "Золотая рыбка" const BTN_PLOTVA = [["animals" => "Plotva"], "Плотва", "green"]; // Код кнопки "Плотва" $vk = new vk_api(VK_KEY, VERSION); // создание экземпляра класса работы с api, принимает ключ и версию api $data = json_decode(file_get_contents("php://input")); //Получает и декодирует JSON пришедший из ВК if ($data->type == "confirmation") { //Если vk запрашивает ключ exit(ACCESS_KEY); //Завершаем скрипт отправкой ключа } $vk->sendOK(); //Говорим vk, что мы приняли callback if (isset($data->type) and $data->type == "message_new") { //Проверяем, если это сообщение от пользователя $id = $data->object->from_id; //Получаем id пользователя, который написал сообщение $message = $data->object->text; if (isset($data->object->peer_id)) $peer_id = $data->object->peer_id; // Получаем peer_id чата, откуда прилитело сообщение else $peer_id = $id; if (isset($data->object->payload)){ //получаем payload $payload = json_decode($data->object->payload, True); } else { $payload = null; } if (isset($payload["command"]) or mb_strtolower($message) == "начать") { //Если нажата кнопка начать или << назад $vk->sendButton($peer_id, "Хочешь посмотреть на рыбок?", []); //Отправляем кнопку пользователю } else { if ($payload != null) { // если payload существует switch ($payload["animals"]) { //Смотрим что в payload кнопках case "Fish": //Если это Fish $vk->sendButton($peer_id, "Вот такие, выбирай", [ //Отправляем кнопки пользователю , ]); break; case "Pink_salmon": //Если это Горбуша $vk->sendMessage($peer_id, "Держи свою горбушу!"); //отправляем сообщение $vk->sendImage($peer_id, "img/pink_salmon.jpg"); //отправляем картинку break; case "Goldfish": //Если это Золотая рыбка $vk->sendMessage($peer_id, "Она исполнит твои желания..."); $vk->sendImage($peer_id, "img/goldfish.jpg"); break; case "Plotva": //Если это Плотва $vk->sendMessage($peer_id, "Ой, похоже картинку перепутали)"); $vk->sendImage($peer_id, "img/plotva.jpg"); break; default: break; } } } } ?>

Теперь вы знаете как работает код, и можете подстроить его под себя.

Стартуем!

Заливайте свой скрипт и библиотеку на сервер. Теперь заходим в настройках во вкладку Callback API, вписываем в поле адреса путь до своего скрипта и жмем подтвердить. Если вы все сделали правильно, то рядом с адресом появится зеленая галочка.

FAQ:

Вопрос: Вообще ничего не работает!
Ответ: Значит где-то накосячили. Перечитайте еще раз внимательно статью, и проверьте, все ли вы сделали. Любой шаг влево может привести к ошибке…

Вопрос: У меня все работает, но не отправляются картинки.
Ответ: Проверьте, добавили ли вы папку img с изобажениями. Так же, возможно вы используете сервер, где не поддерживается cURL.

Вопрос: Я изменил версию на 5.78 или любую другую. У меня ничего не работает.
Ответ: Используйте другие версии api кроме 5.80 на свой страх и риск. Например на версии 5.78 от ВК приходят другие названия переменных(например вместо object->text идет object->body), поэтому скрипт крашится. Все изменения api ищите



Есть вопросы?

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: