callback

package
v0.0.4-dev Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 22, 2023 License: MIT Imports: 5 Imported by: 0

README

Получение событий через CallBack

«Webhook – это механизм отправки уведомлений при наступлении в системе определённого события. Под событием понимается изменение состояния системы. Например, событиями являются: создание нового товара, изменение информации о компании, удаление услуги и т.д...»

Чтобы принимать событий VK API, необходимо настроить Handlers. Сделать это можно через Fiber следующим образом:

package main

import (
	"github.com/botscommunity/API"
	"github.com/botscommunity/callback"
	"github.com/botscommunity/vkgo/samples/public/events"
	"github.com/botscommunity/vkgo/scene"
	"github.com/gofiber/fiber/v2"
)

func main() {
	bot := API.Create("YOUR_TOKEN")

	scenes := scene.Create().
		Message(events.Message)

	session := callback.Create(bot, scenes)

	server := fiber.New()
	server.Post("/:confirmation", session.Fiber)
	server.Listen(":8000")
}

Небольшое разъяснение. Сначала мы создаём бота, который будет отправлять запросы на сервер ВКонтакте вроде отправки сообщения, изменения или удаления чего-либо. Затем создаём сцены, которые будут работать с поступающими событиями, в данном случае - новым сообщением. Настоятельно рекомендуется изменить events на собственный, как это сделать можно посмотреть здесь. Затем создаём Callback сессию, в аргументах которой указываем бота и сцены, после чего нам необходимо настроить сервер через Fiber. В этом примере мы создаём Post обработчик «https://localhost:8000/:confirmation» и назначаем ему Fiber метод созданной сессии. Говоря про localhost, для доступа к нему для ВКонтакте можно использовать NGRok.

ngrok_create.png

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

Подключение

В «Callback API» можно настроить сервер, к которому будут поступать события. Можно изменить название, выставить Версию API (рекомендуется ставить последнюю, т.к старые версии нашей библиотекой пока что не поддерживаются) и самое важное - Адрес, который и является тем самым NGRok HTTP-адресом, куда ВКонтакте будет отсылать запросы с новым событием. К слову говоря, Callback отправляет событие, а не события. Самый простой способ подключить свой сервер - использовать ссылку вроде «https://{ngrok_url}/{confirmation_string}». Итак, расмотрим эту ссылку подробнее. Получить «ngrok_url» можно из команды «ngrok http 8000», как правило он находится в значении «Forwarding {ngrok_url} -> http://localhost:8000». {confirmation_string} указан в разделе «Строка, которую должен вернуть сервер: {confirmation_string}».

ngrok_session.png

callback_connect.png

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

session.Config("everyone", true)

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

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Options

type Options struct {
	Bot    *API.Bot
	Scenes *scene.Scenes
	// contains filtered or unexported fields
}

Options - structure of the connected bot

func Create

func Create(properties ...any) *Options

Create - server creation Accepts the option pointer argument and optional scenes Returns server options

func (*Options) Config

func (config *Options) Config(event string, value any) *Options

Config - server configuration method Accepts the type of setting and its value Returns a pointer to the server configuration

func (*Options) Fiber

func (config *Options) Fiber(context *fiber.Ctx) error

func (*Options) Requests

func (config *Options) Requests(logsMain requestsMain)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL