Как создать бота для вк группы: как работают, как сделать / Skillbox Media

Как добавить бота в беседу в Вк: инструкция

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

Зачем они нужны?

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

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

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

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

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

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

Как это сделать?

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

Итак, что необходимо делать? Приступаем!

  • Откройте официальную группу – например, вот так;
  • Чтобы добавить бота в чат ВК, нужно нажать на одноименный значок.

Как правило иконка, отмеченная значком плюса, находится сразу под описанием. Не потеряетесь!

Мы показываем процесс на примере Alucard, но вы можете выбрать любой другой сервис.

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

Чтобы добавить бота в беседу в ВК, сначала нужно выбрать чат. Если вы уже определились, отмечаем его галочкой и кликаем по значку «Пригласить». Если все сделано правильно, сначала вы увидите оповещение об успешном добавлении робота. А уже через пару секунд получите личное сообщение с дальнейшими инструкциями! Сообщение придет в выбранный вами чат.

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

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

  • Нажимаем на название группы на верхней панели;
  • Пролистываем открывшееся меню до вкладки «Участники»;

  • Находим в списке название сервиса и жмем на стрелочку рядом;

  • На появившейся панели щелкаем «Назначить администратором»;

  • Закрываем окно настроек. Готово!

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

  • Нажмите на кнопку добавления на главной странице;

  • Выберите из списка группу, куда хотите «внедрить» помощника и щелкните «Готово»;

  • Вернитесь к чату и дождитесь получения приветственного сообщения;
  • Если все прошло хорошо – пора назначить соответствующую роль;
  • Жмем на аватар/название на верхней панели и находим блок «Участники»;
  • Ищем название робота и кликаем по трем точкам справа;

  • В появившемся меню выбираем опцию «Назначить администратором».

Вот как добавить бота в беседу в ВК с телефона – никаких трудностей, можно справиться за пару минут. Главное, заранее найти официальную группу в социальной сети!

Как создать чат бот ВКонтакте. VK бот для обработки сообщений в группе.

Оглавление

Введение

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

Интеграция сделана на штатных средствах платформы и не затрагивает изменений в ядре платформы. 

Наш бот сможет получать сообщения от пользователя и отправлять ему обратно сообщения. 

Подготовка к интеграции с ВКонтакте

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

См. по ссылке https://dev.vk.com/api/bots/getting-started, а именно: 

  • Управление сообществом → Сообщения → Настройки для бота и включите пункт Возможности ботов
  • Включить сообщения в вашем сообществе (Управление сообществом → Сообщения), когда бот будет готов к использованию, чтобы ему можно было написать.
  • Создать ключ доступа: Откройте раздел Управление сообществом
    (Управление страницей, если у вас публичная страница), выберите вкладку Работа с API и нажмите Создать ключ доступа (проставляем необходимые права).
  • Для возможности приглашать бота в беседу — Управление сообществомСообщенияНастройки для бота и поставьте галочку в пункте Разрешать добавлять сообщество в беседы. После этого в сообществе появится кнопка Пригласить в беседу, открывающая модальное окно со списком бесед.
  • В Настройки / Работа с API переходим на вкладку CallbackAPI (задаем какие методы дергать на сервере при наступлении событий): 

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

Подтверждение Callback API на стороне сервера

Создаем в /asapi входящий метод API (с vkbot кодом, формат text).

Он должен просто выдать строку подтверждение, указанную на скрине выше. 

Пример: 

CREATE PROCEDURE [dbo].[api_vk_vkbot]
@parameters ExtendedDictionaryParameter READONLY,
@username nvarchar(256)
as
begin
        -- SELECT 1
	select '' Msg, 1 Result, 0 errorCode	
	-- SELECT 2  -- сюда вставляем код со страницы настроек группы Callback API
	select  'XXXXXXXXX'	
end
	

На странице ВК нажимаем Подтвердить. 

В настройках создаем 2 настройки: 

  • vkSecret — секретный ключ в настройках CallbackAPI (не путать с кодом подтверждения CallbackAPI). 
  • vkToken -токен доступа, который мы получили на вкладке Ключи доступа в ВК настройках группы (он будет использоваться в исходящем API методе для отправки запросов в сторону ВК). 

