튜토리얼 카테고리 Skills 소개
ZH EN JA KO
채널 연동

OpenClaw Microsoft Teams 연결 튜토리얼

· 18 분 소요

서문

Microsoft Teams는 기업 협업의 주류 플랫폼 중 하나로, 다양한 조직과 기업에서 널리 사용되고 있습니다. OpenClaw를 Teams에 연결하면 기업 내부에 안전하고 제어 가능한 AI 어시스턴트를 제공할 수 있습니다. 이 글에서는 Azure AD 앱 등록부터 Teams 앱 배포까지의 전체 프로세스를 상세히 설명합니다.

사전 조건

  • OpenClaw가 설치되어 정상적으로 실행 중
  • Microsoft 365 조직 계정 보유 (개인 계정은 기능 제한)
  • Azure 구독 보유 (무료 티어 가능)
  • Teams 관리자 권한 보유 (또는 관리자에게 앱 승인을 요청할 수 있음)
  • OpenClaw 서비스가 공인 HTTPS 주소로 접근 가능

아키텍처 개요

Teams Bot의 메시지 흐름은 다음과 같습니다:

사용자가 Teams에서 메시지 전송
         ↓
Microsoft Bot Framework Service
         ↓
HTTPS Webhook을 통해 OpenClaw로 전송
         ↓
OpenClaw가 메시지를 처리하고 AI 모델 호출
         ↓
Bot Framework API를 통해 응답 전송
         ↓
사용자가 Teams에서 응답 수신

1단계: Azure AD 앱 등록

1.1 앱 등록 생성

  1. Azure Portal에 로그인합니다
  2. Azure Active Directory앱 등록을 검색하여 진입합니다
  3. 새 등록을 클릭합니다
  4. 다음 정보를 입력합니다:
필드
이름 OpenClaw Teams Bot
지원되는 계정 유형 모든 조직 디렉터리의 계정 (다중 테넌트)
리디렉션 URI 비워 둠
  1. 등록을 클릭합니다

1.2 핵심 정보 기록

등록 완료 후 개요 페이지에서 다음 정보를 기록합니다:

애플리케이션(클라이언트) ID: 12345678-abcd-efgh-ijkl-123456789012
디렉터리(테넌트) ID: 87654321-dcba-hgfe-lkji-210987654321

1.3 클라이언트 비밀 생성

  1. 좌측 메뉴에서 인증서 및 비밀을 클릭합니다
  2. 새 클라이언트 비밀을 클릭합니다
  3. 설명을 입력합니다 (예: "OpenClaw Bot Secret")
  4. 만료 기간을 선택합니다 (24개월 권장)
  5. 추가를 클릭합니다
  6. 비밀 값을 즉시 복사합니다 (페이지를 떠나면 다시 확인할 수 없습니다)
클라이언트 비밀: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
주의: 이 비밀을 즉시 저장해 주십시오. 페이지 새로고침 후에는 다시 확인할 수 없습니다!

2단계: Bot 리소스 생성

2.1 Azure Bot 생성

  1. Azure Portal에서 Azure Bot을 검색합니다
  2. 만들기를 클릭합니다
  3. 다음 정보를 입력합니다:
필드
Bot 핸들 openclaw-teams-bot
구독 Azure 구독 선택
리소스 그룹 새로 만들기 또는 기존 리소스 그룹 선택
가격 책정 계층 F0 (무료)
Microsoft 앱 ID 유형 다중 테넌트
만들기 유형 기존 앱 등록 사용
앱 ID 이전 단계에서 획득한 애플리케이션(클라이언트) ID
  1. 검토 + 만들기만들기를 클릭합니다

2.2 메시지 엔드포인트 설정

Bot 리소스 생성 완료 후:

  1. Bot 리소스 페이지로 이동합니다
  2. 좌측 메뉴에서 구성을 클릭합니다
  3. 메시지 엔드포인트에 입력합니다:
