












Hermes Agent(GitHub 164k star)은 단순히 터미널에서의 코딩 보조 도구가 아닙니다. 그의 메시지 게이트웨이를 통해 Agent는 24개의 메시지 플랫폼——Telegram, Discord, Slack, WeChat, Lark, DingTalk, Microsoft Teams 등에 연결될 수 있습니다. 한 플랫폼에서 구성한 Agent의 기능(Skills, 도구 호출, 승인 프로세스)은 모든 플랫폼에서 일관되게 사용됩니다.
이 글은 Microsoft Teams 연결 방법에 초점을 맞추고 있습니다: 6단계로 AI Agent 로봇을 Teams 채팅방에 표시하는 방법.
Teams 群聊 ←── HTTPS Webhook ──→ Hermes Gateway (端口 3978) ←──→ Agent + LLM
와 Slack의 Socket Mode는 다르며, Teams은 공공 HTTPS Webhook을 통해 메시지를 푸시합니다. 당신의 Hermes 인스턴스는 공공 인터넷에 접근 가능한 엔드포인트가 필요합니다 - 로컬 개발용 터널링 도구, 생산 환경용 실제 도메인입니다.
| 시나리오 | 동작 |
|---|---|
| 개인 메시지 (1:1) | 메시지마다 Agent가 응답하며, @필요 없음 |
| 그룹 채팅 | @로봇일 때만 응답 |
| 채널 | @로봇일 때만 응답 |
팀즈는 @mention을 <at>BotName</at> 태그로 전달하고, Hermes가 자동으로剥离 후 처리합니다.
Microsoft의 @microsoft/teams.cli 자동화 Bot 등록, Azure Portal 없이 사용 가능:
npm install -g @microsoft/teams.cli@preview
teams login
로그인을 검증하고 AAD Object ID를 얻으세요(후에 흰 목록 설정에 사용):
teams status --verbose
팀즈는 localhost로 메시지를 전송할 수 없습니다. 로컬 개발에는 터널링 도구가 필요합니다:
# Microsoft devtunnel(推荐,URL 持久)
devtunnel create hermes-bot --allow-anonymous
devtunnel port create hermes-bot -p 3978 --protocol https
devtunnel host hermes-bot
# 或 ngrok
ngrok http 3978
# 或 cloudflared
cloudflared tunnel --url http://localhost:3978
출력 결과를 기록하세요https:// URL, 다음 단계를 사용합니다. 개발 중에 터널을 계속 실행합니다.
teams app create \
--name "Hermes" \
--endpoint "https://<your-tunnel-url>/api/messages"
CLI 출력 CLIENT_ID, CLIENT_SECRET 및 TENANT_ID을 생성합니다. Client Secret을 즉시 저장하세요 - 두 번째로 다시 표시되지 않습니다.
를 ~/.hermes/.env에 추가합니다:
# 必填
TEAMS_CLIENT_ID=<your-client-id>
TEAMS_CLIENT_SECRET=<your-client-secret>
TEAMS_TENANT_ID=<your-tenant-id>
# 限制访问用户(强烈建议)
# 用 teams status --verbose 获取 AAD Object ID
TEAMS_ALLOWED_USERS=<your-aad-object-id>
또는 config.yaml을 사용하여 구성할 수도 있습니다:
platforms:
teams:
enabled: true
extra:
client_id: "your-client-id"
client_secret: "your-secret"
tenant_id: "your-tenant-id"
port: 3978
HERMES_UID=$(id -u) HERMES_GID=$(id -g) docker compose up -d gateway
작동 여부를 확인합니다.
curl http://localhost:3978/health
# 应返回: ok
docker logs -f hermes
# 看到: [teams] Webhook server listening on 0.0.0.0:3978/api/messages
teams app get <teamsAppId> --install-link
출력된 링크를 엽니다. Teams 클라이언트에서 설치합니다. 설치가 완료되면 로봇에게 메시지를 보내세요—이제 준비되었습니다.
이것은 Teams 통합 중 가장 유용한 기능 중 하나입니다. Agent가 위험한 명령(파일 삭제, shell 명령 실행 등)을 실행해야 할 때, /approve를 수동으로 입력하게 하지 않고 Adaptive Card를 보냅니다. 4개의 버튼이 포함되어 있습니다:
| 버튼 | 행동 |
|---|---|
| Allow Once | 이 특정 명령을 승인합니다 |
| 세션 허용 | 이 세션 내에서 동일한 명령을 자동으로 승인합니다 |
| 항상 허용 | 이 모드를 영구적으로 승인합니다 |
| 거부 | 실행을 거부합니다 |
버튼을 클릭하면 카드가 즉시 승인 결정으로 업데이트되며, Agent는 계속 실행하거나 중지합니다
Hermes Agent의 Teams 통합은 채팅뿐만 아니라 회의록을 자동으로 푸시할 수도 있습니다. Teams Meeting Pipeline 플러그인을 활성화한 후, 회의가 끝난 후 자동으로 회의록을 생성하고 지정된 Teams 채널이나 채팅으로 푸시합니다
두 가지 푸시 모드:
| 모드 | 사용 시나리오 | 제한 |
|---|---|---|
incoming_webhook |
채널에 간단히 게시 | 스레드 및 답글 기능 지원하지 않음 |
graph |
봇으로 게시, 스레드 지원 | Microsoft Graph 권한 필요 |
graph 모드 구성:
platforms:
teams:
enabled: true
extra:
client_id: "..."
client_secret: "..."
tenant_id: "..."
delivery_mode: "graph"
chat_id: "19:meeting_..." # 推送到聊天
# 或
# team_id: "..."
# channel_id: "..." # 推送到频道
로컬 개발용 터널, 생산 환경용 실제 도메인:
# 创建 Bot 时直接用生产域名
teams app create \
--name "Hermes" \
--endpoint "https://your-domain.com/api/messages"
# 已有 Bot 更新端点
teams app update --id <teamsAppId> --endpoint "https://your-domain.com/api/messages"
요구 사항:
- 포트 3978(또는 TEAMS_PORT 지정된 포트)가 공인 네트워크에서 접근 가능
- TLS 인증서가 유효함(Teams는 자체 서명 인증서를 거부함)
⚠️ TEAMS_ALLOWED_USERS를 설정해야 하며, 그렇지 않으면 Bot을 찾거나 설치할 수 있는 모든 사람이 그것과 상호작용할 수 있습니다.
보안 최선의 관행:
TEAMS_ALLOWED_USERS에 권한 부여 사용자의 AAD Object ID를 입력하고, 권한이 없는 메시지는 조용히 제거합니다TEAMS_CLIENT_SECRET. ~/.hermes/.env는 비밀번호처럼 취급하고 주기적으로 변경하세요600. chmod 600 ~/.hermes/.env/api/messages로 설정하세요: | 설정 참조 | 변수 |
|---|---|
TEAMS_CLIENT_ID |
설명__JHSNS_SEG_62bbadd4_94__Azure AD 앱(클라이언트)ID |
TEAMS_CLIENT_SECRET |
Azure AD 클라이언트 키 |
TEAMS_TENANT_ID |
Azure AD 테넌트 ID |
TEAMS_ALLOWED_USERS |
쉼표로 구분된 AAD Object ID 백리스트 |
TEAMS_ALLOW_ALL_USERS |
설정true백리스트 건너뛰기(권장하지 않음) |
TEAMS_HOME_CHANNEL |
타임리프/활성 메시지의 대화 ID |
TEAMS_PORT |
웹훅 포트(기본값 3978) |
| 질문 | 해결 방법 |
|---|---|
| health 엔드포인트는 정상이지만 Bot이 응답하지 않음 | 트뉴얼이 여전히 실행 중인지 확인하고, Bot 엔드포인트가 트뉴얼 URL과 일치하는지 확인 |
KeyError: 'teams'로그 오류 |
컨테이너를 재시작합니다 |
| 인증 오류 | CLIENT_ID, CLIENT_SECRET, TENANT_ID를 확인하세요 |
| 봇이 메시지를 받았지만 무시합니다 | AAD Object ID가 ALLOWED_USERS에 없습니다 |
| 트렁커 URL이 재시작 후 변경되었습니다 | devtunnel은 명명된 트렁커 URL을 영구적으로 사용합니다. ngrok 무료 버전은 매번 변경되므로 teams app update를 사용하여 업데이트해야 합니다 |
No inference provider configured |
ANTHROPIC_API_KEY(또는 다른 LLM key)가 설정되었는지 확인하세요 |
팀은 그중 하나입니다. Hermes Agent는 동시에 다음을 지원합니다:
Telegram, Discord, Slack, WhatsApp, Signal, Email, SMS(Twilio), Home Assistant, Mattermost, Matrix, DingTalk, Lark, WeCom, WeCom Callback, WeChat, iMessage(BlueBubbles), QQ Bot, Yuánbǎo, Microsoft Teams, Teams Meetings, LINE, SimpleX Chat, ntfy, Open WebUI, Webhooks.
하나의 Agent, 하나의 Skills와 도구 설정, 모든 플랫폼에서 사용 가능합니다.
저작자: itech001
출처: 공식 블로그: AI인공지능시대
웹사이트 : https://www.theaiera.cn/
매일 최첨단 AI 뉴스 정보와 기술 연구를 공유합니다.
본 글이 처음 발표된 곳은 AI인공지능 시대이며, 재해면 출처를 밝히셔야 합니다.
이 콘텐츠는 인셔셔RSS(RSS 리더)가 자동으로 집계한 것으로 읽기 참고용입니다. 원문 출처 — 저작권은 원저작자에게 있습니다.