Разработка мобильного чат-бота для ВКонтакте

TRUETECH занимается разработкой, поддержкой и обслуживанием мобильных приложений iOS, Android, PWA. Имеем большой опыт и экспертизу для публикации мобильных приложений в популярные маркеты Google Play, App Store, Amazon, AppGallery и другие.
Разработка и поддержка любых видов мобильных приложений:
Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, B2B-приложения, маркетплейсы, онлайн-обменники, кэшбэк-сервисы, биржи, дропшиппинг-платформы, программы лояльности, доставка еды и товаров, платежные системы
Мобильные приложения для управления бизнес-процессами
CRM-системы, ERP-системы, управление проектами, инструменты для команды продаж, учет финансов, управление производством, логистика и доставка, управление персоналом, системы мониторинга данных
Мобильные приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, платформы предоставления электронных услуг, платформы кешбека, видеохостинги, тематические порталы, платформы онлайн-бронирования и записи, платформы онлайн-торговли

Это лишь некоторые из типы мобильных приложений, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента.

Предлагаемые услуги
Показано 1 из 1 услугВсе 1735 услуг
Разработка мобильного чат-бота для ВКонтакте
Простая
от 4 часов до 2 рабочих дней
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_mobile-applications_feedme_467_0.webp
    Разработка мобильного приложения для компании FEEDME
    756
  • image_mobile-applications_xoomer_471_0.webp
    Разработка мобильного приложения для компании XOOMER
    624
  • image_mobile-applications_rhl_428_0.webp
    Разработка мобильного приложения для компании RHL
    1054
  • image_mobile-applications_zippy_411_0.webp
    Разработка мобильного приложения для компании ZIPPY
    947
  • image_mobile-applications_affhome_429_0.webp
    Разработка мобильного приложения для компании Affhome
    862
  • image_mobile-applications_flavors_409_0.webp
    Разработка мобильного приложения для компании FLAVORS
    445

Разработка мобильного чат-бота для ВКонтакте

VK Bot API — один из самых развитых в СНГ: Callback API, Long Poll, Keyboard, Carousel, VK Mini Apps. Аудитория ВКонтакте — 100M+ пользователей в РФ и СНГ. Для российских бизнесов это основной мессенджер-канал наряду с Telegram.

Два способа получать сообщения: Callback vs Long Poll

Callback API — VK шлёт POST на ваш HTTPS-сервер при каждом событии. Аналог webhook. Подходит для продакшена.

Long Poll — ваш сервер делает GET-запрос, который «висит» до появления нового события. Работает без HTTPS, удобен для разработки.

Callback API настраивается в разделе «Управление» → «Работа с API» → «Callback API» группы ВКонтакте. При добавлении VK отправляет confirmation событие — нужно вернуть строку из настроек:

from fastapi import FastAPI, Request

app = FastAPI()
CONFIRMATION_TOKEN = "abc123xyz"  # Из настроек группы
SECRET_KEY = "your_secret"        # Для проверки подписи

@app.post("/vk/webhook")
async def vk_webhook(request: Request):
    data = await request.json()

    # Проверка подписи
    if data.get("secret") != SECRET_KEY:
        return "forbidden"

    if data["type"] == "confirmation":
        return CONFIRMATION_TOKEN

    if data["type"] == "message_new":
        message = data["object"]["message"]
        await handle_message(message)

    return "ok"  # VK требует именно строку "ok"

Если вернуть не "ok" — VK будет повторно слать событие до 3 раз, потом пометит доставку как неуспешную.

Отправка сообщений: Messages API

import vk_api
from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType

# Через vk_api библиотеку
vk_session = vk_api.VkApi(token=GROUP_TOKEN)
vk = vk_session.get_api()

def send_message(peer_id: int, text: str, keyboard=None):
    params = {
        "peer_id": peer_id,
        "message": text,
        "random_id": 0  # 0 = автоматический random_id для защиты от дублей
    }
    if keyboard:
        params["keyboard"] = json.dumps(keyboard)
    vk.messages.send(**params)

random_id — важная деталь: VK дедуплицирует сообщения по (peer_id, random_id). При random_id=0 — автоматически. При фиксированном значении повторный вызов не создаст новое сообщение — защита от двойной отправки.

Keyboard и Carousel

VK Keyboard — аналог Telegram InlineKeyboard, но с двумя режимами: обычная клавиатура (inline: false) заменяет системную, inline (inline: true) крепится к конкретному сообщению.

keyboard = {
    "inline": False,
    "one_time": False,  # Не скрывать после нажатия
    "buttons": [
        [
            {
                "action": {
                    "type": "text",
                    "label": "Каталог",
                    "payload": json.dumps({"command": "catalog"})
                },
                "color": "primary"
            },
            {
                "action": {
                    "type": "text",
                    "label": "Корзина",
                    "payload": json.dumps({"command": "cart"})
                },
                "color": "secondary"
            }
        ]
    ]
}

Цвета кнопок: primary (синий), secondary (белый), positive (зелёный), negative (красный). Максимум 4 кнопки в ряду, 10 рядов.

Carousel (шаблон carousel) — горизонтальная карусель карточек, аналог Generic Template в Messenger. До 10 элементов, каждый с изображением, заголовком, описанием и кнопками.

VK Mini Apps

VK Mini Apps — веб-приложения внутри ВКонтакте, аналог Telegram Mini App. SDK: @vkontakte/vk-bridge.

import bridge from '@vkontakte/vk-bridge';

bridge.subscribe((e) => {
    if (e.detail.type === 'VKWebAppUpdateConfig') {
        // Тема (светлая/тёмная), цветовая схема
        const scheme = e.detail.data.scheme;
        document.body.setAttribute('scheme', scheme);
    }
});

// Получить данные пользователя
const userInfo = await bridge.send('VKWebAppGetUserInfo');
// { id, first_name, last_name, photo_200, ... }

vk-bridge позволяет: получить данные пользователя, открыть платёжный диалог (VKWebAppOpenPayForm), запросить геолокацию, скопировать в буфер обмена, открыть QR-сканер.

Авторизация Mini App: launch_params в URL содержат подписанные данные (sign поле). Верификация на сервере через HMAC-SHA256 с ключом API Secret из настроек приложения — обязательна.

Получение информации о пользователе

При входящем сообщении from_id — это VK user ID. Получить имя и фото:

users = vk.users.get(user_ids=from_id, fields="photo_50,city")
user = users[0]
# {'id': 12345, 'first_name': 'Иван', 'last_name': 'Иванов', 'photo_50': 'https://...'}

Важно: бот видит только открытую информацию. Закрытые профили — first_name «DELETED» или недоступны.

Процесс работы

Создание группы и настройка API. Выбор Callback или Long Poll. Реализация webhook с верификацией. Диалоговые сценарии, Keyboard. Для VK Mini Apps: разработка с vk-bridge, серверная верификация. Аналитика через VK Business. Деплой и мониторинг.

Ориентиры по срокам

Бот с клавиатурой и обработкой команд — 1–2 недели. VK Mini App с авторизацией, полным UI и интеграцией с API — 4–8 недель.