Привет! Меня зовут Данила Елагин. Я — технический менеджер проектов и продуктов во внутреннем подразделении ИТ Яндекса. Мы занимаемся не только техподдержкой сотрудников, но и вместе со смежными подразделениями выстраиваем и обслуживаем ИТ‑инфраструктуру.

Некоторое время назад я перешёл в отдел продуктового развития и получил в качестве подшефного продукта внутренний сервис — Паспорт переговорных. Между собой мы называем его Room Passport, или просто — RP. Его основная задача — позволить нашей компактной команде ВКС (видеоконференцсвязи) легко и эффективно управлять огромным парком переговорных: от больших залов до кабин, рассчитанных на пару человек. Чтобы у яндексоидов всегда была связь, оборудование работало без перебоя, а забронировать переговорку было быстро и удобно. Кстати, помимо переговорок в Room Passport «живут» кабинеты массажистов и врачей, коворкинговые столы и даже спортзалы. Всего получается 1800 помещений в 125 офисах в 12 странах.

В компании есть переговорки с двумя типами конференц‑систем — на кодеках Cisco и Zoom. Кодеки Zoom заводят в облаке, а Cisco управляются локально через API системы Cisco Unified Communications Manager, в народе прозванной «Цуцмом». Сотрудники проводят видеовстречи в Zoom или Телемосте — здесь полная свобода выбора.

На момент торжественной передачи «ключей продакта» RP ещё не был готовым решением и не делал то, чего от него ожидали коллеги из ВКС. Чтобы учесть потребности и боли людей, мы составили Persona Map, где в качестве объекта исследования выступили собирательные образы каждой категории пользователей. Вот один из примеров:

Вместе с разработчиками и менеджером со стороны заказчика (Олег, если ты читаешь это — спасибо за всё твоё время и неоценимую помощь), нам удалось за полгода довести до ума лоскутное одеяло из плохо интегрированных функций. Мы перешили его крепкими нитками (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 встроена система мониторинга, которая умеет заводить тикеты в поддержку.

Например, если пропала связь с кодеком, мониторинг создаст такой тикет:

Раньше, когда переговорок было мало, мониторинг был синхронным и нам этого хватало. В древние времена мониторинг был написан на PHP: асинхронщины там не было, и её внедряли с помощью очередей RabbitMQ и добавления 10 воркеров, которые могли одновременно опрашивать больше переговорных. Но и этот подход мы переросли.

Room Passport работает полностью асинхронно, и сейчас опрос 1000 кодеков Cisco‑переговорок занимает меньше минуты. Проверяется состояние самой железки и всё подключённое к ней оборудование: телевизор, динамики, микрофоны. Zoom‑переговорки мониторятся иначе, решение работает на базе python‑скриптов, которые получают информацию через Zoom‑API с помощью веб‑хуков — об этом я расскажу дальше, в разделе об интеграциях. Также мы можем проверять статус отключённого оборудования на предмет восстановления связи. Если оборудование снова в сети — тикет инцидента закроется автоматически.

Как выглядит и из чего состоит Room Passport

Давайте разбираться, что же за зверь (и что у него под капотом) помогает нам управлять переговорками. Здесь будут интересные технические детали и много информации об интеграциях, но начнём с того, что на поверхности. Сайт сервиса предельно прост: это главная страница с таблицей помещений и фильтром, а также карточки со статичными виджетами.

Это — основной инструмент в поиске и фильтрации переговорок. Помимо быстрого фильтра по названию или локации, доступен детальный фильтр по разным параметрам:

Теперь давайте посмотрим на карточку переговорки, там много интересного:

  • Оборудование. Список оборудования, проведённого в ERP.

  • VCS. Статусы подключённых устройств на базе кодеков Cisco или Zoom.

  • Опции. 24 параметра, важных для команды ВКС.

  • iPad. Мониторинг планшета бронирования, установленного снаружи каждой переговорки.

  • Network. Сетевые настройки кодека Cisco или Zoom.

  • Firmware. Актуальные прошивки оборудования Cisco.

  • Ссылки. Разные полезные ссылки, заполняются вручную: исполнительная документация, схемы, спецификации. Очень актуально для сложных объектов, например конференц‑залов, где более сотни единиц оборудования и сложная схема подключения устройств.

  • Интеграции. Здесь отражены интеграции с внешними системами, такими как облачные почтовые сервисы, Zoom, Cisco, ERP.

Паспорт переговорных и все его друзья
Паспорт переговорных и все его друзья

Room Passport взаимодействует с 11 внешними сервисами. Бывает, что в них происходят изменения, требующие доработок с нашей стороны, и порой весьма непростых. Поэтому, как сказал мой коллега Игорь Волков, ведущий архитектор и руководитель разработки: «Ремонт никогда не кончается»:) Поделюсь кусочком верхнеуровневой схемы заведения календаря для Zoom‑переговорки:

