Разработка AI-системы автообзвона клиентов для подтверждения заказов

Проектируем и внедряем системы искусственного интеллекта: от прототипа до production-ready решения. Наша команда объединяет экспертизу в машинном обучении, дата-инжиниринге и MLOps, чтобы AI работал не в лаборатории, а в реальном бизнесе.
Показано 1 из 1 услугВсе 1566 услуг
Разработка AI-системы автообзвона клиентов для подтверждения заказов
Средняя
~1-2 недели
Часто задаваемые вопросы
Направления AI-разработки
Этапы разработки AI-решения
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1218
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1161
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    853
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1047
  • image_logo-advance_0.png
    Разработка логотипа компании B2B Advance
    561
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    825

Разработка AI-системы автообзвона клиентов для подтверждения заказов

Автообзвон подтверждения заказов — один из первых массовых кейсов голосовых ботов в e-commerce РФ. Снижает долю незабранных заказов (unconfirmed orders) с 15–25% до 5–8%, автоматизируя операционную функцию без потери качества.

Бизнес-логика автообзвона

from datetime import datetime, timedelta

class OrderConfirmationCampaign:
    CALL_TRIGGERS = {
        "new_order": timedelta(minutes=30),      # через 30 мин после оформления
        "unpaid_order": timedelta(hours=2),       # если не оплачен через 2 ч
        "address_change": timedelta(minutes=10),  # немедленно при смене адреса
    }

    async def schedule_confirmation_call(self, order: dict) -> None:
        trigger_type = self.detect_trigger(order)
        delay = self.CALL_TRIGGERS.get(trigger_type, timedelta(hours=1))

        await task_queue.schedule(
            task="confirm_order_call",
            args={"order_id": order["id"]},
            eta=datetime.utcnow() + delay,
            priority="high" if order["total"] > 5000 else "normal"
        )

    async def execute_confirmation_call(self, order_id: str) -> dict:
        order = await orders_api.get(order_id)

        # Проверяем актуальность — не подтверждён ещё?
        if order["status"] not in ["pending", "awaiting_confirmation"]:
            return {"skipped": True, "reason": "already_processed"}

        # Инициируем звонок
        call_result = await voice_bot.call(
            phone=order["customer_phone"],
            script="order_confirmation",
            context=self.build_context(order)
        )

        # Обновляем заказ
        if call_result["outcome"] == "confirmed":
            await orders_api.confirm(order_id)
        elif call_result["outcome"] == "cancelled":
            await orders_api.cancel(order_id, reason="customer_request")
        elif call_result["outcome"] == "address_changed":
            await orders_api.update_address(order_id, call_result["new_address"])

        return call_result

Варианты исходов звонка

CONFIRMATION_OUTCOMES = {
    "confirmed": "Заказ подтверждён — обновляем статус, запускаем логистику",
    "cancelled": "Заказ отменён по желанию клиента",
    "address_changed": "Адрес изменён — обновляем, переподтверждаем",
    "reschedule": "Клиент просит перенести доставку — обновляем дату",
    "no_answer": "Нет ответа — добавляем в retry-очередь",
    "wrong_number": "Неверный номер — помечаем для ручной обработки",
    "transferred": "Сложный вопрос — передаём оператору",
}

Retry-стратегия

RETRY_SCHEDULE = [
    timedelta(minutes=30),   # первый retry
    timedelta(hours=2),      # второй retry
    timedelta(hours=6),      # третий retry
    # После 3 неудачных попыток — SMS + ручная обработка
]

async def handle_no_answer(order_id: str, attempt: int):
    if attempt < len(RETRY_SCHEDULE):
        await task_queue.schedule(
            task="confirm_order_call",
            args={"order_id": order_id, "attempt": attempt + 1},
            eta=datetime.utcnow() + RETRY_SCHEDULE[attempt]
        )
    else:
        await sms.send(order_id)
        await notify_operations_team(order_id)

ROI расчёт

  • Операторский звонок: ~50–80 руб. (включая FTE)
  • Bot звонок: ~5–15 руб.
  • 10 000 заказов/месяц × 30% требуют подтверждения × экономия 45 руб. = 135 000 руб./месяц

Сроки: MVP бота подтверждения — 2–3 недели. С retry-логикой и CRM — 4–6 недель.