Подключение Корпоративного Номера К SIP
Запуск Навыка
Этот черновой навык запускайте только при явном вызове по имени или прямой команде пользователя. При одном смысловом совпадении не запускайте навык и не спрашивайте о его применении.
При явном вызове перед первым шагом покажите ровно одну короткую контекстную строку (не более 30 слов) и продолжайте работу в том же ответе, не ожидая реакции:
Применяю черновой навык «Подключение корпоративного номера к SIP» (обратная связь — @kir-kopylov): <кратко назовите конкретную пользу для текущего запроса>; продолжаю без ожидания.
Не включайте в строку author_github, внутреннее имя папки или пересказ всего запроса. Не спрашивайте, применять ли навык.
Если одновременно подходят совместимые навыки, выберите минимальный набор и покажите одну общую строку. Если подходы ведут к несовместимым результатам и запрос не позволяет выбрать, спросите только о желаемом результате, не о разрешении применить навык.
Запуск навыка не расширяет полномочия. Выполните всю безопасную и уже разрешённую часть; запросите подтверждение только непосредственно перед ещё не разрешённым внешним или изменяющим действием. Не запрашивайте повторно уже данное разрешение и не дублируйте системное окно подтверждения.
Обзор
Снимать с координатора необходимость помнить устройство кабинета оператора. Пользователь указывает номер или однозначно определяемого сотрудника, а skill сам проверяет состояние и возвращает один из четырёх результатов:
already_active— SIP уже активен;activated— бесплатное прямое подключение выполнено и доказано;request_registered— создана либо найдена единственная заявка с номером и статусом;blocked_human_action— требуется ровно одно действие человека.
request_registered завершает текущую операционную задачу, но не доказывает
подключение услуги. Не заменяйте один статус другим.
Естественные Входы
- «Подключи SIP на корпоративный номер …»;
- «Подключи МультиФон сотруднику …»;
- «Проверь SIP на номере и создай заявку без дубля»;
- «Узнай, подключена ли IP-телефония к этому корпоративному номеру».
Обязателен точный номер либо имя, которое в кабинете приводит ровно к одному абоненту. Опциональны страна использования, дата подключения и отличия от профиля компании.
Перед работой прочитайте:
known-exceptions.yaml;references/operator-contract.md;- для МегаФона —
references/domain-playbook.md.
Работайте только в авторизованном Chrome пользователя. Не читайте cookies, local storage, сохранённые пароли или хранилище профиля браузера.
Процесс
- Проверить предпосылки. Подтвердить авторизацию и прямой признак роли,
позволяющей управлять нужным лицевым счётом. При входе, OTP или CAPTCHA
вернуть
blocked_human_actionс одной инструкцией. - Разрешить цель. Найти лицевой счёт и абонента. Если совпадений несколько, не выбирать по догадке — запросить одно уточнение.
- Загрузить профиль. Использовать приватный
~/.codex/skill-runs/podklyuchenie-sip-u-operatora/company-profile.yaml. Если его нет, создать только неперсональные defaults изreferences/operator-contract.md; контакт для уведомлений подтвердить один раз перед локальным сохранением. SIP-логины и пароли в профиль не писать. - Проверить текущее состояние. Найти услугу на точном номере, затем проверить все релевантные очереди заказов и обращений. Совпадение определять по номеру, услуге, действию и незавершённому статусу.
- Прочитать живые условия. Цена, обязательный срок, дополнительные услуги и изменение маршрутизации считаются известными только после чтения текущего кабинета. Справка, рекламная страница и поисковый кэш не являются живым подтверждением.
- Выбрать действие.
- если услуга доказанно активна — завершить
already_active; - если доступно прямое подключение без платы, обязательств и изменения профиля маршрутизации — выполнить его по исходной команде пользователя;
- если прямого пути нет — создать одну заявку;
- при новой плате, сроке или изменении маршрутизации сначала запросить подтверждение.
- если услуга доказанно активна — завершить
- Проверить след. После мутации найти услугу, заказ либо обращение с идентификатором и статусом. Потеря страницы после клика не разрешает повторять действие: сначала повторно проверить состояние и дубли.
- Вернуть результат. Использовать формат из operator contract: точная цель, итоговый статус, наблюдаемый след, что ещё не доказано и один следующий шаг, если он нужен.
Изменение Интерфейса
Считать интерфейс изменившимся, если ожидаемый элемент исчез, маршрут потерял контекст услуги, форма изменила обязательные поля или результат нельзя доказать.
- Остановить новые мутации и проверить, не выполнилось ли предыдущее действие.
- Перечитать текущую страницу семантически: заголовки, подписи, доступные действия, URL pattern и состояние точного абонента. Не опираться только на координаты или старый CSS selector.
- Продолжить автономно только при единственном пути, сохраняющем номер, действие и risk profile.
- При неоднозначности вернуть
blocked_human_action, а не третью гипотезу. - После найденного обхода запустить
scripts/record_interface_exception.py. Скрипт сохранит санированную карточку и patch proposal вне repo. - Не менять
SKILL.md,known-exceptions.yaml, playbook, установленный cache или source repo без отдельной команды «одобрить». После одобрения применить точечный patch, добавить regression test и запуститьpython3 -m pytest.
Границы
- Не использовать для настройки SIP-клиента, хранения credentials, тестовых звонков, массового обзвона или обхода ограничений оператора.
- Не подключать услугу к приблизительно выбранному номеру.
- Не считать кнопку, переход, заполненную форму или рекламное обещание доказательством подключения.
- Не отправлять новую заявку при существующей незавершённой заявке на ту же услугу и номер.
- Не принимать платные условия или изменение маршрутизации без подтверждения.
- Не обходить OTP, CAPTCHA, отсутствие роли или системную блокировку.
- Не записывать в repo и patch proposal полные номера, email, имена, account IDs, SIP-пароли, raw logs, скриншоты или приватную переписку.
- Не создавать фоновый updater. Проверенные изменения распространяются только штатным release/migrator-процессом командного репозитория.
Definition Of Done
Работа завершена, только если выдан один допустимый status и он подтверждён
наблюдаемым следом. Для request_registered обязательны идентификатор и
текущий статус обращения. Для activated обязательна проверка услуги или
заказа после подключения. Для blocked_human_action укажите одну инструкцию и
условие возобновления.
Опрос После Использования
Опрос задаётся один раз — после выдачи доказанного status или явного стопа, не посреди подключения. Если пользователь уже ответил «пропустить» в этой сессии, не переспрашивайте.
Опрос по skill:
1. Что в этом использовании podklyuchenie-sip-u-operatora было полезно?
2. Что стоит доработать в skill или его формате?
Можно ответить коротко или написать "пропустить".
Если пользователь ответил, сохраните санированную карточку в ~/.codex/skill-runs/podklyuchenie-sip-u-operatora/usage-feedback.jsonl — лучше через bundled script:
python3 scripts/log_usage_feedback.py --liked "..." --improve "..." --outcome "..."
Script перед записью редактирует приватные пути, контакты и token-like строки и сохраняет в JSONL redaction_applied и redaction_types. Если запись невозможна из-за sandbox, прав или отсутствия tools, не делайте вид, что лог сохранён: скажите об этом и покажите короткую JSONL-карточку для ручного сохранения. Raw-ответы, контакты, пути и секреты не коммитить.
Логирование Сбоев
Перед выполнением прочитайте локальный known-exceptions.yaml как список уже
известных случаев и применяйте подходящее do_next_time без нового поиска.
Если пользователь поправил skill, tool/API/browser упал, нарушен режим работы,
пришлось искать workaround или skill сделал ложное предположение, запишите
приватную карточку через scripts/record_interface_exception.py в
~/.codex/skill-runs/podklyuchenie-sip-u-operatora/exception-log.jsonl.
Пишите факты: что skill хотел сделать, что сделал, где сломался, какая
предпосылка была ложной и что сделать в следующий раз. Если поле неизвестно,
пишите unknown. Raw logs не коммитить.