https://your-domain.com/webhook/teams/messages
  1. 적용을 클릭합니다

2.3 Teams 채널 활성화

  1. Bot 리소스의 좌측 메뉴에서 채널을 클릭합니다
  2. 사용 가능한 채널 목록에서 Microsoft Teams를 클릭합니다
  3. 서비스 약관에 동의합니다
  4. 적용을 클릭합니다

Teams 채널 활성화 후 상태가 실행 중으로 표시되어야 합니다.

3단계: OpenClaw 설정

3.1 설정 파일 방식

~/.config/openclaw/openclaw.json5를 편집합니다:

{
  channels: {
    teams: {
      enabled: true,
      // Azure AD 애플리케이션(클라이언트) ID
      appId: "12345678-abcd-efgh-ijkl-123456789012",
      // Azure AD 클라이언트 비밀
      appPassword: "your-client-secret-value",
      // 테넌트 ID (다중 테넌트 모드에서는 비워 둘 수 있음)
      tenantId: "",

      // Webhook 경로
      webhookPath: "/webhook/teams/messages",

      // 메시지 처리 설정
      message: {
        // 팀 채널에서 @Bot 멘션이 필요한지 여부
        mentionRequired: true,
        // 1:1 채팅에서 자동 응답
        personalChatEnabled: true,
        // 그룹 채팅에서 활성화 여부
        groupChatEnabled: true
      },

      // 응답 설정
      reply: {
        // Adaptive Card 형식 사용 여부 (더 보기 좋음)
        useAdaptiveCard: true,
        // "입력 중" 표시기 표시
        showTyping: true,
        // 긴 메시지 분할 임계값
        maxLength: 28000
      }
    }
  }
}

3.2 환경 변수 방식

export TEAMS_APP_ID="12345678-abcd-efgh-ijkl-123456789012"
export TEAMS_APP_PASSWORD="your-client-secret-value"

3.3 재시작 및 확인

openclaw restart

# Teams 채널 로그 확인
openclaw logs -f --component channel:teams

성공 로그:

[INFO] [channel:teams] Teams Bot 서비스가 시작되었습니다
[INFO] [channel:teams] App ID: 12345678-abcd-****-****-************
[INFO] [channel:teams] Webhook 경로: /webhook/teams/messages
[INFO] [channel:teams] 메시지 수신 대기 중...

4단계: Teams 앱 패키지 생성

Teams 클라이언트에서 Bot을 찾아 사용하려면 Teams 앱 패키지를 만들어야 합니다.

4.1 앱 매니페스트 생성

manifest.json 파일을 생성합니다:

{
  "$schema": "https://developer.microsoft.com/en-us/json-schemas/teams/v1.16/MicrosoftTeams.schema.json",
  "manifestVersion": "1.16",
  "version": "1.0.0",
  "id": "12345678-abcd-efgh-ijkl-123456789012",
  "developer": {
    "name": "Your Organization",
    "websiteUrl": "https://your-domain.com",
    "privacyUrl": "https://your-domain.com/privacy",
    "termsOfUseUrl": "https://your-domain.com/terms"
  },
  "name": {
    "short": "OpenClaw AI",
    "full": "OpenClaw AI Assistant for Teams"
  },
  "description": {
    "short": "AI 지능형 어시스턴트",
    "full": "OpenClaw 기반의 AI 지능형 어시스턴트로, 다양한 대규모 언어 모델을 지원하며 팀에 즉각적인 지능형 질의응답 서비스를 제공합니다."
  },
  "icons": {
    "outline": "outline.png",
    "color": "color.png"
  },
  "accentColor": "#5B5FC7",
  "bots": [
    {
      "botId": "12345678-abcd-efgh-ijkl-123456789012",
      "scopes": ["personal", "team", "groupChat"],
      "supportsFiles": false,
      "isNotificationOnly": false,
      "commandLists": [
        {
          "scopes": ["personal", "team", "groupChat"],
          "commands": [
            {
              "title": "ask",
              "description": "AI에게 질문하기"
            },
            {
              "title": "model",
              "description": "AI 모델 전환"
            },
            {
              "title": "reset",
              "description": "대화 컨텍스트 초기화"
            },
            {
              "title": "help",
              "description": "도움말 정보 표시"
            }
          ]
        }
      ]
    }
  ],
  "permissions": ["identity", "messageTeamMembers"],
  "validDomains": ["your-domain.com"]
}

4.2 아이콘 준비

두 개의 아이콘 파일을 준비합니다:

파일명 크기 설명
color.png 192x192 픽셀 컬러 아이콘, 앱 목록에 사용
outline.png 32x32 픽셀 아웃라인 아이콘, 투명 배경 흰색 전경

4.3 앱 패키징

manifest.json, color.png, outline.png을 ZIP 파일로 패키징합니다:

zip teams-app.zip manifest.json color.png outline.png

4.4 Teams에 업로드

개발자 업로드 (개인 사용):

  1. Teams 클라이언트를 엽니다
  2. 좌측 앱 관리를 클릭합니다
  3. 앱 업로드사용자 정의 앱 업로드를 클릭합니다
  4. teams-app.zip 파일을 선택합니다

조직 레벨 배포 (관리자 작업):

  1. Teams 관리 센터에 로그인합니다
  2. Teams 앱앱 관리로 이동합니다
  3. 새 앱 업로드를 클릭합니다
  4. teams-app.zip 파일을 선택합니다
  5. 검토 후 조직 앱 스토어에 게시합니다

사용 방법

1:1 채팅

  1. Teams에서 OpenClaw AI 앱을 찾습니다
  2. 채팅 시작을 클릭합니다
  3. 질문을 직접 입력하면 AI 응답을 받을 수 있습니다

팀 채널에서 사용

  1. 대상 팀 채널에서 @OpenClaw AI를 입력합니다
  2. 질문을 입력합니다
@OpenClaw AI 프로젝트 주간 보고서 템플릿을 작성해 주세요

그룹 채팅에서 사용

  1. OpenClaw AI를 그룹 채팅에 추가합니다
  2. @Bot 후 질문을 입력합니다

Adaptive Card 형식

Adaptive Card를 활성화하면 Bot의 응답이 더 아름답고 구조화되어 표시됩니다:

{
  channels: {
    teams: {
      reply: {
        useAdaptiveCard: true,
        adaptiveCard: {
          // 코드 블록 고정 폭 글꼴 사용
          codeStyle: true,
          // 모델 정보 표시
          showModelInfo: true,
          // 처리 소요 시간 표시
          showLatency: true,
          // "계속 질문" 버튼 추가
          actionButtons: true
        }
      }
    }
  }
}

Adaptive Card는 응답을 스타일이 적용된 카드로 서식화하며, 다음을 포함합니다:

  • 헤더 영역에 Bot 이름과 모델 표시
  • 본문 영역에서 Markdown 렌더링 지원
  • 코드 블록에 구문 강조 및 복사 버튼
  • 하단에 토큰 소비량 및 처리 시간 표시

기업 배포 주의사항

규정 준수 및 데이터 보안

고려사항 권장사항
데이터 상주 AI 모델 API의 데이터 처리 지역이 규정 준수 요건에 부합하는지 확인
데이터 보존 대화 기록의 보존 및 정리 정책 설정
감사 로그 감사 요건을 충족하기 위한 상세 로그 기록 활성화
접근 제어 Bot을 사용할 수 있는 사용자 및 팀 제한

사용자 권한 제어

{
  channels: {
    teams: {
      security: {
        // 허용된 사용자 이메일 목록
        allowedUsers: [
          "*@your-company.com"  // 회사 도메인의 모든 사용자 허용
        ],
        // 관리자 사용자
        adminUsers: [
          "[email protected]"
        ],
        // 허용된 팀 ID
        allowedTeams: [],
        // 사용자별 일일 메시지 제한
        dailyLimit: 100
      }
    }
  }
}

고가용성 배포

기업급 배포의 경우 다음을 권장합니다:

{
  channels: {
    teams: {
      // 요청 타임아웃 설정 (밀리초)
      timeout: 60000,
      // 재시도 설정
      retry: {
        maxAttempts: 3,
        backoffMs: 1000
      },
      // 동시성 제한
      concurrency: {
        maxConcurrent: 50,
        queueSize: 200
      }
    }
  }
}

Webhook과 Connector 비교

Bot Framework 방식 외에도 Teams는 Incoming Webhook 또는 Connector를 통한 통합을 지원합니다:

방식 양방향 통신 설정 복잡도 기능 풍부도
Bot Framework 지원 높음 가장 풍부
Incoming Webhook 전송만 낮음 기본
Connector 전송만 중간 중간

Bot Framework는 사용자 메시지를 수신하고 응답할 수 있는 유일한 방식이므로 OpenClaw의 권장 방안입니다. Webhook과 Connector는 단방향 알림 시나리오에만 적합합니다.

문제 해결

Bot이 응답하지 않음

# OpenClaw 로그 확인
openclaw logs --level error --component channel:teams

# 일반적인 원인:
# 1. 메시지 엔드포인트 URL에 접근 불가
# 2. App ID 또는 Password가 올바르지 않음
# 3. Bot에 Teams 채널이 활성화되지 않음

403 Forbidden 오류

# 일반적으로 App Password가 만료되었거나 올바르지 않음
# Azure AD → 앱 등록 → 인증서 및 비밀에서 비밀번호를 다시 생성
# OpenClaw 설정을 업데이트한 후 재시작
openclaw config set channels.teams.appPassword "new-password"
openclaw restart

Teams에 앱 업로드 불가

다음 사항을 확인합니다:

  1. Teams 관리 센터에서 사용자 정의 앱 업로드가 허용되어 있는지
  2. manifest.jsonid가 Azure AD 앱 ID와 일치하는지
  3. 아이콘 파일의 크기와 형식이 올바른지
  4. ZIP 패키지 구조가 올바른지 (파일이 루트 디렉터리에 있고 하위 폴더에 있지 않은지)

응답 타임아웃

Teams Bot Framework는 15초 이내 응답을 요구합니다. AI 모델 응답이 느린 경우:

{
  channels: {
    teams: {
      reply: {
        // "입력 중" 표시기를 활성화하여 사용자에게 피드백 제공
        showTyping: true,
        // 먼저 "처리 중" 메시지를 전송
        thinkingMessage: "생각 중입니다...",
        // 완료 후 원래 메시지를 업데이트 (새 메시지 전송 대신)
        updateMessage: true
      }
    }
  }
}

요약

OpenClaw를 Microsoft Teams에 연결하는 데는 다소 많은 단계가 필요하지만, 기업에 안전하고 제어 가능한 AI 어시스턴트를 제공할 수 있습니다. 핵심 프로세스:

  1. Azure AD에서 앱을 등록하고 자격 증명 획득
  2. Azure Bot 리소스를 생성하고 Teams 채널 활성화
  3. OpenClaw에서 App ID와 Password 설정
  4. Teams 앱 패키징 및 배포
  5. 보안 정책 및 접근 제어 설정

기업 시나리오에서는 데이터 보안, 규정 준수 요건 및 접근 제어에 반드시 주의를 기울여야 합니다. 먼저 테스트 팀에서 검증한 후 정상 작동이 확인되면 전체 조직으로 확대하는 것을 권장합니다.

OpenClaw는 무료 오픈소스 개인 AI 어시스턴트로, WhatsApp, Telegram, Discord 등 다양한 플랫폼을 지원합니다