При нажатии одной кнопки в интерфейсе система взаимодействует с четырьмя внешними сервисами. Ниже — о самых важных интеграциях и о том, зачем они нужны.

Cisco Unified Communications Manager, или Цуцм

Нам удалось создать центр управления переговорками в RP, в то время как раньше важные функции существовали хаотично в обвязке вокруг Цуцм. Теперь команде ВКС доступно гораздо больше информации в одном месте: локация на карте, кодек и номер телефона, настройки, способы подключения — например, можно узнать, подключена ли панель управления видеосвязью напрямую к кодеку или через сетевой коммутатор; количество посадочных мест, информация об оборудовании, интегрированная с системой учёта ERP, и т. д.

Например, благодаря интеграции API Цуцм с Room Passport нам удалось решить старую проблему. При замене оборудования в переговорке автоматика могла присвоить комнате новый номер телефона, не совпадающий с существующим, из‑за чего возникали сбои при сборе групповых звонков. Это приходилось чинить вручную. Теперь же и кодек, и телефон переговорки железно прописаны в RP и не меняются при обновлении оборудования, соответственно, никакие смежные системы не ломаются, а поддержка экономит время.

Как работает автоматика кодеков Cisco

Под этой функцией скрыта магия :)
Под этой функцией скрыта магия :)

Кодеки Cisco проприетарны. У команды NOC, которая занимается настройкой телефонии, как мы уже знаем, есть Цуцм, в который добавляется всё новое оборудование. В Room Pasport для этой цели есть набор типовых конфигураций в зависимости от типа кодеков, которые устанавливаются в переговорки. Модель устройства для определения типа кодека берётся из ERP‑системы. Получив эту информацию, RP подбирает нужную конфигурацию или выдаёт ошибку, если нужной модели в системе нет.

Во втором случае нужно обратиться в поддержку, чтобы для новой модели оборудования завели конфигурацию. Если же всё в порядке, в Цуцм заносится тип конфигурации, серийный номер и mac‑адрес кодека, сгенерированный RP, а Цуцм, в свою очередь, генерирует свободный телефонный номер для устройства.

Дальше сконфигурированное устройство нужно подключить к сети. Для этого в RP заранее внесены пулы IP‑адресов — таблицу IP с соответствующими им локациями: страна, офис, иногда вплоть до этажа в конкретном БЦ, — ведёт команда ВКС. После того как выдан IP, наступает время настройки самого устройства — на этом этапе всё, что сгенерировал RP, техник вносит на сетевую карту вручную. Как только настройки применены, у кодека появляется доступ в интернет. Эти настройки также нужно передать на мониторинговое оборудование команды NOC. Для этого мы выгружаем имя кодека (FQDN), 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. Именно в клиент для оркестратора и направляются запросы на заведение новых переговорок. Вот как это выглядит на практике:

Zoom API

Нам пришлось сделать прослойку между RP и облачным Zoom, чтобы инкапсулировать сложную авторизацию и дёшево ходить в сервис через API, используя внутренний SSO. Благодаря этой штуке пользователям не надо страдать — они легко получают доступ к Zoom и заходят во встречи, не тратя кучу времени на то, чтобы залогиниться. А мы можем автоматически выдавать и отзывать лицензии на Zoom с помощью роботов — сотрудники поддержки на такие задачки время не тратят.

Кстати, про отзыв лицензий. С помощью веб‑хуков в этом же API мы получаем информацию о том, когда и кем создаются встречи, когда они заканчиваются и сколько в них участников. Это позволяет отзывать pro‑лицензии Zoom у сотрудников, которые не пользуются их функциональностью более 60 дней. Лицензии — ресурс ценный, особенно сейчас! Конечно, сотрудники имеют право вернуть лицензию, если она им нужна. Для этого нужно всего лишь заполнить небольшую форму на внутреннем портале, а дальше автоматика запустит процесс.

Решение оказалось востребованным — теперь оно работает в корпоративном календаре, им пользуются роботы, которые могут автоматически создать встречу в случае асапа (например, когда упал какой‑то сервис), и коллеги из NOC — центра сетевых операций — для получения записи встречи и автоматической расшифровки.

График нагрузки Zoom API
График нагрузки Zoom API

Телевизоры в переговорках

С помощью Room Passport мы также «расклеиваем» обои на телевизоры. Система забирает из хранилища нужную картинку и накладывает на неё QR‑код с паролем от Wi‑Fi, который обновляется каждую неделю. Это делается асинхронно, поэтому обновление обоев сразу на всех телевизорах в переговорках занимает меньше минуты.

Вместо заключения