Обработка событий от ВК

Реализуем метод входящего API vkbot (код сущности vk, код метода vkbot, тип вывода TEXT): 

CREATE PROCEDURE [dbo].[api_vk_vkbot]
@parameters ExtendedDictionaryParameter READONLY,
@username nvarchar(256)
as
begin
	declare @params nvarchar(max) = (select value2 from @parameters 
where [key] = 'InputStream')
    declare @secret1 nvarchar(128) = dbo.
as_setting('vkSecret', '') declare @group_id int, @type nvarchar(128), @event_id nvarchar(256), @v nvarchar(128), @object nvarchar(max), @secret nvarchar(128) SELECT @group_id = group_id, @type = type, @event_id = event_id, @v = v, @object = object, @secret = secret FROM OPENJSON(@params, '$') WITH ( group_id int '$.group_id', type nvarchar(128) '$.type', [event_id] nvarchar(256) '$.event_id', [v] nvarchar(512) '$.v', [object] nvarchar(max) '$.object' as json, [secret] nvarchar(max) '$.secret' ) if(@secret<>@secret1) begin execute as_print 'VKBot wrong secret' return end exec [as_trace_warn] @code='vkbot_in', @header=@type, @itemID = @group_id, @text = @object, @username = '' declare @sendCommand nvarchar(128)='', @sendParams nvarchar(max) = '' print @object if(@type ='message_new') begin /* Сообщение в чат группы {"group_id":70971776,"type":"message_new", "event_id":"cc490c446cae2281cf4c35b2de957b4e20790a0a", "v":"5.
50", "object":{"id":494,"date":1665817659,"out":0,"user_id":1885821,"read_state":0, "title":"","body":"22","owner_ids":[]}, "secret":""} */ declare @object_id int, @object_date int, @object_out int, @object_user_id int, @object_read_state int, @object_title nvarchar(max), @object_body nvarchar(max), @object_owner_ids nvarchar(max) SELECT @object_id = id, @object_date = date, @object_out = out, @object_user_id = user_id, @object_read_state = read_state, @object_title = title, @object_body = body, @object_title = title, @object_owner_ids = owner_ids FROM OPENJSON(@object, '$') WITH ( id int '$.id', date int '$.date', [out] int '$.out', [user_id] int '$.user_id', [read_state] int '$.read_state', [title] nvarchar(max) '$.title', [body] nvarchar(max) '$.body', [owner_ids] nvarchar(max) '$.owner_ids' as json ) declare @ps ExtendedDictionaryParameter insert into @ps ([Key], Value2) select 'group_id', cast(@group_id as nvarchar) union select 'type', cast(@type as nvarchar) union select 'event_id', cast(@event_id as nvarchar) union select 'object_id', cast(@object_id as nvarchar) union select 'object_date', cast(@object_date as nvarchar) union select 'object_out', cast(@object_out as nvarchar) union select 'object_user_id', cast(@object_user_id as nvarchar) union select 'object_read_state', cast(@object_read_state as nvarchar) union select 'object_title', cast(@object_title as nvarchar) union select 'object_body', cast(@object_body as nvarchar) union select 'object_owner_ids', cast(@object_owner_ids as nvarchar) declare @msg nvarchar(max) = '' exec vk_message_new_action @parameters = @ps, @res = @msg output -- обработка нового сообщения в чате группы if(len(@msg)>0) begin set @sendCommand = 'messages.
send' set @sendParams = '&user_id='+cast(@object_user_id as nvarchar)+ '&peer_id=-'+cast(@group_id as nvarchar)+ '&chat_id='+cast(@group_id as nvarchar)+ '&message=' + @msg end end -- SELECT 1 select '' Msg, 1 Result, 0 errorCode -- SELECT 2 select 'ok' if(@sendCommand<>'') begin -- SELECT 3 select 'apirequest' type, 'vk_send' code, 'command' p1_name, @sendCommand p1_value, 'params' p2_name, @sendParams p2_value end end

