Как подключить callback api бот Вконтакте

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

Настройка Callback API для бота сообщества ВКонтакте

Подготовка серверной части к подключению

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

Инструкция по подключению подробно описана в отличной документации для разработчиков ВКонтакте.

Разберем её подробнее, для размещения скрипта чат-бота мы должны иметь функционирующий веб-сервер.

Для работы с callback API ВКонтакте рекомендует использовать протокол https, инструкцию по бесплатному получению сертификата cloudflare и настройки сервера вы сможете найти в статье, которую можно найти в поисковой системе Google по запросу Бесплатный SSL сертификат CloudFlare.

Настраиваем Callback API Бот. Подробная инструкция. Очень лёгкая

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

Настройка сообщества ВКонтакте

Генерация ключа доступа

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

Далее спустимся в раздел «Работа с API» → «Ключи доступа«.

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

В нашем случае нам хватит доступа к сообщениям сообщества.

Сохраним данный ключ, он нам понадобится при настройке backend.

Настройка callback API

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

Дальше наступает очень важный момент, нам необходимо ввести адрес нашего сервера и придумать секретный ключ, в качестве ключа выступает любая строка, а в качестве адреса, соотвественно, адрес к php скрипту на сервере.

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

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

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

Настройка типов событий

Важным моментом в работе бота сообщества, является ответы на пользовательские сообщения и различные события, для того, чтобы мы могли взаимодействовать с пользователем от имени сообщества, нам необходимо указать какие именно события мы хотим получать. Так как мы собираемся отслеживать входящие сообщения, вступления в сообщества и выход из него, то нам необходимо установить соответствующие галочки. Для этого перейдем во вкладку «Управление сообществом«.

Еще по теме:  Как сделать демонстрацию экрана в ВК с телефона

Далее спустимся в раздел «Работа с API» → «Типы событий«.

Установите необходимые пункты в данном разделе.

Настройка backend бота ВКонтакте

Следующим этапом мы должны создать специальный скрипт, который будем принимать запросы от callback API вконтакте и определенным образом реагировать на события. Создадим, например, php-скрипт handler.php, адрес к этом скрипту, после настройки backend, мы должны указать в настройках сообщества.

Обратите внимание на значения следующих переменных:

$confirmationToken $token $secretKey

В confirmationToken хранится код, которые сервер должен вернуть, в нашем случае:

004eec27

token хранит в себе ключ доступа, который мы генерировали в главе «Генерация ключа доступа»

secretKey мы задавали в разделе управления сообщества callback API. Итоговый код выглядит следующим образом (handler.php):

Итоговый код handler.php

После того как вы загрузите код, вы должны вернуться в раздел «Управление сообществом» → «Работа с API» → «Callback API», ввести адрес до скрипта и нажать «Подтвердить»

После этого, конфигурация сообщества для работы с ботом завершена, теперь, если мы отправим сообщением в сообщество, мы получим ответ.

Дополнительные возможности

Реализация приветствия при вступлении в сообщество ВКонтакте

На данном этапе мы уже имеем настроенный сервер и обработчик бота, все возможные события указаны в документации, она хорошо написана, рекомендую с ней ознакомиться.

Мы будем отлавливать событие group_join, для этого в операторе switch создадим новый раздел. Мы не будем рассматривать join_type подробно, так как у нас открытая группа, но вы можете обрабатывать этот параметр на ваше усмотрение.

Фрагмент кода оповещения о вступлении в сообщество

Полный код обработчика бота ВКонтакте с функцией приветственного сообщения:

Исходный код handler.php. Приветственное сообщение

Реализация прощания с участником после того, как он покинул сообщество

Реализация идентичная, в конкретном случае мы обрабатываем group_leave

Фрагмент кода оповещения о выходе из сообщества

Полный листинг кода:

Итоговый код handler.php с расширенным функционалом
Post Views: 1 175

Cлучайные числа с плавающей точкой в PHP Стандартные библиотеки PHP умеют генерировать только целые случайные числа. Однако, возникают задачи где нужно не целое рандомное число с максимально…

Особенности http_build_query в PHP Казалось бы http_build_query — простая функция, однако, имеет некоторые особенности. Нельзя однозначно сказать что это баг, скорее просто недокументированная фича,…

