Callback API Редактировано: 28.08.2020 в 04:45
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)