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

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

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

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

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

hermes teams-pipeline validate

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

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

hermes teams-pipeline token-health
hermes teams-pipeline token-health --force-refresh

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

Просмотр подписок

hermes teams-pipeline subscriptions

Обновление подписок с истекающим сроком

hermes teams-pipeline maintain-subscriptions
hermes teams-pipeline maintain-subscriptions --dry-run

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

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

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

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

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

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

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

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

hermes cron list
hermes cron status        # scheduler status

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

[Unit]
Description=Hermes Teams pipeline subscription maintenance
After=network-online.target

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

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

[Unit]
Description=Run Hermes Teams pipeline subscription maintenance every 12 hours

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

[Install]
WantedBy=timers.target

Включите:

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

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

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

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

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

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

hermes teams-pipeline subscriptions   # should show expirationDateTime advanced
hermes teams-pipeline maintain-subscriptions --dry-run   # should show "0 expiring soon" most of the time

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

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

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

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

hermes teams-pipeline run <job-id>

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

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

Регулярные операции

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

Запустите их по порядку:

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

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

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

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

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

Диагностика сбоев

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

Проверьте:

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

Проверьте:

Сводки создаются, но не доставляются в Teams

Проверьте:

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

Проверьте:

Контрольный список перед запуском

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

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

Рабочий лист оператора

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

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

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

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

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