Как по-быстрому увеличить объём выделяемой памяти для консольного PHP скрипта? Иногда при обработке с помощью PHP больших и не очень данных, можно словить досадную ошибку посреди выполнения скрипта: PHP Fatal…

Источник: evilinside.ru

Подключение и настройка Callback API ВКонтакте

Что такое Callback API ВК вы уже знаете, теперь пришло время его подключить и настроить.

Подключение

Подключать можно только свои группы, то есть группы в которых вы являетесь администратором.

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

Видео: Как подключить Callback API ВКонтакте за 2 минуты

  1. Чтобы система вывела список администрируемых вами групп, авторизуйтесь, если вы еще не авторизованы.
  2. Выберите из списка нужную группу и нажмите кнопку «Подключить Callback API».

Это все, как видите ничего сложного в подключении нет. Если подключение прошло успешно, ваша группа отправит вам тестовое сообщение. Если у группы не получилось отправить вам сообщение, сервис покажет ошибку и подскажет как ее исправить.

Настройка

Настраивается Callback API еще проще, чем подключается, вы можете в этом убедиться посмотрев наш минутный ролик:

Видео: Как настроить Callback API ВКонтакте за 1 минуту

  1. Выберите из списка нужную группу и откройте вкладку «Настроить».
  2. Отметьте события о которых вас надо извещать и нажмите кнопку «Сохранить изменения».
Еще по теме:  Где папка Вконтакте на андроиде

Если вы настраивали уведомления на сервере ВКонтакте, вы можете импортировать эти настройки нажав на ссылку «загрузить настройки».

В любой момент вы можете изменить настройки или отключить группу от сервиса.

Модераторы

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

  1. На вкладке «Модераторы» вставьте в форму адрес страницы модератора и нажмите кнопку «Подключить модератора»
  2. После того как модератор появится в списке, отправьте ему тестовое сообщение нажав кнопку «Тест».
  3. На вкладке «Настроить» отметьте события, о которых надо извещать модератора.

Фильтры

Чтобы админ(вы) и модераторы не получали лишних сообщений, мы добавили в настройки фильтры. По умолчанию фильтры включены, но для тестирования вы можете их отключить.

Источник: 6895.ru

Как создать бота в вк или про VK Callback API

Всем привет! Недавно на одном проекте мне пришлось столкнуться с ботом вк, который «живёт» в сообщениях группы. До этого я имел самый разный опыт создания ботов из личных страничек. Для того, чтобы бот мог нормально отвечать на сообщения приходилось делать самые разные извращения с кроном, таймерами, «запоминанием» сообщений и другими разными ужасами.
Как же я удивился, когда начав курить VK API групп касаемо сообщений, я увидел это чудо — Callback API.

Для нетерпеливых или любящих разбираться со всем самостоятельно в конце есть готовый пример.

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

Для тех кто не знает, что это, расскажу кратко.
При помощи этой фишки вк сам, автоматически, отправляет запросы в формате JSON куда мы укажем сами.
О формате JSON я писал немного инфы в статье про создание авторизации через вк

Так вот, в этом callback запросе вк может уведомлять обо всём: новых сообщениях группы, исходящих от группы сообщениях, видео, аудио, комментариях, новых подписчиках и так далее. И мы, прочитав этот запрос, можем решить, как на этот запрос реагировать.
Прямо как платёжные системы. Магия.

Давайте по порядку. Для того, чтобы воспользоваться callback api для создания бота или ещё чего-бы то ни было, нужно:

Сначала, конечно же, создать группу.
Открыть раздел «Управление сообществом», в котором справа будет вот такое меню:

Выбираем работу с API, где и имеем все настройки.

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

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

Предлагаю сделать вот что:
Пусть бот будет отвечать на сообщения этим же сообщением, которое ему прислали, только задом-наперёд, ахах

Для начала давайте слепим два файла. callback.php и vk.class.php. Класс нужен чисто для удобства, чтобы не громоздить большую кучу кода в одном файлике. Сделаем всё аккуратно 😀

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

