# Мой домофон

`iola-cli` поддерживает личные домофонные сервисы пользователя.

В обычном диалоге пользователю не нужно помнить название провайдера. Фразы:

```text
покажи домофоны
открой домофон
```

работают через общий слой "Мой домофон": CLI проверяет подключенные провайдеры, собирает доступные домофоны, открывает единственный домофон сразу или просит выбрать адрес цифрой, если домофонов несколько.

## Уфанет

Рабочий провайдер:

```bash
iola ufanet
iola ufanet setup
iola ufanet status
iola ufanet intercoms
iola ufanet history
iola ufanet cameras
iola ufanet camera open НОМЕР
iola ufanet camera snapshot НОМЕР
iola ufanet links UUID
iola ufanet open
iola ufanet open ID
iola ufanet watch
iola ufanet notifications on
iola ufanet notifications off
iola ufanet notifications status
iola ufanet delete
```

В интерактивном CLI команда `/ufanet` открывает отдельное меню домофона. В нем можно выбрать действие цифрой: открыть домофон, посмотреть список, историю, уведомления, камеры или статус.

При настройке нужны:

- номер договора Уфанет;
- пароль.

Они сохраняются только локально:

```text
~/.iola/secrets.json
```

Можно также использовать переменные окружения:

```text
UFANET_CONTRACT
UFANET_PASSWORD
```

Доступные сценарии:

- показать доступные домофоны;
- открыть единственный домофон простой фразой `открой домофон`;
- если домофонов несколько, показать адреса с цифрами и открыть выбранный номер;
- открыть домофон по ID;
- показать историю звонков;
- получить ссылку на запись звонка по UUID;
- показать камеры без вывода технических RTSP-токенов;
- открыть видеопоток камеры во внешнем плеере;
- сохранить локальный снимок с камеры;
- получать уведомления о новых вызовах, пока CLI открыт;
- включить или выключить настройку уведомлений;
- удалить локальное подключение.

Камеры показываются как обычный список: номер, название, адрес и признак доступности видео. Сами RTSP-ссылки с токенами в консоль не выводятся.

Открыть видео:

```bash
iola ufanet camera open 1
```

CLI передает поток во внешний видеоплеер. На Windows удобнее всего поставить VLC и назначить его для RTSP-ссылок.

Сохранить один кадр в локальный файл:

```bash
iola ufanet camera snapshot 1
```

Для снимка нужен `ffmpeg`. Файл сохраняется в `~/.iola/artifacts/ufanet/` и регистрируется в artifacts CLI.

История звонков в обычном выводе показывает время, адрес и подъезд. Служебные UUID скрываются, чтобы не перегружать пользователя техническими идентификаторами.

Открытие двери всегда требует явного действия пользователя. Если домофон один, фраза `открой домофон` считается таким действием. Если домофонов несколько, CLI выводит адреса с цифрами, а выбранная цифра считается подтверждением.

Уведомления сейчас работают через периодическую проверку истории звонков Уфанета:

```bash
iola ufanet watch --seconds 10
```

Остановка режима наблюдения: `Ctrl+C`. Команда `notifications on` сохраняет настройку. В обычном интерактивном CLI при включенных уведомлениях новый вызов выводится с вопросом `Открыть?`; ответы `да`, `да открой`, `открой`, `ок` открывают сопоставленный домофон, `нет` или `отмена` отменяют.

## Дом.ру

Рабочий провайдер:

```bash
iola dom_ru
iola dom_ru setup
iola dom_ru status
iola dom_ru places
iola dom_ru intercoms
iola dom_ru open
iola dom_ru open ID
iola dom_ru history
iola dom_ru codes
iola dom_ru delete
```

При настройке нужны логин и пароль от приложения/личного кабинета Дом.ру. Они сохраняются только локально:

```text
~/.iola/secrets.json
```

Можно также использовать переменные окружения:

```text
DOMRU_LOGIN
DOMRU_PASSWORD
```

Если уже есть refresh-данные, можно использовать:

```text
DOMRU_REFRESH_TOKEN
DOMRU_OPERATOR_ID
```

Доступные сценарии:

- показать адреса пользователя;
- показать доступные домофоны;
- открыть единственный домофон простой фразой `открой домофон Дом.ру`;
- если домофонов несколько, показать адреса с цифрами и открыть выбранный номер;
- открыть домофон по ID;
- показать историю событий;
- показать временные коды.

Открытие двери всегда требует явного действия пользователя. Если домофон один, фраза `открой домофон Дом.ру` считается таким действием. Если домофонов несколько, CLI выводит адреса с цифрами, а выбранная цифра считается подтверждением.

## Ростелеком

Команда-заготовка:

```bash
iola rostelecom
```

Провайдер пока в разработке. API/авторизация будут добавлены после исследования.