Room Passport активно развивается, и у нас большие планы по новым интеграциям с внутренними и внешними сервисами. Сейчас строится новый кампус Яндекса на Воробьёвых горах, где появится около 600 переговорок и кабин, которыми тоже нужно будет управлять. Мы работаем над несколькими фичами, с которыми масштабирование пройдёт максимально гладко, а сам процесс управления выросшим парком помещений станет ещё эффективнее. Вот что хотим сделать к открытию офиса:

  1. Интегрироваться с другими внутренними сервисами, например с интерактивными схемами офисов, для отображения информации о переговорках.

  2. Выстроить автоматизированную аналитику, используя скрипты и собственные инструменты: YQL, Datalens, YTsaurus.

  3. Документировать все мультимедиа‑устройства в Room Passport, а не только кодеки и подключённую к ним периферию.

  4. Сделать галерею обоев для телевизоров и возможность выбрать из шаблонов и назначать обои в конкретный офис или даже этаж.

  5. Реализовать управление планшетами бронирования из интерфейса Room Passport — сейчас эта функциональность живёт в стороннем сервисе.

  6. Сделать классную визуализацию мониторинга состояния переговорных — сейчас автоматика создаёт тикеты в Трекере, а мы хотим сделать «рабочее место дежурного инженера» внутри RP.

  7. Оптимизировать RP под планшеты и телефоны, чтобы было удобнее пользоваться им на ходу, а не только с ноутбука.

А как управляют ВКС у вас? Делитесь опытом и интересными идеями в комментариях — быть может, вам показался полезным наш подход или вы у себя реализовали фичи, о которых мы пока только задумываемся — будет интересно обсудить!

Комментарии (12)


  1. q2digger
    10.09.2024 07:36
    +1

    Забавно. А свой Телемост почему не используете? Есть вообще планы сделать для Телемоста отдельное приложение для переговорных?


    1. D_Elagin Автор
      10.09.2024 07:36
      +2

      Используем, но это продукт Яндекс 360. В рамках этой статьи мы хотели рассказать про то, что уже сделано и активно используется для автоматизации ВКС.


      1. navion
        10.09.2024 07:36

        А почему вместо Яндекс 360 внутри используется Exchange?


        1. D_Elagin Автор
          10.09.2024 07:36
          +1

          Яндекс 360 - изначально внешний продукт, разработанный для внешних клиентов. В основном для малого и среднего бизнеса. С началом ухода из России ведущих производителей ПО, он начал ориентироваться в том числе на требования крупного бизнеса, но эти доработки требуют времени.
          - Тут надо сделать отступление и подчеркнуть, что написанное выше - мое личное мнение. Я не сотрудник Яндекс 360.


    1. topright007
      10.09.2024 07:36
      +7

      так используют же
      >> Сотрудники проводят видеовстречи в Zoom или Телемосте


  1. CCNPengineer
    10.09.2024 07:36

    а zoom у вас используется бесплатный на 30 минут?

    а cisco не заблокировала все телефоны и устройства? ведь сейчас цуцм должен постоянно обращаться к cisco и проверять свою лицензию


    1. D_Elagin Автор
      10.09.2024 07:36
      +5

      Ну, тут все просто! Сначала NDA, потом мы берем NDA и вместе с NDA все работает! :)


  1. Abcde123
    10.09.2024 07:36
    +1

    Данила, спасибо за интересный рассказ! Было же время :) когда еще люди не слышали про импортозамещение и интегрировал Цуцм со Skype, PAGA, Tetra, Skype for Business, CMS. И, конечно, качество голоса конференций на Asterisk и близко не дотягивало до Cisco.


  1. kirillgal
    10.09.2024 07:36
    +2

    Это проблема современного ИТ: компании внутри себя не используют собственные продукты.


    1. Abcde123
      10.09.2024 07:36
      +1

      Это разные ниши - возможно, будет понятно после использования telepresence.


    1. NiCOOLaS
      10.09.2024 07:36
      +3

      Не всегда "свой" продукт подходит для себя внутри, так как может быть заточен не под "кровавый ентерпрайз"

      Имхо


  1. arvidasgafiulin
    10.09.2024 07:36
    +2

    Добавлю ясности:) Мы используем Яндекс 360 внутри, но есть технические детали. 1) Кодеки у нас Zoom и Cisco, они умеют звонить в Телемост по SIP, по этому по факту это единая ВКС система. А партнерам мы можем звонить в их ВКС системы 2) Календарь и Почта у нас Я360, ms exchange интегрирован с ним, а сам в свою очередь интегрирован с Zoom для проброса календаря, так как Zoom с ним работает из коробки. По сути он технический слой. По этому мы активно используем как свои продукты, так и решения лидеров рынка.