Что делает процедура: 

  • проверяет секретное слово (если неверное, то ошибку выдает)
  • логирует запрос в trace с кодом vkbot
  • определяет тип команды (пока это только команда Новое сообщение).
  • вызывает процедуру vk_message_new_action для обработки команды (в ней будет заложена бизнес-логика команд от пользователя). 
  • если есть выходная команда — то вызывает исходящий API запрос к ВК (vk_send).

Процедура обработки команды пользователя в ВК чате

CREATE OR ALTER PROCEDURE [dbo].vk_message_new_action
	@parameters ExtendedDictionaryParameter readonly,
	@res nvarchar(max) output
AS
BEGIN
	set @res = ''
	declare @text nvarchar(max) = (select Value2 from @parameters where [Key]='object_body')
	if (CHARINDEX('привет', @text) > 0)  begin 
		set @res = 'Приветствую вас (это бот). Обратную связь дадим в ближайшее время. 
		
		Если что - пишите на whatsapp +7 920 954 2217'
		return
	end
	set @res = ''
END

На входе процедура получает множество параметров в @parameters — коды параметров зависят от типа команды (в процедуре vkbot можно посмотреть какие передаются параметры для типа new_message). 

В итоге наша процедура должна что-то выдать в @res. Если это пустая строка — то ничего не происходит. Если непустая — то отправляется команда от имени сообщества ВК. 

Метод отправки команды в ВК

Создаем исходящий метод отправки vk_send (тип GET JSON)

Процедура Request: 

CREATE PROCEDURE [dbo]. [api_vk_send_request]
	@parameters ExtendedDictionaryParameter READONLY, 
	@username nvarchar(32) 
AS
BEGIN
	declare @params nvarchar(max) = (select value2 from @parameters where [key]='params')
	declare @command nvarchar(max) = (select value2 from @parameters where [key]='command')
	declare @random nvarchar(128) = ABS(CHECKSUM(NEWID()) % 10000)
	declare @token nvarchar(max) = dbo.as_setting('vkToken', '')
    
	
    declare @url nvarchar(max) = 'https://api.vk.com/method/'+@command+'?v=5.131'+
    	'&access_token=' +@token+'&random_id='+@random +
    	'&'+ @params
    declare @header nvarchar(max) = 'out ' + @command
    exec [as_trace_warn] @code='vkbot', @header= @header,
 @itemID = 0, @text = @params, @username = ''
   
	select '' Msg, 1 Result, @url Url 
END

Что делается в процедуре: 

  • Получаем из @parameters какую команду и с какими параметрами отправить в ВК. 
  • Готовим URL для команды, включая системные параметры токен, случайное число, версия API.  
  • Логируем отправку запроса в trace с кодом vk_bot

Ответ от ВК обрабатывается в процедуре response: 

CREATE PROCEDURE [dbo].[api_vk_send_response]
	@response nvarchar(max),
	@parameters ExtendedDictionaryParameter READONLY,	
	@username nvarchar(32)
AS
BEGIN
	-- SELECT 1
	select '' Msg, 1 Result, @response Response    
	
    exec [as_trace_warn] @code='vkbot', @header= 'outresponse',
 @itemID = 0, @text = @response, @username = ''
END

Здесь мы просто логируем отклик ВК на наш запрос в trace с кодом vkbot.

Что получилось в итоге

Пока наш бот просто обрабатывает момент нахождения в строке слова Привет — если оно есть, то выдается стандартный текст. 

Каков образ действий разработчика

Чтобы внедрить в свой проект подобного бота, вам необходимо перенести все указанные объекты к себе.

Вся основная часть работы заключается в обработке входящего запроса и выдаче текста от бота. Это процедура vk_message_new_action.

Если вы хотите сделать, чтобы бот реагировал не только на событие Новое сообщение, но и на другие (Новый коммент, вступление в группу и т. д.), то вам необходимо добавлять новые if (@type=’…’) во входящем API vkbot, которые по аналогии будут вызывать другие хранимые процедуры, например vk_comment_new_action. 

Различные типы событий описаны здесь — https://dev.vk.com/api/community-events/json-schema

Чего пока нет в этом механизме чат-бота

