![](https://habrastorage.org/getpro/habr/upload_files/b56/014/cd0/b56014cd04a2be759dead9c49f721423.png)
Привет! Меня зовут Данила Елагин. Я — технический менеджер проектов и продуктов во внутреннем подразделении ИТ Яндекса. Мы занимаемся не только техподдержкой сотрудников, но и вместе со смежными подразделениями выстраиваем и обслуживаем ИТ‑инфраструктуру.
Некоторое время назад я перешёл в отдел продуктового развития и получил в качестве подшефного продукта внутренний сервис — Паспорт переговорных. Между собой мы называем его Room Passport, или просто — RP. Его основная задача — позволить нашей компактной команде ВКС (видеоконференцсвязи) легко и эффективно управлять огромным парком переговорных: от больших залов до кабин, рассчитанных на пару человек. Чтобы у яндексоидов всегда была связь, оборудование работало без перебоя, а забронировать переговорку было быстро и удобно. Кстати, помимо переговорок в Room Passport «живут» кабинеты массажистов и врачей, коворкинговые столы и даже спортзалы. Всего получается 1800 помещений в 125 офисах в 12 странах.
В компании есть переговорки с двумя типами конференц‑систем — на кодеках Cisco и Zoom. Кодеки Zoom заводят в облаке, а Cisco управляются локально через API системы Cisco Unified Communications Manager, в народе прозванной «Цуцмом». Сотрудники проводят видеовстречи в Zoom или Телемосте — здесь полная свобода выбора.
На момент торжественной передачи «ключей продакта» RP ещё не был готовым решением и не делал то, чего от него ожидали коллеги из ВКС. Чтобы учесть потребности и боли людей, мы составили Persona Map, где в качестве объекта исследования выступили собирательные образы каждой категории пользователей. Вот один из примеров:
![](https://habrastorage.org/getpro/habr/upload_files/77f/a3f/6da/77fa3f6da93840a39c826d6df32f6c65.png)
Вместе с разработчиками и менеджером со стороны заказчика (Олег, если ты читаешь это — спасибо за всё твоё время и неоценимую помощь), нам удалось за полгода довести до ума лоскутное одеяло из плохо интегрированных функций. Мы перешили его крепкими нитками (backend), сшили красивый пододеяльник (frontend) и объединили так, чтобы сервисом было удобно и уютно пользоваться (UI/UX). Теперь, когда RP дошёл до стадии «и показать не стыдно», мы решили рассказать, как и зачем его делали.
Как работать с Room Passport
Продуктом пользуются инженеры и менеджеры ВКС, а также специалисты офисной поддержки, в чьи задачи входит регулярный обход переговорок и поддержание их в рабочем состоянии. Для пользователей RP (и, в конечном счёте, для каждого сотрудника Яндекса) важно быстро и легко завести переговорку в системе. Это позволяет:
провести новое оборудование (оформить перемещение ТМЦ);
выдать номер телефона для организации связи;
добавить переговорку в календарь, чтобы сотрудники могли её забронировать;
видеть, каким оборудованием оснащены переговорки и как оно смонтировано;
проводить мониторинг состояния техники;
быстро менять оборудование в случае поломки.
Давайте рассмотрим популярный кейс — инженеру нужно завести новую переговорку в системе. Раньше ребятам приходилось создавать тикет в поддержку, чтобы к переговорке привязали почтовый ящик в Exchange‑on‑Premise, с которым переговорку добавляют в календарь и таким образом делают доступной для бронирования.
Заявки на создание новых комнат — не инциденты, а банальные операционные задачи, поэтому они выполнялись в порядке очереди, и SLA мог составлять до 5 рабочих дней от запроса до получения вожделенного адреса. После мы добавляли переговорку на Стафф — внутренний портал с информацией о сотрудниках и офисах, откуда она и попадала и в Календарь. Потом шли к логистам, чтобы они завели расположение в ERP (Enterprise Resource Planning) — у каждой физической переговорки есть виртуальный «двойник» в системе логистического учёта. Получая оборудование со склада, мы заводили его на себя, а после установки разрывали эту связь и привязывали технику к месту постоянной дислокации.
Благодаря Room Passport всё стало проще. За счёт интеграции с Exchange On‑Premise заведение переговорок удалось автоматизировать, и вопрос с добавлением новой комнаты на Стафф и в Календарь решается за 10 минут. Единственное, что пока делается руками, — заведение расположения в ERP. Но и эту часть, конечно, хочется подвергнуть оптимизации.
Забавный пример из жизни: периодически у нас меняются названия переговорок. Например, какая‑то команда переезжает на другой этаж и хочет сохранить названия за собой. Раньше нам приходилось затирать старые данные во всех системах и создавать названия заново, но уже в другой локации. Сейчас это делается гораздо быстрее — надо лишь изменить название в RP, а во все нужные места оно доедет без нашего участия. Для конечных пользователей всё работает быстро, удобно и незаметно.
Про мониторинг
После того как переговорка начала принимать посетителей, нужно следить за тем, чтобы оборудование работало без сбоев. Для этого в Room Passport встроена система мониторинга, которая умеет заводить тикеты в поддержку.
![](https://habrastorage.org/getpro/habr/upload_files/867/3c4/a1e/8673c4a1e8660cfdc310afc12ba7dddf.png)
Например, если пропала связь с кодеком, мониторинг создаст такой тикет:
![](https://habrastorage.org/getpro/habr/upload_files/51b/800/278/51b8002783bce441345ed249e03cbc18.png)
Раньше, когда переговорок было мало, мониторинг был синхронным и нам этого хватало. В древние времена мониторинг был написан на PHP: асинхронщины там не было, и её внедряли с помощью очередей RabbitMQ и добавления 10 воркеров, которые могли одновременно опрашивать больше переговорных. Но и этот подход мы переросли.
Room Passport работает полностью асинхронно, и сейчас опрос 1000 кодеков Cisco‑переговорок занимает меньше минуты. Проверяется состояние самой железки и всё подключённое к ней оборудование: телевизор, динамики, микрофоны. Zoom‑переговорки мониторятся иначе, решение работает на базе python‑скриптов, которые получают информацию через Zoom‑API с помощью веб‑хуков — об этом я расскажу дальше, в разделе об интеграциях. Также мы можем проверять статус отключённого оборудования на предмет восстановления связи. Если оборудование снова в сети — тикет инцидента закроется автоматически.
Как выглядит и из чего состоит Room Passport
Давайте разбираться, что же за зверь (и что у него под капотом) помогает нам управлять переговорками. Здесь будут интересные технические детали и много информации об интеграциях, но начнём с того, что на поверхности. Сайт сервиса предельно прост: это главная страница с таблицей помещений и фильтром, а также карточки со статичными виджетами.
![](https://habrastorage.org/getpro/habr/upload_files/fd0/bfd/2bf/fd0bfd2bf1e5e8d737c2db6000f390a0.png)
Это — основной инструмент в поиске и фильтрации переговорок. Помимо быстрого фильтра по названию или локации, доступен детальный фильтр по разным параметрам:
![](https://habrastorage.org/getpro/habr/upload_files/dd3/23f/870/dd323f8702b8f02c53c2eb0f8e37c92f.png)
Теперь давайте посмотрим на карточку переговорки, там много интересного:
![](https://habrastorage.org/getpro/habr/upload_files/217/f78/b8c/217f78b8cc7b6e3e9055d7f23a7f9ae8.png)
Оборудование. Список оборудования, проведённого в ERP.
VCS. Статусы подключённых устройств на базе кодеков Cisco или Zoom.
Опции. 24 параметра, важных для команды ВКС.
iPad. Мониторинг планшета бронирования, установленного снаружи каждой переговорки.
![](https://habrastorage.org/getpro/habr/upload_files/50b/ee1/636/50bee16362f0b61aecc58a9526a4897d.jpeg)
Network. Сетевые настройки кодека Cisco или Zoom.
Firmware. Актуальные прошивки оборудования Cisco.
Ссылки. Разные полезные ссылки, заполняются вручную: исполнительная документация, схемы, спецификации. Очень актуально для сложных объектов, например конференц‑залов, где более сотни единиц оборудования и сложная схема подключения устройств.
Интеграции. Здесь отражены интеграции с внешними системами, такими как облачные почтовые сервисы, Zoom, Cisco, ERP.
![Паспорт переговорных и все его друзья Паспорт переговорных и все его друзья](https://habrastorage.org/getpro/habr/upload_files/afe/5cc/573/afe5cc573636e4ff934d02451e6b9596.png)
Room Passport взаимодействует с 11 внешними сервисами. Бывает, что в них происходят изменения, требующие доработок с нашей стороны, и порой весьма непростых. Поэтому, как сказал мой коллега Игорь Волков, ведущий архитектор и руководитель разработки: «Ремонт никогда не кончается»:) Поделюсь кусочком верхнеуровневой схемы заведения календаря для Zoom‑переговорки:
![](https://habrastorage.org/getpro/habr/upload_files/947/d2b/6e4/947d2b6e4c24f757d6c84f0a407a2064.png)
При нажатии одной кнопки в интерфейсе система взаимодействует с четырьмя внешними сервисами. Ниже — о самых важных интеграциях и о том, зачем они нужны.
Cisco Unified Communications Manager, или Цуцм
Нам удалось создать центр управления переговорками в RP, в то время как раньше важные функции существовали хаотично в обвязке вокруг Цуцм. Теперь команде ВКС доступно гораздо больше информации в одном месте: локация на карте, кодек и номер телефона, настройки, способы подключения — например, можно узнать, подключена ли панель управления видеосвязью напрямую к кодеку или через сетевой коммутатор; количество посадочных мест, информация об оборудовании, интегрированная с системой учёта ERP, и т. д.
Например, благодаря интеграции API Цуцм с Room Passport нам удалось решить старую проблему. При замене оборудования в переговорке автоматика могла присвоить комнате новый номер телефона, не совпадающий с существующим, из‑за чего возникали сбои при сборе групповых звонков. Это приходилось чинить вручную. Теперь же и кодек, и телефон переговорки железно прописаны в RP и не меняются при обновлении оборудования, соответственно, никакие смежные системы не ломаются, а поддержка экономит время.
Как работает автоматика кодеков Cisco
![Под этой функцией скрыта магия :) Под этой функцией скрыта магия :)](https://habrastorage.org/getpro/habr/upload_files/55b/2c7/fc6/55b2c7fc651b26b4ecfe955880c8c8db.jpeg)
Кодеки Cisco проприетарны. У команды NOC, которая занимается настройкой телефонии, как мы уже знаем, есть Цуцм, в который добавляется всё новое оборудование. В Room Pasport для этой цели есть набор типовых конфигураций в зависимости от типа кодеков, которые устанавливаются в переговорки. Модель устройства для определения типа кодека берётся из ERP‑системы. Получив эту информацию, RP подбирает нужную конфигурацию или выдаёт ошибку, если нужной модели в системе нет.
Во втором случае нужно обратиться в поддержку, чтобы для новой модели оборудования завели конфигурацию. Если же всё в порядке, в Цуцм заносится тип конфигурации, серийный номер и mac‑адрес кодека, сгенерированный RP, а Цуцм, в свою очередь, генерирует свободный телефонный номер для устройства.
Дальше сконфигурированное устройство нужно подключить к сети. Для этого в RP заранее внесены пулы IP‑адресов — таблицу IP с соответствующими им локациями: страна, офис, иногда вплоть до этажа в конкретном БЦ, — ведёт команда ВКС. После того как выдан IP, наступает время настройки самого устройства — на этом этапе всё, что сгенерировал RP, техник вносит на сетевую карту вручную. Как только настройки применены, у кодека появляется доступ в интернет. Эти настройки также нужно передать на мониторинговое оборудование команды NOC. Для этого мы выгружаем имя кодека (FKDN), mac и IP в межсетевой экран, откуда они прорастают в DNS.
ERP
«Общение» RP с ERP помогает решать массу проблем. Раньше, если в переговорке ломалось оборудование, инженеру нужно было сходить в несколько разных систем, чтобы понять, где и что произошло. Первым делом шли в ERP, чтобы понять, какое именно оборудование есть в переговорке, а затем — в систему учёта IP‑адресов, чтобы узнать IP вышедшей из строя техники. В третьей системе мы проверяли, не слетела ли телефония. Сейчас всю эту информацию мы видим в Room Passport и сразу же можем внести изменения через единый интерфейс. Раньше на эти «путешествия по системам» уходило 15–20 минут, теперь же хватает 3–4 минут.
Exchange On-Premises
Между Exchange, LDAP и Room Passport есть ещё одна сущность — On‑Prem Orchestrator с набором автоматик от нашей команды win‑админов для создания и обновления учётных записей в LDAP и Exchange. Именно в клиент для оркестратора и направляются запросы на заведение новых переговорок. Вот как это выглядит на практике:
![](https://habrastorage.org/getpro/habr/upload_files/9d5/15b/0d1/9d515b0d1886d777934e6a5f0b558faf.png)
Zoom API
Нам пришлось сделать прослойку между RP и облачным Zoom, чтобы инкапсулировать сложную авторизацию и дёшево ходить в сервис через API, используя внутренний SSO. Благодаря этой штуке пользователям не надо страдать — они легко получают доступ к Zoom и заходят во встречи, не тратя кучу времени на то, чтобы залогиниться. А мы можем автоматически выдавать и отзывать лицензии на Zoom с помощью роботов — сотрудники поддержки на такие задачки время не тратят.
Кстати, про отзыв лицензий. С помощью веб‑хуков в этом же API мы получаем информацию о том, когда и кем создаются встречи, когда они заканчиваются и сколько в них участников. Это позволяет отзывать pro‑лицензии Zoom у сотрудников, которые не пользуются их функциональностью более 60 дней. Лицензии — ресурс ценный, особенно сейчас! Конечно, сотрудники имеют право вернуть лицензию, если она им нужна. Для этого нужно всего лишь заполнить небольшую форму на внутреннем портале, а дальше автоматика запустит процесс.
Решение оказалось востребованным — теперь оно работает в корпоративном календаре, им пользуются роботы, которые могут автоматически создать встречу в случае асапа (например, когда упал какой‑то сервис), и коллеги из NOC — центра сетевых операций — для получения записи встречи и автоматической расшифровки.
![График нагрузки Zoom API График нагрузки Zoom API](https://habrastorage.org/getpro/habr/upload_files/d65/b1d/615/d65b1d615083306b9e5c162ec4a87652.png)
Телевизоры в переговорках
С помощью Room Passport мы также «расклеиваем» обои на телевизоры. Система забирает из хранилища нужную картинку и накладывает на неё QR‑код с паролем от Wi‑Fi, который обновляется каждую неделю. Это делается асинхронно, поэтому обновление обоев сразу на всех телевизорах в переговорках занимает меньше минуты.
![](https://habrastorage.org/getpro/habr/upload_files/dfc/a44/209/dfca4420923c89f63dc09361726a990d.png)
Вместо заключения
Room Passport активно развивается, и у нас большие планы по новым интеграциям с внутренними и внешними сервисами. Сейчас строится новый кампус Яндекса на Воробьёвых горах, где появится около 600 переговорок и кабин, которыми тоже нужно будет управлять. Мы работаем над несколькими фичами, с которыми масштабирование пройдёт максимально гладко, а сам процесс управления выросшим парком помещений станет ещё эффективнее. Вот что хотим сделать к открытию офиса:
Интегрироваться с другими внутренними сервисами, например с интерактивными схемами офисов, для отображения информации о переговорках.
Выстроить автоматизированную аналитику, используя скрипты и собственные инструменты: YQL, Datalens, YTsaurus.
Документировать все мультимедиа‑устройства в Room Passport, а не только кодеки и подключённую к ним периферию.
Сделать галерею обоев для телевизоров и возможность выбрать из шаблонов и назначать обои в конкретный офис или даже этаж.
Реализовать управление планшетами бронирования из интерфейса Room Passport — сейчас эта функциональность живёт в стороннем сервисе.
Сделать классную визуализацию мониторинга состояния переговорных — сейчас автоматика создаёт тикеты в Трекере, а мы хотим сделать «рабочее место дежурного инженера» внутри RP.
Оптимизировать RP под планшеты и телефоны, чтобы было удобнее пользоваться им на ходу, а не только с ноутбука.
А как управляют ВКС у вас? Делитесь опытом и интересными идеями в комментариях — быть может, вам показался полезным наш подход или вы у себя реализовали фичи, о которых мы пока только задумываемся — будет интересно обсудить!
q2digger
Забавно. А свой Телемост почему не используете? Есть вообще планы сделать для Телемоста отдельное приложение для переговорных?
D_Elagin Автор
Используем, но это продукт Яндекс 360. В рамках этой статьи мы хотели рассказать про то, что уже сделано и активно используется для автоматизации ВКС.
topright007
так используют же
>> Сотрудники проводят видеовстречи в Zoom или Телемосте