Бот для доставки и статуса заказа ВК: сценарий, цена и запуск под ключ
Как сделать бота ВКонтакте для статуса заказа и уведомлений доставки: сценарий сообщений, интеграции, защита от сбоев и ориентиры по срокам/стоимости внедрения под ключ.
Содержание статьи
Если клиент после оплаты пишет в сообщения сообщества «Где мой заказ?», а менеджер отвечает с задержкой, бизнес теряет доверие и время команды. Бот в ВК закрывает этот разрыв: показывает статус, отправляет уведомления и передаёт нестандартные кейсы менеджеру.
В этой статье — рабочая схема внедрения бота для доставки и статуса заказа, с пониманием где хватает MVP, а где нужен проект под ключ.
Что решает бот для статуса заказа
- автоматический ответ по текущему этапу заказа;
- уведомления при смене статуса (сборка, передан в доставку, в пути, выдан);
- снижение повторяющихся вопросов в личке;
- передача сложных случаев менеджеру без потери контекста.
Для интернет-магазина это прямое влияние на SLA ответа и лояльность клиента.
Базовый сценарий диалога в ВК
Минимально полезный поток обычно такой:
- Клиент нажимает кнопку «Проверить заказ».
- Бот запрашивает номер заказа или телефон.
- Бот проверяет статус во внутреннем источнике (CRM/таблица/API).
- Бот возвращает статус и ожидаемую дату доставки.
- Если статус не найден или кейс спорный — переводит диалог на менеджера.
На старте этого достаточно, чтобы снять до 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 — оставьте заявку на разработку бота под ключ.
Если нужен быстрый запуск на типовой логике, посмотрите каталог готовых ботов.
Что читать дальше
Реклама
Комментарии
Загрузка...