Встречи Microsoft Teams
Use the Teams meeting pipeline when you want Hermes to ingest Microsoft Graph meeting events, fetch transcripts first, fall back to recordings plus STT when needed, and deliver a structured summary to downstream sinks.
Эта страница посвящена настройке и включению:
-
Graph credentials
-
webhook listener configuration
-
Teams delivery modes
-
pipeline config shape
Для операций на 2-й день, проверок перед запуском и рабочего листа оператора используйте отдельное руководство: Operate the Teams Meeting Pipeline.
Что делает эта функция
Конвейер:
-
receives Microsoft Graph webhook events
-
resolves the meeting and prefers transcript artifacts first
-
falls back to recording download plus STT when no usable transcript is available
-
stores durable job state and sink records locally
-
can write summaries to Notion, Linear, and Microsoft Teams
Действия оператора выполняются из CLI (подкоманда teams-pipeline регистрируется плагином teams_pipeline — включите его через hermes plugins enable teams_pipeline или задайте plugins.enabled: [teams_pipeline] в config.yaml):
hermes teams-pipeline validate
hermes teams-pipeline list
hermes teams-pipeline maintain-subscriptions
Предварительные требования
Перед включением конвейера встреч убедитесь, что у вас есть:
-
a working Hermes install
-
the existing Microsoft Teams bot setup if you want Teams outbound delivery
-
Microsoft Graph application credentials with the permissions required for the meeting resources you plan to subscribe to
-
a public HTTPS URL that Microsoft Graph can call for webhook delivery
-
ffmpeginstalled if you want recording-plus-STT fallback
Шаг 1: Добавьте учётные данные Microsoft Graph
Добавьте учётные данные только для приложения Graph в ~/.hermes/.env:
MSGRAPH_TENANT_ID=<tenant-id>
MSGRAPH_CLIENT_ID=<client-id>
MSGRAPH_CLIENT_SECRET=<client-secret>
Эти учётные данные используются:
-
the Graph client foundation
-
subscription maintenance commands
-
meeting resolution and artifact fetches
-
Graph-based Teams outbound delivery when you do not provide a dedicated Teams access token
Шаг 2: Включите слушатель вебхука Graph
Слушатель вебхука — это платформы шлюза с именем msgraph_webhook. Как минимум, включите его и задайте значение состояния клиента:
MSGRAPH_WEBHOOK_ENABLED=true
MSGRAPH_WEBHOOK_PORT=8646
MSGRAPH_WEBHOOK_CLIENT_STATE=<random-shared-secret>
MSGRAPH_WEBHOOK_ACCEPTED_RESOURCES=communications/onlineMeetings
Слушатель предоставляет:
-
/msgraph/webhookfor Graph notifications -
/healthfor a simple health check
Вам нужно направить ваш публичный HTTPS-конечный пункт на этот слушатель. Например, если ваш публичный домен https://ops.example.com, ваш URL уведомлений Graph обычно будет:
https://ops.example.com/msgraph/webhook
Шаг 3: Настройка доставки в Teams и поведения конвейера
Конвейер встреч считывает свою конфигурацию выполнения из существующей записи платформы teams. Параметры конвейера находятся в teams.extra.meeting_pipeline. Исходящая доставка Teams остаётся на обычной поверхности конфигурации платформы Teams.
Пример ~/.hermes/config.yaml:
platforms:
msgraph_webhook:
enabled: true
extra:
port: 8646
client_state: "replace-me"
accepted_resources:
- "communications/onlineMeetings"
teams:
enabled: true
extra:
client_id: "your-teams-client-id"
client_secret: "your-teams-client-secret"
tenant_id: "your-teams-tenant-id"
# исходящая доставка резюме
delivery_mode: "graph" # or incoming_webhook
team_id: "team-id"
channel_id: "channel-id"
# incoming_webhook_url: "https://..."
meeting_pipeline:
transcript_min_chars: 80
transcript_required: false
transcription_fallback: true
ffmpeg_extract_audio: true
notion:
enabled: false
linear:
enabled: false
Режимы доставки в Teams
Конвейер поддерживает два режима доставки резюме в Teams внутри существующего плагина Teams.
incoming_webhook
Используйте этот режим, когда вам нужна простая отправка вебхука в Teams без создания сообщений в канале через Graph.
Обязательная конфигурация:
platforms:
teams:
enabled: true
extra:
delivery_mode: "incoming_webhook"
incoming_webhook_url: "https://..."
graph
Используйте этот режим, когда вы хотите, чтобы Hermes отправлял резюме через Microsoft Graph в чат или канал Teams.
Поддерживаемые цели:
-
chat_id -
team_id+channel_id -
team_id+home_channelfallback for the existing Teams platform
Пример:
platforms:
teams:
enabled: true
extra:
delivery_mode: "graph"
team_id: "team-id"
channel_id: "channel-id"
Шаг 4: Запуск шлюза
Запустите Hermes в обычном режиме после обновления конфигурации:
hermes gateway run
Или, если вы запускаете Hermes в Docker, запустите шлюз тем же способом, который вы уже используете для вашего развёртывания.
Проверьте слушатель:
curl http://localhost:8646/health
Шаг 5: Создание подписок Graph
Используйте CLI плагина для создания и проверки подписок.
Примеры:
hermes teams-pipeline subscribe \
--resource communications/onlineMeetings/getAllTranscripts \
--notification-url https://ops.example.com/msgraph/webhook \
--client-state "$MSGRAPH_WEBHOOK_CLIENT_STATE"
hermes teams-pipeline subscribe \
--resource communications/onlineMeetings/getAllRecordings \
--notification-url https://ops.example.com/msgraph/webhook \
--client-state "$MSGRAPH_WEBHOOK_CLIENT_STATE"