Заказать бота

Бот для доставки и статуса заказа ВК: сценарий, цена и запуск под ключ

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

Содержание статьи

Если клиент после оплаты пишет в сообщения сообщества «Где мой заказ?», а менеджер отвечает с задержкой, бизнес теряет доверие и время команды. Бот в ВК закрывает этот разрыв: показывает статус, отправляет уведомления и передаёт нестандартные кейсы менеджеру.

В этой статье — рабочая схема внедрения бота для доставки и статуса заказа, с пониманием где хватает MVP, а где нужен проект под ключ.

Что решает бот для статуса заказа

  • автоматический ответ по текущему этапу заказа;
  • уведомления при смене статуса (сборка, передан в доставку, в пути, выдан);
  • снижение повторяющихся вопросов в личке;
  • передача сложных случаев менеджеру без потери контекста.

Для интернет-магазина это прямое влияние на SLA ответа и лояльность клиента.

Базовый сценарий диалога в ВК

Минимально полезный поток обычно такой:

  1. Клиент нажимает кнопку «Проверить заказ».
  2. Бот запрашивает номер заказа или телефон.
  3. Бот проверяет статус во внутреннем источнике (CRM/таблица/API).
  4. Бот возвращает статус и ожидаемую дату доставки.
  5. Если статус не найден или кейс спорный — переводит диалог на менеджера.

На старте этого достаточно, чтобы снять до 60–80% однотипных обращений.

Архитектура: из чего состоит решение

Практичный контур:

  • VK-бот (Python + vkbottle);
  • API-слой для получения статуса заказа;
  • очередь уведомлений (чтобы не упираться в лимиты отправки);
  • логирование и retry-механизм на случай временных сбоев.

Почему это важно: если API доставки «мигнул», бот не должен молча ломать клиентский путь. Для технической части полезно опираться на подходы из сетевых запросов с timeout/retry/backoff.

Демо: базовый сценарий на Python

Минимальный рабочий сценарий: пользователь вводит номер заказа, бот проверяет статус и отвечает. Если заказ не найден — предлагает написать менеджеру.

pip install vkbottle python-dotenv

.env:

VK_TOKEN=vk1.a.xxxxx
MANAGER_PEER_ID=2000000123
import os
import re
from dotenv import load_dotenv
from vkbottle import BaseStateGroup, Keyboard, Text
from vkbottle.bot import Bot, Message
from vkbottle.dispatch.rules.base import StateRule

load_dotenv()

TOKEN = os.environ["VK_TOKEN"]
MANAGER_PEER_ID = int(os.environ["MANAGER_PEER_ID"])

bot = Bot(token=TOKEN)

# Демо-база: в реальном проекте заменяется запросом к CRM/API
ORDERS: dict[str, dict] = {
    "10023": {"status": "В сборке", "eta": "завтра до 18:00"},
    "10024": {"status": "Передан в доставку", "eta": "сегодня до 21:00"},
    "10025": {"status": "Выдан", "eta": "—"},
}

ORDER_RE = re.compile(r"^\d{4,10}$")


class OrderState(BaseStateGroup):
    WAIT_ORDER_ID = "wait_order_id"


main_keyboard = (
    Keyboard()
    .add(Text("📦 Проверить заказ", payload={"cmd": "check_order"}), color="primary")
    .add(Text("📞 Написать менеджеру", payload={"cmd": "manager"}), color="secondary")
    .get_json()
)


@bot.on.message(text=["start", "начать", "привет", "меню", "статус"])
async def start(message: Message):
    await message.answer(
        "Здравствуйте! Я помогу узнать статус вашего заказа.",
        keyboard=main_keyboard,
    )


@bot.on.message(payload={"cmd": "check_order"})
async def ask_order_id(message: Message):
    await bot.state_dispenser.set(message.peer_id, OrderState.WAIT_ORDER_ID)
    await message.answer("Введите номер заказа (только цифры, например: 10023).")