Перед использованием самого каллбек апи придётся так же для начала подтвердить свой каллбек-скрипт, отдав вк нужную строку. Все запросы от каллбека будут лететь в формате JSON (уже говорил) и вк как бы сам показывает, как они будут выглядеть. Первый из них, это confirmation, который будет смотреться примерно так:

Еще по теме:  Как Вконтакте удалить подписчиков со своей страницы

Идём теперь в наш callback.php, в котором для начала нужно получить запрос от вк и проверить, что же там пришло и сразу это обработать. О структуре запроса отправляемого от вк можно узнать из официальной документации вк
Ниже приведён сразу полный код файла callback.php, который будет укомплектован тонной комментариев )
Весь код будет максимально упрощен, во многих местах на каком-то большом и серьёзном проекте так лучше не делать ) Нужны будут как минимум обработчики ошибок и так далее, которые вк может вполне себе вернуть. Так же желательно будет использовать секретный ключ и всякое-разное

//Если скрипт выполняется дальше, значит это не confirmation, а одно из уведомлений. //Т.к. на данном этапе мы обрабатываем только входящее письмо, значит это входящее письмо if ($arr[‘type’] == ‘message_new’) < //Проверим на всякий случай, точно ли это входящее письмо function cir_strrev($stroka)< //Так как функция strrev не умеет нормально переворачивать кириллицу, нужен костыль через массив. Создадим функцию preg_match_all(‘/./us’, $stroka, $array); return implode(»,array_reverse($array[0])); >//Значит точно входящее. Можно уже и наш класс подключить include_once (‘vk.class.php’); //Меж дела подключаем наш vk.class.php //Сразу и создадим этот класс, который будет написан чуть позже //Сюда пишем ключ апи, который создавали в самом начале $vk = new vk(‘xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx’); $sms = $arr[‘object’][‘body’]; //Получаем текст сообщения, которое нам пришло. //О структуре этого массива который прилетел нам от вк можно узнать из официальной документации. Ссылка выше, до кода //Сразу и user_id получим, которому нужно отправлять всё это назад $vk_id = $arr[‘object’][‘user_id’]; //Перевернём строку задом-наперёд используя php функцию strrev $sms_rev = cir_strrev($sms); //Используем наш ещё не написанный класс, для отправки сообщения в ответ $vk->send($vk_id, $sms_rev); > exit(‘ok’); //Обязательно возвращаем «ok», иначе вк отправит уведомление несколько раз

Теперь, собственно, сам vk.class.php:

token = $token; //Забиваем в переменную токен при конструкте класса > public function send($id, $message) < //Задаём публичную функцию send для отправки сообщений //Заполняем массив $data инфой, которую мы через api отправим до вк. О функции api «messages.send» можно почитать в официальной документации вк $data = array( ‘peer_id’ =>$id, ‘message’ => $message, ‘v’ => ‘5.46’, //Версия для функции. Её передавать нужно обязательно.

Узнать нужную можно через официальную документацию вк ); //Получаем ответ через функцию отправки до апи, которую создадим ниже $out = $this->request(‘messages.send’, $data); //И пусть функция вернёт ответ. Правда в данном примере мы это никак не будем использовать, пусть будет задаток на будущее return $out; > public function request($method, $data = array()) < $curl = curl_init(); //мутим курл-мурл в переменную. Для отправки предпочтительнее использовать курл, но можно и через file_get_contents если сервер не поддерживает $data[‘access_token’] = $this->token; //токен, который нужно отправить вместе с запросом тоже нужно добавить в дату curl_setopt($curl, CURLOPT_URL, ‘https://api.vk.com/method/’ . $method); //Ссылки до разных методов апи вк выглядят так: https://api.vk.com/method/И_ТУТ_САМ_МЕТОД, поэтому метод вполне можно забивать в эту функцию и без всяких ссылок curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, ‘POST’); //Отправляем через POST curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_POSTFIELDS, $data); //Сами данные отправляемые $out = json_decode(curl_exec($curl), true); //Получаем результат выполнения, который сразу расшифровываем из JSON’a в массив для удобства curl_close($curl); //Закрываем курл return $out; //Отправляем ответ в виде массива > >

Рабочий пример, так сказать, демо, можно посмотреть вот здесь. )

Источник: evilcoder.ru

Рейтинг
( Пока оценок нет )
Загрузка ...