В решение можно добавить следующее: 

  • обработка ошибочных состояний при отправке запросов
  • работа с клавиатурой (кнопки на чате для пользователя). https://dev.vk.com/api/bots/development/keyboard
  • обработка смайликов, выдача картинок, документов и т.д.
  • обработка многоступенчатых команд (по аналогии с чатом Телеграм)
  • интеграция чат бота с системой уведомлений Falcon Space. 
  • задействование большего числа параметров отправки сообщений https://dev.vk.com/method/messages.send

Falcon Space — функциональная веб-платформа разработки на узком стеке MS SQL/Bootstrap. Вводная по Falcon Space

Насколько полезной была статья?

Google поиск по нашей документации

Документация Simla.

com: Страница не найдена

Документация

для

Разработчики

Секции

Продажи

129статьи

  • Демонстрационные данные в системе
  • Заказы
  • Клиенты
  • Задания
  • Склад
  • Менеджеры
  • Финансы
Маркетинг

40 статьи

  • Рассылки
  • Сегменты
  • Правила
Интеграция

51 статьи

  • Создание и редактирование ключа API
  • Работа с маркетплейсом
  • Службы доставки
  • Модули для интеграции с сайтом
  • Телефония
  • Модули для работы с датабуками
  • Рекомендации
  • Отслеживание звонков
  • Аналитические услуги
Аналитика

45 статьи

  • Аналитика по заказам
  • Аналитика по клиентам
  • Аналитика по продуктам
  • Аналитика по менеджерам
  • Аналитика по коммуникациям
  • Финансовая аналитика
Настройки

96 статьи

  • Пользователи
  • магазины
  • Книги данных
  • Статусы заказов
  • Статусы продуктов
  • Триггеры
  • Настройки связи
  • Верность
  • Настройки системы
Чаты

43 статьи

  • Функциональность чата
  • Подключение мессенджеров и чатов
  • Боты
Импорт данных в систему

3 статьи

  • Импорт клиентской базы в систему
  • Импорт заказов в систему
  • Импорт товаров в систему

Ошибка сервера в приложении ‘/’.

Представление ‘~/Views/Jobs/error-static.cshtml’ или его мастер не найдены, или механизм представления не поддерживает искомые расположения. Был выполнен поиск в следующих местах:
~/Views/Jobs/error-static.cshtml.

Представление ‘~/Views/Jobs/error-static.cshtml’ или его мастер не найдены, или механизм представления не поддерживает искомые расположения. Поиск производился в следующих местах:
~/Views/Jobs/error-static.cshtml
Описание: Произошло необработанное исключение во время выполнения текущего веб-запроса. Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и о том, где она возникла в коде.

Сведения об исключении: System.InvalidOperationException: представление «~/Views/Jobs/error-static.cshtml» или его главный элемент не найдено, или механизм представления не поддерживает искомые расположения. Поиск производился в следующих местах:
~/Views/Jobs/error-static. cshtml

Ошибка источника:

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

Трассировка стека:
 [InvalidOperationException: представление '~/Views/Jobs/error-static.cshtml' или его мастер не найдены, или механизм представления не поддерживает искомые местоположения. Были обысканы следующие места:
~/Views/Jobs/error-static.cshtml]
 System.Web.Mvc.ViewResult.FindView (Контекст контроллера) +511
 System.Web.Mvc.ViewResultBase.ExecuteResult (контекст контроллера) +143
 System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive (фильтры IList`1, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult) +91
 System. Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive (фильтры IList`1, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult) +795
 System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters (ControllerContext controllerContext, фильтры IList`1, ActionResult actionResult) +81
 System.Web.Mvc.Async.<>c__DisplayClass3_1.b__1(IAsyncResult asyncResult) +188
 System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult) +38
 System.Web.Mvc.<>c.b__152_1(IAsyncResult asyncResult, ExecuteCoreState innerState) +29System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +73
 System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) +52
 System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +39
 System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) +38
 System.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Copyright © 2024
Дропшиппинг в России.
Сообщество поставщиков дропшипперов и интернет предпринимателей.
Все права защищены.
ИП Калмыков Семен Алексеевич. ОГРНИП: 313695209500032.
Адрес: ООО «Борец», г. Москва, ул. Складочная 6 к.4.
E-mail: [email protected]. Телефон: +7 (499) 348-21-17