Закрыть
npm

Callback API Редактировано: 28.08.2020 в 04:45

{...} Для включения или отключения используйте utils.callbackAPI

easyvk({
  utils: {
    callbackAPI: true
  }
})

This util not connected. Make params.utils[callbackAPI] = true

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

CallBack API работает по принципу сервера-приемщика. Создается сервер, который постоянно слушает запросы, которые на него приходят в определенном формате. Во время того, как происходят какие-то события в группе бота, сервер ВКонтакте отправляет запрос на Ваш Callback сервер и ждет ответа "ok", в случае, если он его не получил, он снова отправляет запрос. Callback API в EasyVK работает для множественных ботов (несколько групп на одном сервере), кроме того, он поддерживает ключ доступа, с помощью которого злоумышленники не смогут добраться до корня Вашего сервера и не смогут остановить работу бота.

Посмотрите, как подключить и использовать Callback API

const express = require('express');
const app = express();

// Базовый пример
easyvk.callbackAPI.listen().then((connection) => {
	
	connection.on("message_new", console.log);

})

# callbackAPI.listen()

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

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

Параметры Callback сервера

  • port - порт сервера, на котором будет работать сервер (сказанул так сказанул)
  • app *- приложение express, на основе которого оудль должен работать
  • groups - массив групп, которые нужно прослушивать, читайте ниже в настройках группы
  • path - путь к серверу бота
    easyvk.callbackAPI.listen({
    	port: process.env.PORT || 8080,
    	path: '/webhook',
    	app
    })
    			

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

  • groupId - ID группы, которую нужно прослушивать
  • secret - Секретный ключ доступа для группы (не обязательно, только если настроили в группе, это по сути пароль для бота)
  • confirmCode - Код подтверждения, который бот должен отправить при первом подключении (берется из инструкции ВКонтакте по подключения сервера)

Пример с одной группой

const express = require('express');
const app = express();

easyvk.callbackAPI.listen({
	port: process.env.PORT || 8080,

	groupId: 1,
	secret: 'SecretCodeForGroupOrJustPassword',
	confirmCode: 'TestConfirmationCode',
	app
})

Много групп

const express = require('express');
const app = express();

easyvk.callbackAPI.listen({
	port: process.env.PORT || 8080,

	groups: [
		{
			groupId: 1,
			secret: 'SecretCodeForGroupOrJustPassword',
			confirmCode: 'TestConfirmationCode'
		},
		{
			groupId: 2,
			secret: '2SecretCodeForGroupOrJustPassword',
			confirmCode: '2TestConfirmationCode'
		}, ...
	],
	app
})

Пример с автоматической авторизацией

const express = require('express');
const app = express();

easyvk({
  access_token: '{ТОКЕН_ГРУППЫ}'
}).then(async (vk) => {
	
  console.log(vk.session.group_name)

  let connection = await vk.callbackAPI.listen({
    port: process.env.PORT || 8080,
    path: '/webhook',
    app
  })

  connection.on("message_new", console.log)

})

Метод возвращает объект CallbackAPIConnection

const express = require('express');
const app = express();

easyvk.callbackAPI.listen({
	port: process.env.port || 8080,
	groupId: 1,
	confirmCode: 'TestConfirmationCode',
	app
}).then((connection) => {
	
	connection.on("message_new", (msg) => {
		
		console.log('Боту пришло сообщение!', msg);

	})

});

О событиях почитайте ниже

События Callback API

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

Кроме тех событий, что описаны в документации ВКонтакте, в Easy VK есть свои внутренние события, почитайте о них ниже

  • secretError - Возникает, когда сервер пытается отправить событие, но пароль в нем не совпадает с тем, что вы прописали в параметрах группы.
  • confirmationErrorr - Возникает, когда, сервер пытается отправить запрос подтверждения, но по каким-то причинам в EasyVK нет той группы, которую пытается запросить сервер
  • eventEmpty - Возникает, когда отправляется запрос, но в нем нету события, и вообще он пустой



function errorHandler ({ postData, description }) {
  console.log(`[${ description }]`, postData)
}

connection.on('eventEmpty', errorHandler)
	.on('confirmationError', errorHandler)
	.on('secretError', errorHandler)
	.on("message_new", console.log)
	.on("photo_new", console.log)