# Подключение живого диалога с оператором (Вариант А)

Двусторонний чат «клиент ↔ оператор» через **открытые линии Bitrix24**.
Направление клиент→оператор идёт через `imconnector.send.messages`, ответ
оператора возвращается на `operator_reply.php`.

## Что уже готово в боте
- Кнопка «Соединение с оператором» открывает сессию и шлёт первое сообщение в линию.
- Пока сессия открыта, сообщения клиента пересылаются оператору (не как команды).
- `operator_reply.php` принимает ответы оператора и шлёт их клиенту.
- `/stop` (или «стоп/выход/завершить») завершает диалог.
- Если коннектор не настроен — кнопка «оператор» создаёт заявку-сделку (фолбэк).

## Что нужно сделать на стороне Bitrix24 (портал)

Коннектор открытых линий регистрируется один раз через REST. Нужен вебхук портала
с правами `imconnector`, `imopenlines`, `im`.

1. **Зарегистрировать коннектор:**
   `imconnector.register` — id (напр. `msch_max`), name, icon.

2. **Активировать на нужной открытой линии:**
   `imconnector.activate` (CONNECTOR, LINE=<id линии>, ACTIVE=1).

3. **Задать обработчик исходящих (ответы оператора):**
   в настройках коннектора указать URL `https://.../operator_reply.php`.
   Bitrix будет слать туда сообщения оператора. Формат события коннектора
   приведи к тому, что ждёт `operator_reply.php`:
   `chat_ref`, `text`, `finish`, `secret` — при необходимости подправь разбор
   в начале `operator_reply.php` под реальные имена полей события Б24.

4. **Заполнить `config.php`:**
   ```php
   'bitrix24' => [
       'webhook'      => 'https://portal.bitrix24.ru/rest/1/КОД/',
       'connector_id' => 'msch_max',
       'line_id'      => <ID линии>,
       // ...
   ],
   'operator_reply_secret' => 'длинный-случайный-секрет',
   ```

## Прод-требования (важно)
- `operator_reply.php` должен быть доступен по HTTPS и обслуживаться **PHP 8.1+**
  (та же проблема, что с вебхуками — Apache на PHP 7.x код не запустит; нужен
  php8.3-fpm на папку бота).
- Для **Telegram** нужен исходящий доступ к `api.telegram.org` с сервера — ответы
  оператора уходят клиенту тем же путём, что и все сообщения бота.

## Проверка без Б24
Пока коннектор не настроен, релей работает в режиме лога (`LogRelay`):
- нажми «оператор» в боте → в `bot.log` появится `RELAY→оператор [...]`;
- сессия откроется, твои сообщения будут писаться в лог как уходящие оператору;
- `/stop` закроет сессию.
Так проверяется вся механика на стороне бота до интеграции с порталом.

## Возможные доработки
- Тайм-аут сессии (авто-закрытие, если оператор долго молчит).
- Кнопка «Завершить диалог» вместо текстовой команды.
- Индикатор «оператор печатает» / статусы доставки (`imconnector.send.status.*`).
