Реализация голосового AI-бота для подтверждения заказов
Автоматический обзвон для подтверждения заказов — один из первых кейсов применения голосовых ботов в e-commerce. Конверсия в подтверждение сопоставима с операторами (85–92%), стоимость звонка в 10–15 раз ниже.
Сценарий звонка
Бот: Здравствуйте! Это интернет-магазин «Твой выбор».
Вы оформили заказ номер 45678 на сумму 3 200 рублей.
Хотите подтвердить доставку на [дата] по адресу [адрес]?
Клиент: Да, подтверждаю
Бот: Отлично! Заказ подтверждён. Ожидайте звонка курьера.
Хорошего дня!
Или:
Клиент: Нет, хочу изменить адрес
Бот: Назовите новый адрес доставки
Клиент: [диктует адрес]
Бот: Проверяю... Новый адрес: [повторяет]. Верно?
Клиент: Да
Бот: Адрес обновлён. Заказ подтверждён. До свидания!
Реализация с динамическим контентом
from jinja2 import Template
GREETING_TEMPLATE = Template("""
Здравствуйте, {{ customer_name or 'уважаемый клиент' }}!
Вас беспокоит магазин «{{ store_name }}».
Вы оформили заказ номер {{ order_id }} на сумму {{ amount }} рублей.
{% if delivery_date %}
Доставка запланирована на {{ delivery_date }} в {{ delivery_time_window }}.
{% endif %}
Подтверждаете заказ?
""")
async def start_confirmation_call(order: dict) -> str:
greeting = GREETING_TEMPLATE.render(
customer_name=order.get("customer_name"),
store_name=config.STORE_NAME,
order_id=order["order_id"],
amount=order["total"],
delivery_date=order.get("delivery_date"),
delivery_time_window=order.get("delivery_window")
)
return greeting
Обработка ответов
async def process_confirmation_response(
user_text: str,
order: dict
) -> tuple[str, str]:
"""Returns: (action, response_text)"""
response = await client.chat.completions.create(
model="gpt-4o-mini",
messages=[{
"role": "system",
"content": """Клиент отвечает на подтверждение заказа.
Определи действие: confirm | cancel | change_address | change_date | repeat_info | unknown
Верни JSON: {"action": "...", "entities": {...}}"""
}, {"role": "user", "content": user_text}],
response_format={"type": "json_object"}
)
result = json.loads(response.choices[0].message.content)
return result["action"], result.get("entities", {})
Интеграция с системой заказов
async def update_order_status(order_id: str, status: str, data: dict = None):
async with aiohttp.ClientSession() as session:
await session.patch(
f"{ORDERS_API}/orders/{order_id}",
json={"status": status, "confirmation_data": data},
headers={"Authorization": f"Bearer {API_TOKEN}"}
)
Метрики кампании
- Confirmation Rate: % подтверждённых заказов (цель: >85%)
- Cancellation Rate: % отменённых при звонке
- No Answer Rate: недозвон
- Retry Strategy: 3 попытки с интервалами 30 мин, 2 ч, 4 ч
Сроки: MVP бота подтверждения — 2–3 недели. С управлением кампаниями и аналитикой — 4–6 недель.







