В данной статье представлен пошаговый пример создания простого чат-бота в социальной сети VK на ASP.NET Core C#. Начнем с создания и настройки сообщества.   Выбираем любой тип сообщества  Заполняем поля любыми данными и готово! Группа создана.  Приступим к настройке API  Создаем API ключ (Разрешаем все)  Чтобы реагировать на какие-либо события, наш скрипт должен о них узнать. Для этого существуют два подхода — Callback API и Long Poll. Мы будем реализовывать Callback API. Callback API — это инструмент для отслеживания активности пользователей в сообществе ВКонтакте. С его помощью можно реализовать, например: Long Polling — это технология, которая позволяет получать данные о новых событиях с помощью «длинных запросов». Сервер получает запрос, но отправляет ответ на него не сразу, а лишь тогда, когда произойдет какое-либо событие (например, придёт новое сообщение), либо истечет заданное время ожидания.  Используя Callback API, нам не потребуется регулярно повторять запросы, чтобы отслеживать обновления — мы будем получать их мгновенно. Выбираем последнюю версию API  Выбираем тип события "входящее сообщение".  Полезная информация: Запускаем любимую IDE, создаем ASP.NET Core Web Application. Тип проекта: Web Api
Framework: netcoreapp 2.2  Для подтверждения адреса сервера нам потребуется вернуть строку с уникальным значением.
Берем ее в настройках Callback API.  Расширим конфигурацию нашего ASP.NET Core приложения. Здесь мы будем хранить все ключи, которые будут задействованы в разработке.  Когда в сообществе произойдет событие, ВКонтакте отправит на сервер запрос с данными в формате JSON с основной информацией об объекте, вызвавшем данное событие. Например: Для удобства десериализации входящего JSON воспользуемся паттерном Data Transfer Object (DTO). Для обработки входящих запросом создадим CallbackController.cs.  Callback API готов! Полезная информация: Для взаимодействия с VK API на C# воспользуемся библиотекой VkNET Установка через Nuget:
Package manager:
PM> Install-Package VkNet .NET CLI:
> dotnet add package VkNet UI:  Полезная информация: Перед расширением логики бота, авторизуем группу в нашем веб-приложении.
Для этого регистрируем IVkApi в IoC-контейнере. Класс Startup.cs метод ConfigureServices. Теперь расширим наш CallbackController.cs, добавив обработку входящих сообщений. Внедряем IVkApi по аналогии с IConfiguration. И сам кейс, который будет ловить новые сообщения. В нем мы добавить немного логики. RandomId — уникальный (в привязке к API_ID и ID отправителя) идентификатор, предназначенный для предотвращения повторной отправки одинакового сообщения. Сохраняется вместе с сообщением и доступен в истории сообщений.  Заданный RandomId используется для проверки уникальности за всю историю сообщений, поэтому используйте большой диапазон(до int32).  PeerId — идентификатор назначения.  Text — текст личного сообщения. Обязательный параметр, если не задан параметр attachment.  Теперь нам потребуется сервер, куда будут направлены все запросы. Один из бесплатных вариантов это Heroku. После регистрации на сайте, нам предложат создать новое приложение.  Вводим название проекта.  После создания проекта будет перенаправление на страницу Deploy  Для начала скачаем Heroku CLI. Авторизуем Heroku аккаунт.
$ heroku login Переходим в проектный каталог.
$ cd (путь до проекта) Создаём текущем каталоге новый подкаталог с именем .git содержащий все необходимые файлы репозитория — основу Git-репозитория.
$ git init Подключаемся к удалённому репозиторию (нашему проекту)
$ heroku git:remote -a (название проекта) Buildpacks отвечают за преобразование развернутого кода в slug, который затем может быть выполнен на dyno.
$ heroku buildpacks:set https://github.com/jincod/dotnetcore-buildpack.git -a (название проекта) Для того чтобы начать отслеживать (добавить под версионный контроль) наши файлы.
$ git add . $ git commit -am "cookie" $ git push heroku master И идем делать чаёк. Когда наше приложение будет загружено на Heroku, то мы сможем открыть его по следующей ссылке https://**PROJECT_NAME**.herokuapp.com/ Возвращаемся в нашу группу, и в настройках Callback API указываем ссылку,
обращаясь к Callback контроллеру.
https://**PROJECT_NAME**.herokuapp.com/api/callback  Вк отправит JSON запрос на наш сервер, чтобы подтвердить адрес. После ответа будет выведено следующее уведомление: Адрес сервера успешно сохранён Теперь напишем нашему боту в личные сообщения.  Удачного кодинга! Backend .NET Developer