@bot.on.message(payload={"cmd": "manager"})
async def escalate(message: Message):
    await bot.api.messages.send(
        peer_id=MANAGER_PEER_ID,
        random_id=0,
        message=f"Клиент {message.from_id} запросил менеджера.",
    )
    await message.answer(
        "Передали вашу заявку менеджеру — ответим в течение 15 минут в рабочее время."
    )


@bot.on.message(StateRule(OrderState.WAIT_ORDER_ID))
async def check_order(message: Message):
    text = (message.text or "").strip()

    if not ORDER_RE.match(text):
        await message.answer("Номер заказа должен содержать только цифры. Попробуйте ещё раз.")
        return

    await bot.state_dispenser.delete(message.peer_id)
    order = ORDERS.get(text)

    if order:
        await message.answer(
            f"Заказ №{text}\n"
            f"Статус: {order['status']}\n"
            f"Ожидаемая доставка: {order['eta']}",
            keyboard=main_keyboard,
        )
    else:
        await message.answer(
            f"Заказ №{text} не найден. Возможно, номер введён неверно.",
            keyboard=main_keyboard,
        )


@bot.on.message()
async def fallback(message: Message):
    await message.answer("Напишите «статус» или выберите действие.", keyboard=main_keyboard)


if __name__ == "__main__":
    bot.run_forever()

Запуск:

python bot.py

В реальном проекте словарь ORDERS заменяется запросом к CRM, базе данных или API службы доставки. Добавляется retry-логика для внешних запросов — подробнее в статье «Сетевые запросы: timeout, retry, backoff».

MVP vs внедрение под ключ

Когда хватает MVP

  • один тип доставки;
  • статус хранится в таблице или простой CRM;
  • нет сложной логики исключений.

Когда нужен проект под ключ

  • несколько служб доставки;
  • разные статусы и SLA по регионам;
  • высокая нагрузка и требования к стабильности;
  • нужна интеграция с CRM/складом и уведомления менеджеров.

Для таких кейсов архитектуру лучше заранее заложить с учётом выбора transport-слоя (Long Poll/Callback) — см. Long Poll vs Callback API для бота ВК.

Сколько стоит и сколько времени занимает запуск

Ориентиры зависят от интеграций и глубины сценария:

  • MVP: быстрый запуск за 1–3 дня;
  • средний контур (CRM + уведомления + эскалация): 3–7 дней;
  • сложный контур (несколько источников данных, роли, аналитика): от 1–2 недель.

По стоимости точнее считать после карты процессов и требований к интеграциям.

Типовые ошибки при внедрении

Нет сценария «статус не найден»

Клиент зависает в тупике, а заявка теряется. Нужна явная ветка: уточнение данных + перевод к менеджеру.

Синхронные запросы без защиты от сбоев

Один медленный API-запрос «морозит» цепочку. Нужны timeout/retry и очередь уведомлений.

Нет фиксации источника обращения

Без меток по источнику и типу обращения невозможно улучшать SLA и конверсию в повторные покупки.

Мини-FAQ по боту доставки в ВК

Сколько стоит бот для статуса заказа в ВК?

Зависит от числа интеграций и глубины логики. Базовые сценарии дешевле и запускаются быстрее, сложные — требуют полноценного проектирования и тестов.

Можно ли подключить внешнюю службу доставки?

Да, если у службы есть API или стабильный источник статусов. Для надёжной работы важны обработка ошибок и повторные попытки.

За сколько дней реально запустить рабочий MVP?

Если процессы несложные, обычно за 1–3 дня. При интеграциях и нестандартных правилах сроки увеличиваются.

Что лучше: шаблон или разработка под ключ?

Шаблон подходит для быстрого старта типового процесса. Под ключ лучше, когда нужно учитывать ваши бизнес-правила, роли команды и интеграции.

Нужен такой сценарий под ваш процесс?

Если хотите внедрить бота для статуса заказа и доставки с учётом ваших источников данных и SLA — оставьте заявку на разработку бота под ключ.

Если нужен быстрый запуск на типовой логике, посмотрите каталог готовых ботов.

Что читать дальше

Реклама

Комментарии

Загрузка...