[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"docs-openlines":3,"docs-tabs-openlines":6},{"content":4,"lastmod":5},"# Открытые линии\n\nОткрытые линии Битрикс24 (модуль `imopenlines`) — входящие обращения из мессенджеров и социальных сетей, распределение по операторам, интеграция с CRM и оценка качества обслуживания. Раздел покрывает две грани модуля: управление настройками линий и статистику дашборда руководителя контакт-центра.\n\n- **Базовый URL:** `https:\u002F\u002Fvibecode.bitrix24.tech`\n- **Аутентификация:** заголовок `X-Api-Key` (личный ключ) или `X-Api-Key` + `Authorization: Bearer` (OAuth-приложение)\n- **Скоуп ключа:** `imopenlines`\n\n## Что входит в раздел\n\n| Грань | Назначение | Документация |\n|---|---|---|\n| Конфигурация линий | CRUD настроек линии: очередь операторов, рабочее время, интеграция с CRM, приветствие, оценка | [Конфигурация линий](\u002Fdocs\u002Fopenlines\u002Fconfig) |\n| Статистика (дашборд) | Только чтение: агрегаты, сессии, операторы, CSAT, переназначения | ниже в этом разделе |\n\n## Идентификаторы\n\n| Идентификатор | Что это | Где взять |\n|---|---|---|\n| `configId` | Открытая линия | [`GET \u002Fv1\u002Fopenline-configs`](\u002Fdocs\u002Fopenlines\u002Fconfig\u002Flist) |\n| `sessionId` | Сессия (диалог) Открытой линии | [`POST \u002Fv1\u002Fopenlines\u002Fsessions\u002Fsearch`](\u002Fdocs\u002Fopenlines\u002Fsessions) |\n| `chatId` | IM-чат, привязанный к сессии | поле `chatId` в ответе `sessions\u002Fsearch` |\n\n## Конфигурация линий\n\nУправление настройками открытых линий — создание, список, получение, изменение, удаление, поиск. Общедоступно, раскатки обновления не требует. Здесь же живут два действия оператора над диалогом — принять (`answer`) и завершить (`finish`).\n\nПолная документация: [Конфигурация линий](\u002Fdocs\u002Fopenlines\u002Fconfig).\n\n## Статистика (дашборд)\n\n> ⚠️ **Методы статистики в процессе раскатки — выходят в обновлении `imopenlines 26.700.0`.** Доступны не на всех порталах Битрикс24. Если на вашем портале методы ещё не доступны, API вернёт `422 METHOD_NOT_YET_AVAILABLE` — это не ошибка интеграции, а признак того, что обновление пока не приехало на портал.\n\nСписок обращений с метриками, real-time нагрузка операторов, агрегаты по линии, оценки клиентов (CSAT) и история переназначений. Все методы — только чтение. Данные видны в пределах прав пользователя, от имени которого работает ключ: если у него нет доступа ни к одной линии, метод возвращает пустой результат (или нулевые агрегаты), а не ошибку. Методам нужен доступ к статистике Открытых линий (право `report_open_lines`); без него запрос вернёт `403 B24_TARIFF_RESTRICTION`.\n\n| Эндпоинт | Метод Битрикс24 | Назначение |\n|---|---|---|\n| [`POST \u002Fv1\u002Fopenlines\u002Fstats`](\u002Fdocs\u002Fopenlines\u002Fstats) | `imopenlines.v2.Stat.get` | Агрегаты по линии за период |\n| [`GET \u002Fv1\u002Fopenlines\u002Foperators`](\u002Fdocs\u002Fopenlines\u002Foperators) | `imopenlines.v2.Operator.list` | Операторы: статус и нагрузка (real-time) |\n| [`POST \u002Fv1\u002Fopenlines\u002Fsessions\u002Fsearch`](\u002Fdocs\u002Fopenlines\u002Fsessions) | `imopenlines.v2.Session.list` | Список сессий с фильтрами |\n| [`POST \u002Fv1\u002Fopenlines\u002Fsessions\u002Fstats`](\u002Fdocs\u002Fopenlines\u002Fsessions\u002Fstats) | `imopenlines.v2.Session.Stat.get` | Метрики по конкретным сессиям (до 100) |\n| [`POST \u002Fv1\u002Fopenlines\u002Fratings\u002Fsearch`](\u002Fdocs\u002Fopenlines\u002Fratings) | `imopenlines.v2.Session.Rating.list` | Оценённые сессии (CSAT) за период |\n| [`POST \u002Fv1\u002Fopenlines\u002Fsessions\u002Ftransfers`](\u002Fdocs\u002Fopenlines\u002Fsessions\u002Ftransfers) | `imopenlines.v2.Session.Transfer.list` | История переназначений (до 50 сессий) |\n\nВсе шесть методов выходят в обновлении `imopenlines 26.700.0`. Имена методов Битрикс24 здесь приведены для сверки с документацией Битрикс24 — обращаться к API нужно по путям Вайбкод из левой колонки.\n\n## Типичные сценарии\n\n| Сценарий | Эндпоинты |\n|---|---|\n| Исторический отчёт по обращениям за период | [POST \u002Fv1\u002Fopenlines\u002Fsessions\u002Fsearch](\u002Fdocs\u002Fopenlines\u002Fsessions) |\n| Real-time монитор очереди и нагрузки операторов | [GET \u002Fv1\u002Fopenlines\u002Foperators](\u002Fdocs\u002Fopenlines\u002Foperators) |\n| Дашборд с оценками клиентов (CSAT) | [POST \u002Fv1\u002Fopenlines\u002Fratings\u002Fsearch](\u002Fdocs\u002Fopenlines\u002Fratings), [POST \u002Fv1\u002Fopenlines\u002Fstats](\u002Fdocs\u002Fopenlines\u002Fstats) |\n| Сводный KPI по линии (по часам и каналам) | [POST \u002Fv1\u002Fopenlines\u002Fstats](\u002Fdocs\u002Fopenlines\u002Fstats) |\n| Карточка сессии для разбора жалоб | [POST \u002Fv1\u002Fopenlines\u002Fsessions\u002Fstats](\u002Fdocs\u002Fopenlines\u002Fsessions\u002Fstats) |\n| Анализ переназначений между операторами | [POST \u002Fv1\u002Fopenlines\u002Fsessions\u002Ftransfers](\u002Fdocs\u002Fopenlines\u002Fsessions\u002Ftransfers) |\n\n## Рекомендации\n\n- Для сводных показателей используйте `stats` — он считает агрегаты на стороне Битрикс24. Не собирайте те же цифры клиентской агрегацией через `sessions\u002Fsearch`: это упирается в лимит запросов REST Битрикс24.\n- `operators` отдаёт почти real-time данные (статус и счётчик активных чатов читаются раздельно). Для виджета мониторинга опрашивайте метод не чаще одного раза в 30 секунд.\n- `stats` — тяжёлый метод: запрашивайте его не чаще одного раза в 30–60 секунд и кэшируйте результат на своей стороне.\n- Статистика звонков живёт отдельно — `GET \u002Fv1\u002Fcalls\u002Fstatistics`; статистика Открытых линий использует POST-формы, потому что несёт богатые фильтры.\n\n## Быстрый старт\n\nАгрегаты по линии за июнь:\n\n```bash\ncurl -X POST \"https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Fopenlines\u002Fstats\" \\\n  -H \"X-Api-Key: YOUR_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"dateFrom\": \"2026-06-01T00:00:00+03:00\",\n    \"dateTo\": \"2026-06-30T23:59:59+03:00\",\n    \"configId\": 3\n  }'\n```\n\n```json\n{\n  \"success\": true,\n  \"data\": {\n    \"totalSessions\": 340,\n    \"closedSessions\": 318,\n    \"spamSessions\": 4,\n    \"avgWaitAnswer\": 42.7,\n    \"avgSessionDuration\": 612.3,\n    \"likeCount\": 210,\n    \"dislikeCount\": 15,\n    \"votedSessions\": 225,\n    \"positiveRate\": 0.9333,\n    \"kpiFirstAnswerOk\": 300,\n    \"kpiFirstAnswerFail\": 18,\n    \"sessionsBySource\": [{ \"source\": \"livechat\", \"count\": 200 }, { \"source\": \"whatsapp\", \"count\": 140 }],\n    \"sessionsByHour\": [0,0,0,0,0,0,2,10,25,40,38,30,28,22,20,25,30,20,15,10,8,5,3,1],\n    \"sessionsByOperator\": [{ \"operatorId\": 42, \"count\": 120, \"avgWaitAnswer\": 38.1, \"positiveRate\": 0.95 }]\n  }\n}\n```\n\n## Полный пример\n\nОтчёт «обращения за месяц с разбором проблемных сессий»:\n\n1. `POST \u002Fv1\u002Fopenlines\u002Fstats` c `dateFrom`\u002F`dateTo` — сводные показатели по линии.\n2. `POST \u002Fv1\u002Fopenlines\u002Fsessions\u002Fsearch` c тем же периодом и `limit: 50` — первая страница списка сессий. Пагинация по страницам: увеличивайте `offset` на `limit`, пока `data.hasNextPage` равно `true`.\n3. `POST \u002Fv1\u002Fopenlines\u002Fsessions\u002Fstats` c массивом `sessionId` (до 100) — детальные метрики выбранных сессий.\n\nДля стабильной постраничной выгрузки фиксируйте верхнюю границу периода: возьмите `dateCreateTo` равным моменту старта выгрузки. Без фиксированной границы новые сессии, пришедшие во время листания, сдвигают страницы, и записи на стыках могут повториться или пропасть.\n\n## Коды ошибок\n\n### Ошибки Открытых линий\n\n| HTTP | Код | Когда |\n|---|---|---|\n| 403 | `B24_TARIFF_RESTRICTION` | Тариф портала не включает статистику Открытых линий (право `report_open_lines`) |\n| 422 | `METHOD_NOT_YET_AVAILABLE` | Обновление `imopenlines 26.700.0` ещё не приехало на портал. После доезда обновления метод начинает работать; если тариф не включает статистику, код при вызове сменится на `403 B24_TARIFF_RESTRICTION` |\n| 400 | `MISSING_PARAMS` | Не переданы обязательные параметры (период у `stats`\u002F`ratings`, `sessionId` у батч-методов) |\n| 400 | `INVALID_PARAMS` | Тело запроса не объект, либо нечисловые\u002Fнекорректные значения там, где ожидаются числа |\n| 400 | `BATCH_LIMIT_EXCEEDED` | Массив `sessionId` превышает лимит метода (100 для `sessions\u002Fstats`, 50 для `sessions\u002Ftransfers`) |\n\nПри отказе Битрикс24 ответ приходит как `422 BITRIX_ERROR`, а сырой код Битрикс24 дублируется в поле `error.b24Code`:\n\n| `error.b24Code` | Когда |\n|---|---|\n| `PERIOD_REQUIRED` | Период не распознан Битрикс24 (например, дата в неизвестном формате) |\n| `PERIOD_TOO_LARGE` | Период превышает 1 год |\n| `INVALID_FILTER` | Недопустимое значение фильтра или формат даты |\n| `OFFSET_TOO_LARGE` | `offset` превышает максимум — сузьте период или фильтры |\n\n### Системные ошибки\n\nОбщие коды (`SCOPE_DENIED`, `TOKEN_MISSING`, `RATE_LIMITED` и другие) — на странице [Ошибки API](\u002Fdocs\u002Ferrors).\n\n## Смотрите также\n\n- [Конфигурация линий](\u002Fdocs\u002Fopenlines\u002Fconfig)\n- [Чаты и диалоги](\u002Fdocs\u002Fchats)\n- [Журнал изменений API](\u002Fdocs\u002Fchangelog)\n","2026-07-21",{}]