Перейти к основному содержимому

Управление конвейером собраний Teams

Используйте это руководство после того, как вы уже включили функцию из раздела Собрания Teams.

Эта страница охватывает:

  • основные команды CLI для оператора
  • регулярное обслуживание подписок
  • устранение неисправностей
  • проверки перед запуском
  • рабочая таблица развёртывания

Основные команды оператора​

Проверка снимка конфигурации​

vibeos teams-pipeline validate

Используйте эту команду первой после любого изменения конфигурации.

Проверка состояния токенов​

vibeos teams-pipeline token-health
vibeos teams-pipeline token-health --force-refresh

Используйте --force-refresh, если подозреваете, что состояние аутентификации устарело.

Проверка подписок​

vibeos teams-pipeline subscriptions

Продление подписок с истекающим сроком​

vibeos teams-pipeline maintain-subscriptions
vibeos teams-pipeline maintain-subscriptions --dry-run

Автоматизация продления подписок (ОБЯЗАТЕЛЬНО для продакшена)​

Подписки Microsoft Graph истекают максимум через 72 часа. Если их никто не продлевает, уведомления о собраниях бесшумно прекращаются через 3 дня, и конвейер выглядит «сломанным». Это основная причина сбоев в работе любой интеграции на основе Graph.

Вы ОБЯЗАНЫ запускать maintain-subscriptions по расписанию. Выберите один из трёх вариантов:

Вариант 1: VibeOS cron (рекомендуется, если вы уже используете шлюз VibeOS)​

VibeOS поставляется со встроенным планировщиком cron. Режим --no-agent запускает скрипт как задачу (вместо использования LLM), а --script должен указывать на файл в каталоге ~/.vibeos/scripts/. Сначала создайте скрипт:

mkdir -p ~/.vibeos/scripts
cat > ~/.vibeos/scripts/maintain-teams-subscriptions.sh <<'EOF'
#!/usr/bin/env bash
exec vibeos teams-pipeline maintain-subscriptions
EOF
chmod +x ~/.vibeos/scripts/maintain-teams-subscriptions.sh

Затем зарегистрируйте задачу cron только для скрипта, которая запускается каждые 12 часов (даёт 6-кратный запас относительно 72-часового окна истечения):

vibeos cron create "0 */12 * * *" \
--name "teams-pipeline-maintain-subscriptions" \
--no-agent \
--script maintain-teams-subscriptions.sh \
--deliver local

Проверьте, что задача зарегистрирована, и посмотрите время следующего запуска:

vibeos cron list
vibeos cron status # статус планировщика

Вариант 2: systemd timer (рекомендуется для продакшен-развёртываний на Linux)​

Создайте /etc/systemd/system/vibeos-teams-pipeline-maintain.service:

[Unit]
Description=Обслуживание подписок конвейера собраний VibeOS Teams
After=network-online.target

[Service]
Type=oneshot
User=vibeos
EnvironmentFile=/etc/vibeos/env
ExecStart=/usr/local/bin/vibeos teams-pipeline maintain-subscriptions

И /etc/systemd/system/vibeos-teams-pipeline-maintain.timer:

[Unit]
Description=Запуск обслуживания подписок конвейера собраний VibeOS Teams каждые 12 часов

[Timer]
OnBootSec=5min
OnUnitActiveSec=12h
Persistent=true

[Install]
WantedBy=timers.target

Включите:

sudo systemctl daemon-reload
sudo systemctl enable --now vibeos-teams-pipeline-maintain.timer
systemctl list-timers vibeos-teams-pipeline-maintain.timer

Вариант 3: Обычный crontab​

0 */12 * * * /usr/local/bin/vibeos teams-pipeline maintain-subscriptions >> /var/log/vibeos/teams-pipeline-maintain.log 2>&1

Убедитесь, что окружение cron содержит учётные данные MSGRAPH_*. Самый простой способ: подключить ~/.vibeos/.env в начале скрипта-обёртки, который вызывает crontab.

Проверка работы продления​

После настройки расписания проверьте активность продления после первого запланированного запуска:

vibeos teams-pipeline subscriptions   # должно показывать, что expirationDateTime сдвинулось
vibeos teams-pipeline maintain-subscriptions --dry-run # большую часть времени должно показывать «0 expiring soon»

Если вы когда-нибудь заметите, что ваш вебхук Graph «перестал работать» ровно через ~72 часа, это первое, что нужно проверить: действительно ли запускалась задача продления?

Просмотр последних задач​

vibeos teams-pipeline list
vibeos teams-pipeline list --status failed
vibeos teams-pipeline show <job-id>

