Подключение Avito
Подключите мессенджер Авито к Excella за 6 минут. Бот отвечает покупателям от имени продавца 24/7, подтягивает контекст объявления и эскалирует сложные вопросы оператору.
Обзор
Интеграция с Авито позволяет принимать сообщения покупателей внутри обычной ленты Excella — рядом с Telegram, VK и почтой. AI-бот отвечает на вопросы, ссылаясь на конкретное объявление и его атрибуты (цена, наличие, доставка), а оператор подключается одним кликом, когда нужен живой человек.
Для каких аккаунтов работает
- Авито Профи и выше — полный доступ к API мессенджера
- Авито Бизнес — отдельные мессенджеры на каждое объявление
- Авито для автодилеров — поддержка через тариф «Максимум»
Быстрый старт
Авторизация в Авито
Войдите в личный кабинет Авито и убедитесь, что профиль подтверждён. Без подтверждения API-доступ выдаётся в режиме read-only.
Регистрация приложения
Перейдите в developers.avito.ru → Создать приложение. Сохраните client_id и client_secret.
OAuth в Excella
В админке Excella откройте Каналы → Avito → Подключить. Вы будете перенаправлены на consent-страницу Авито.
Тестовое сообщение
Откройте любое своё объявление с другого аккаунта и напишите «привет». Сообщение должно появиться в инбоксе Excella в течение 3 секунд.
OAuth-подключение
Excella запрашивает у Авито scope messenger:read и messenger:write. Refresh-токен обновляется автоматически каждые 22 часа — переподключение не требуется.
Через REST API
curl -X POST https://api.excella.ru/v3/channels/avito/connect \
-H "Authorization: Bearer $EXCELLA_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"client_id": "abc123",
"client_secret": "secret_xyz",
"redirect_uri": "https://app.excella.ru/oauth/callback"
}'import { Excella } from "@excella/sdk";
const excella = new Excella(process.env.EXCELLA_TOKEN);
const channel = await excella.channels.avito.connect({
clientId: "abc123",
clientSecret: process.env.AVITO_SECRET,
redirectUri: "https://app.excella.ru/oauth/callback"
});
console.log("Channel:", channel.id);from excella import Excella
excella = Excella(token=os.environ["EXCELLA_TOKEN"])
channel = excella.channels.avito.connect(
client_id="abc123",
client_secret=os.environ["AVITO_SECRET"],
redirect_uri="https://app.excella.ru/oauth/callback",
)
print(f"Channel: {channel.id}")Параметры канала
Поля, доступные при настройке канала Avito:
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
profile_idreq | string | — | ID профиля продавца на Авито |
auto_reply | boolean | true | Автоматически отвечать ботом без подтверждения оператора |
response_delay_sec | number | 0 | Задержка перед отправкой ответа (для имитации «живого» ответа) |
office_hours | string | 24/7 | Расписание работы бота. Формат: mon-fri 09:00-21:00 Europe/Moscow |
forward_to_phone | boolean | false | Передавать запрос телефона из Авито в инбокс Excella |
context_ttl_min | number | 60 | Срок хранения контекста диалога в минутах |
Webhooks
Excella отправляет события на ваш URL. Запросы подписаны HMAC-SHA256 заголовком X-Excella-Signature. Ретраи: 3 попытки с задержкой 5/15/45 секунд.
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
avito.message.received | event | — | Покупатель прислал сообщение |
avito.message.sent | event | — | Бот или оператор отправил ответ |
avito.contact.captured | event | — | Покупатель оставил телефон или email |
avito.escalation.requested | event | — | Бот не уверен в ответе → передал оператору |
avito.deal.closed | event | — | Продажа закрыта (с UTM или ручным маркером) |
Пример обработчика
import crypto from "crypto";
app.post("/webhooks/excella", (req, res) => {
const sig = req.headers["x-excella-signature"];
const expected = crypto
.createHmac("sha256", process.env.WEBHOOK_SECRET)
.update(JSON.stringify(req.body))
.digest("hex");
if (sig !== expected) return res.sendStatus(401);
const { type, payload } = req.body;
if (type === "avito.message.received") {
console.log("New Avito message:", payload.text);
}
res.sendStatus(200);
});request_id в заголовке. Сохраняйте обработанные id на 24 часа — Авито может прислать дубль при сетевых сбоях.Типовые сценарии
Уточнение наличия
Бот проверяет атрибут availability объявления и отвечает «В наличии, отправляем сегодня» или предлагает похожее.
Расчёт доставки
Бот спрашивает регион, считает стоимость через интегрированный API СДЭК и присылает варианты.
Запрос телефона
После 3-го сообщения бот мягко запрашивает телефон, передаёт его в Bitrix24 как лид.
Передача оператору
При сложном вопросе или 2 неудачных попытках бот пишет «Зову коллегу», помечает диалог как priority и отправляет push оператору.
Антиспам и лимиты
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
messages_per_hour | number | 120 | Лимит исходящих сообщений в час на один профиль |
identical_messages | number | 3 | Сколько одинаковых сообщений можно отправить подряд до перефразирования |
min_response_delay | number | 2 | Минимальная задержка ответа в секундах (имитация набора текста) |
Тестовый стенд
У Авито есть sandbox-аккаунт sandbox.avito.ru с тестовыми объявлениями. Используйте его, чтобы протестировать сценарии без рисков для боевого профиля.
curl -X POST https://sandbox-api.avito.ru/v1/items \
-H "Authorization: Bearer $AVITO_TOKEN" \
-d '{
"title": "Тестовое объявление",
"price": 1000,
"category_id": 24
}'curl -X POST https://sandbox-api.avito.ru/v1/messenger/simulate \
-H "Authorization: Bearer $AVITO_TOKEN" \
-d '{
"item_id": "123",
"text": "А по доставке как?",
"from": "test_buyer"
}'Коды ошибок
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
401 token_expired | auth | — | Срок токена истёк. Excella автоматически обновит — обычно это лечится повтором запроса. |
403 scope_missing | auth | — | Нет нужного scope. Переподключите канал и подтвердите запрашиваемые права. |
409 channel_taken | config | — | Профиль Авито уже подключён к другому аккаунту Excella. Отвяжите старый. |
429 rate_limited | limit | — | Превышен лимит. Заголовок Retry-After подскажет, через сколько повторить. |
503 avito_unavailable | upstream | — | Авито временно недоступен. Excella сама встанет в очередь и повторит позже. |
FAQ
История изменений
v3.2 · 25.04.2026 — добавлен webhook avito.deal.closed, поддержка sandbox-окружения, улучшено антиспам-перефразирование.
v3.1 · 12.03.2026 — расписание работы бота (office_hours), задержка ответа для имитации живого набора.
v3.0 · 15.01.2026 — первая версия интеграции. OAuth, базовые webhooks, контекст объявления.