Teams Meeting Pipeline

Управляйте пайплайном встреч Teams через Hermes CLI — создавайте сводки встреч, проверяйте статус пайплайна, перезапускайте задания, управляйте подписками Microsoft Graph.

Метаданные навыка

ИсточникВстроенный (установлен по умолчанию)
Путьskills/productivity/teams-meeting-pipeline
Версия1.1.0
АвторHermes Agent + Teknium
ЛицензияMIT
ТегиTeams, Microsoft Graph, Meetings, Productivity, Operations

Справочник: полный SKILL.md

инфо

Ниже — полное определение навыка, которое Hermes загружает при его активации. Именно этот текст агент получает в качестве инструкций, когда навык включён.

Teams Meeting Pipeline

Используй этот навык всякий раз, когда пользователь спрашивает о сводках встреч Microsoft Teams, транскрипциях, записях, action items, подписках Graph или любых операционных вопросах о пайплайне встреч Teams. Работает на любом языке — триггеры ниже приведены как примеры, список неполный.

Весь операторский интерфейс — это подкоманды hermes teams-pipeline, запускаемые через терминал. Новых инструментов для модели в этом пайплайне нет — CLI и есть единственный интерфейс.

Когда использовать

Пользователь хочет:

  • получить сводку встречи Teams / извлечь action items / забрать заметки
  • проверить статус пайплайна, изучить сохранённое задание или посмотреть список последних встреч
  • перезапустить задание, которое упало или требует новой сводки
  • проверить настройку Microsoft Graph после изменения конфигурации или переменных окружения
  • разобраться, почему сводка встречи не пришла или новые встречи не поступают в пайплайн
  • управлять вебхук-подписками Graph (создать, обновить, удалить, посмотреть)
  • настроить автоматическое обновление подписок (см. подводный камень ниже)

Примеры триггеров на разных языках (не исчерпывающий список):

  • English: “summarize the Teams meeting”, “pipeline status”, “replay job X”
  • Turkish: “Teams meeting özetle”, “action item çıkar”, “toplantı notu”, “pipeline durumu”, “replay job”

Требования

Перед использованием пайплайна убедитесь, что в ~/.hermes/.env заданы переменные:

MSGRAPH_TENANT_ID=...
MSGRAPH_CLIENT_ID=...
MSGRAPH_CLIENT_SECRET=...

Если какой-то из них нет, направьте пользователя к руководству по регистрации Azure-приложения по адресу /docs/guides/microsoft-graph-app-registration — потребуется регистрация Azure AD app с правами Graph application permissions и выданным admin consent.

Справочник по командам

Статус и диагностика (начинать отсюда)

hermes teams-pipeline validate              # снимок конфигурации — запускать после любых изменений
hermes teams-pipeline token-health          # статус токена Graph
hermes teams-pipeline token-health --force-refresh   # принудительное получение нового токена
hermes teams-pipeline list                  # последние задания встреч
hermes teams-pipeline list --status failed  # только упавшие задания
hermes teams-pipeline show <job-id>         # подробности конкретного задания
hermes teams-pipeline subscriptions         # текущие вебхук-подписки Graph

Перезапуск и отладка

hermes teams-pipeline run <job-id>          # перезапуск сохранённого задания (повторная сводка и доставка)
hermes teams-pipeline fetch --meeting-id <id>   # dry-run: получить встречу и транскрипт без сохранения
hermes teams-pipeline fetch --join-web-url "<url>"   # dry-run по URL входа

Управление подписками

hermes teams-pipeline subscribe \
  --resource communications/onlineMeetings/getAllTranscripts \
  --notification-url https://<your-public-host>/msgraph/webhook \
  --client-state "$MSGRAPH_WEBHOOK_CLIENT_STATE"

hermes teams-pipeline renew-subscription <sub-id> --expiration <iso-8601>
hermes teams-pipeline delete-subscription <sub-id>
hermes teams-pipeline maintain-subscriptions            # обновить подписки, истекающие в ближайшее время
hermes teams-pipeline maintain-subscriptions --dry-run  # показать, что было бы обновлено

Дерево решений для типичных запросов

  • Пользователь спрашивает «почему я не получил сводку сегодняшней встречи?» → начните с list --status failed, затем show <job-id> для нужной строки. Если задание вообще не появилось — проверьте subscriptions: вебхук мог истечь (см. подводный камень ниже).
  • Пользователь спрашивает «работает ли настройка?» → validate, затем token-health, затем subscriptions. Если все три проходят — запросите тестовую встречу и проверьте list на свежую строку.
  • Пользователь просит «перезапустить суммаризацию встречи X» → list для поиска job ID, затем run <job-id>. Если снова падает — show <job-id> для просмотра ошибки и fetch --meeting-id для dry-run разрешения артефактов.
  • Пользователь хочет «добавить встречу X в пайплайн» → как правило, этого делать не нужно: пайплайн работает по подпискам, а не по встречам. Если нужна суммаризация конкретной прошлой встречи — используйте fetch для получения транскрипта, а затем run после создания задания.

Критический подводный камень: подписки Graph истекают через 72 часа

Microsoft Graph ограничивает вебхук-подписки 72 часами и не обновляет их автоматически. Если maintain-subscriptions не запланирован в расписании, уведомления о встречах перестанут поступать через 3 дня после ручного создания подписки — без каких-либо ошибок.

Когда пользователь сообщает «вчера пайплайн работал, сегодня ничего не приходит»:

  1. Выполните hermes teams-pipeline subscriptions — если список пуст или все записи показывают expirationDateTime в прошлом, причина именно в этом.
  2. Пересоздайте подписку командой subscribe, как показано выше.
  3. Сразу настройте автоматическое обновление через hermes cron add, systemd timer или обычный crontab. В операторском руководстве по адресу /docs/guides/operate-teams-meeting-pipeline#automating-subscription-renewal-required-for-production описаны все три варианта. Интервал в 12 часов безопасен — это шестикратный запас до 72-часового лимита.

Другие подводные камни

  • Транскрипт ещё не готов. Teams генерирует артефакт транскрипта через некоторое время после окончания встречи. fetch --meeting-id для только что завершившейся встречи может вернуть пустой результат. Подождите 2–5 минут и повторите, или дайте вебхуку Graph самому запустить приём данных.
  • Несоответствие режима доставки. Если сводки создаются (list показывает успех), но в Teams ничего не приходит — проверьте platforms.teams.extra.delivery_mode и соответствующую конфигурацию цели (incoming_webhook_url либо chat_id, либо team_id+channel_id). Модуль записи берёт эти значения из config.yaml или переменных окружения TEAMS_*.
  • Права Graph-приложения. Токен получается без ошибок (token-health проходит), но вызовы Graph API возвращают 401/403 — такое бывает, когда права были добавлены, но admin consent не выдан повторно. Попросите пользователя открыть регистрацию приложения на портале Azure и снова нажать «Grant admin consent».

Связанная документация

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

  • Руководство по регистрации Azure-приложения: /docs/guides/microsoft-graph-app-registration
  • Полная настройка пайплайна: /docs/user-guide/messaging/teams-meetings
  • Операторское руководство (автоматизация обновления, диагностика, чеклист запуска): /docs/guides/operate-teams-meeting-pipeline
  • Настройка вебхук-слушателя: /docs/user-guide/messaging/msgraph-webhook
ESC