Повторный запуск сохранённой задачи​

vibeos teams-pipeline run <job-id>

Пробное получение артефактов собрания​

vibeos teams-pipeline fetch --meeting-id <meeting-id>
vibeos teams-pipeline fetch --join-web-url "<join-url>"

Регулярная инструкция​

После первоначальной настройки​

Выполните по порядку:

vibeos teams-pipeline validate
vibeos teams-pipeline token-health --force-refresh
vibeos teams-pipeline subscriptions

Затем инициируйте или дождитесь реального события собрания и подтвердите:

vibeos teams-pipeline list
vibeos teams-pipeline show <job-id>

Ежедневные или периодические проверки​

  • выполните vibeos teams-pipeline maintain-subscriptions --dry-run
  • проверьте vibeos teams-pipeline list --status failed
  • убедитесь, что целевой чат или канал Teams для доставки всё ещё правильный

Перед изменением URL вебхуков или целей доставки​

  • обновите публичный URL уведомлений или конфигурацию целевого канала Teams
  • выполните vibeos teams-pipeline validate
  • продлите или пересоздайте затронутые подписки
  • подтвердите, что новые события попадают в ожидаемый приёмник

Устранение неисправностей​

Задачи не создаются​

Проверьте:

  • включён ли msgraph_webhook
  • указывает ли публичный URL уведомлений на /msgraph/webhook
  • совпадает ли состояние клиента в подписке с MSGRAPH_WEBHOOK_CLIENT_STATE
  • существуют ли подписки удалённо и не истекли ли они

Задачи остаются в состоянии повторных попыток или завершаются ошибкой до создания сводки​

Проверьте:

  • права доступа к расшифровке и её доступность
  • права доступа к записи и доступность артефактов
  • доступность ffmpeg, если включён резервный вариант записи
  • состояние токена Graph

Сводки созданы, но не доставлены в Teams​

Проверьте:

  • platforms.teams.enabled: true
  • delivery_mode
  • incoming_webhook_url для режима вебхука
  • chat_id или team_id плюс channel_id для режима Graph
  • конфигурацию аутентификации Teams, если используется отправка через Graph

Дубликаты или неожиданные повторные запуски​

Проверьте:

  • не запускали ли вы вручную задачу с помощью vibeos teams-pipeline run
  • существует ли уже запись приёмника для этого собрания
  • не включили ли вы намеренно путь повторной отправки в локальной конфигурации

Чек-лист запуска​

  • Учётные данные Graph присутствуют и корректны
  • msgraph_webhook включён и доступен из публичного интернета
  • MSGRAPH_WEBHOOK_CLIENT_STATE задан и соответствует подпискам
  • Создана подписка на расшифровку
  • Создана подписка на запись, если требуется резервный вариант STT
  • ffmpeg установлен, если включён резервный вариант записи
  • Целевой канал доставки Teams настроен и проверен
  • Приёмники Notion и Linear настроены только в случае реальной необходимости
  • vibeos teams-pipeline validate возвращает успешный снимок
  • vibeos teams-pipeline token-health --force-refresh выполняется успешно
  • Запланировано maintain-subscriptions (VibeOS cron, systemd timer или crontab — см. Автоматизация продления подписок). Без этого подписки Graph бесшумно истекают в течение 72 часов.
  • Реальное сквозное событие собрания создало сохранённую задачу
  • Хотя бы одна сводка достигла целевого приёмника доставки

Руководство по выбору режима доставки​

РежимКогда использоватьКомпромисс
incoming_webhookНужна только простая отправка в TeamsСамая простая настройка, меньше контроля
graphНужна отправка в канал или чат через GraphБольше контроля, больше настроек аутентификации и цели

Рабочая таблица оператора​

Заполните перед развёртыванием:

ПунктЗначение
Публичный URL уведомлений
ID тенанта Graph
ID клиента Graph
Состояние клиента вебхука
Подписка на ресурс расшифровки
Подписка на ресурс записи
Режим доставки Teams
ID чата Teams или команда/канал
ID базы данных Notion
ID команды Linear
Переопределение пути хранения, если есть
Ответственный за ежедневные проверки

Рабочая таблица проверки изменений​

Используйте перед изменением развёртывания:

ВопросОтвет
Меняем ли мы публичный URL вебхука?
Меняем ли мы учётные данные Graph?
Меняем ли мы режим доставки Teams?
Переходим ли мы в новый чат или канал Teams?
Нужно ли пересоздать или продлить подписки?
Нужен ли нам свежий сквозной тестовый запуск?

Связанные документы​