OpenClaw

OpenClaw Mattermost 채널

엔터프라이즈
보통

오픈소스 엔터프라이즈 메시징 플랫폼인 Mattermost에 OpenClaw를 연결하여 AI 어시스턴트가 DM, 그룹 채널 및 팀 대화에 참여할 수 있도록 합니다. 이 통합은 Bot Token 인증과 WebSocket 이벤트를 사용하여 실시간 양방향 통신을 지원하며, 유연한 채팅 모드와 세밀한 접근 제어 정책을 제공합니다.

기본 정보
난이도보통
카테고리엔터프라이즈
지원 기능 수5 / 6

Mattermost 지원 기능

텍스트 메시지

지원

미디어 및 파일

지원

리액션

지원

스레드

지원

음성 메시지

미지원

그룹 채팅

지원

Mattermost 사전 요구사항

  • Bot Account를 생성할 수 있는 관리자 권한이 있는 Mattermost 서버 (자체 호스팅 또는 클라우드)
  • Mattermost System Console에서 생성한 Bot Token이 있는 Bot Account
  • OpenClaw Gateway에서 접근 가능한 Mattermost 서버 기본 URL
  • OpenClaw Gateway가 설치되어 실행 중일 것
  • 'openclaw plugins install @openclaw/mattermost' 명령으로 설치한 Mattermost 플러그인

Mattermost 빠른 설정

1

Mattermost 플러그인 설치

'openclaw plugins install @openclaw/mattermost' 명령을 실행하여 Gateway에 Mattermost 지원을 추가합니다.

2

Mattermost에서 Bot Account 생성

Mattermost System Console > Integrations > Bot Accounts로 이동합니다. 'Add Bot Account'를 클릭하고 표시 이름과 설명을 설정한 후, 생성된 Bot Token을 복사합니다. System Console > Integrations > Integration Management에서 'Enable Bot Account Creation'이 true로 설정되어 있는지 확인하십시오.

3

구성 및 실행

botToken, baseUrl 및 원하는 정책을 포함한 Mattermost 채널 구성을 ~/.openclaw/openclaw.json에 추가합니다. 'openclaw start' 명령으로 Gateway를 시작합니다. 봇에게 DM을 보내거나 채널에서 @멘션하여 연결을 확인합니다.

Mattermost 구성 예시

config.json
{
  "channels": {
    "mattermost": {
      "enabled": true,
      "botToken": "your-bot-token",
      "baseUrl": "https://mattermost.example.com",
      "dmPolicy": "pairing",
      "chatmode": "oncall"
    }
  }
}

Mattermost 상세 문서

아키텍처 개요

OpenClaw는 REST API와 WebSocket 이벤트 스트림을 통해 Mattermost에 연결됩니다. 시작 시 Gateway는 Bot Token을 사용하여 인증하고, 영구적인 WebSocket 연결을 설정한 후 메시지 이벤트를 수신하기 시작합니다. 메시지가 활성 채팅 모드 트리거(멘션, 접두사 또는 모든 메시지)와 일치하면, Gateway는 해당 메시지를 AI 에이전트로 전달합니다. 에이전트의 응답은 Mattermost REST API를 통해 동일한 채널 또는 DM 스레드에 게시됩니다. 이 통합은 미디어 첨부 파일, 메시지 리액션, 스레드 답글, 그룹 채널 관리 등 풍부한 기능을 지원하며, 가장 완전한 기능을 갖춘 엔터프라이즈 채널 통합 중 하나입니다.
WebSocket 연결이 끊어지면 자동으로 재연결됩니다.
각 계정은 독립적인 대화 추적을 위해 고유한 세션 키(agent:<agentId>:mattermost:<accountName>)를 생성합니다.

Bot Account 생성

Mattermost Bot Account는 사용자 라이선스를 소비하지 않는 전용 서비스 계정입니다. 1. System Console > Integrations > Bot Accounts로 이동합니다. 2. Integration Management에서 'Enable Bot Account Creation'이 활성화되어 있는지 확인합니다. 3. 'Add Bot Account'를 클릭하고 표시 이름, 설명 및 아이콘을 입력합니다. 4. 적절한 역할을 선택합니다 (System Admin은 권장하지 않으며, 기본 Member 역할을 사용하십시오). 5. 생성된 Bot Token을 즉시 복사합니다. 이후에는 다시 표시되지 않습니다. 봇은 작동해야 하는 모든 채널에 추가되어야 합니다. 팀 관리자 또는 시스템 관리자가 수동으로 봇을 채널에 추가하거나, 사용자가 @멘션으로 초대할 수 있습니다.
openclaw.json
{
  "channels": {
    "mattermost": {
      "botToken": "your-bot-token",
      "baseUrl": "https://mattermost.example.com"
    }
  }
}
Bot Token을 안전하게 보관하십시오. 분실 시 System Console에서 재생성해야 합니다.
Bot Account는 Mattermost 라이선스 사용자 수 제한에 포함되지 않습니다.

채팅 모드

OpenClaw는 채널에서 봇이 메시지에 응답하는 시점을 제어하는 세 가지 채팅 모드를 지원합니다. **oncall (기본값)** — 봇은 이름으로 @멘션된 경우에만 응답합니다. 봇이 명시적으로 호출되지 않는 한 침묵을 유지하므로 바쁜 채널에 가장 안전한 모드입니다. **onmessage** — 봇은 허용된 사용자의 모든 메시지에 응답합니다. 전용 봇 채널이나 모든 메시지에 응답이 필요한 트래픽이 적은 환경에 가장 적합합니다. **onchar** — 봇은 특정 접두사 문자(예: '!' 또는 '/')로 시작하는 메시지에 응답합니다. oncharPrefixes로 트리거 접두사를 구성합니다. 전체 봇 이름을 입력하지 않고도 명시적이면서 간결하게 활성화하고 싶을 때 유용합니다.
openclaw.json
{
  "channels": {
    "mattermost": {
      "chatmode": "onchar",
      "oncharPrefixes": ["!", "/ai"]
    }
  }
}
DM에서는 채팅 모드에 관계없이 봇이 항상 모든 메시지에 응답합니다.
팀 채널에서는 불필요한 알림을 방지하기 위해 oncall 모드를 권장합니다.

DM 정책

DM(Direct Message) 정책은 봇과 개인 메시지를 통해 상호작용할 수 있는 사용자를 제어합니다. **pairing (기본값)** — allowFrom 배열에 명시적으로 나열된 사용자만 봇에게 DM을 보낼 수 있습니다. 가장 제한적인 모드로, 정확히 어떤 사용자가 접근할 수 있는지 제어하기에 이상적입니다. **open** — 봇에게 DM을 보내는 모든 Mattermost 사용자가 응답을 받습니다. 조직 전체에서 봇에 광범위하게 접근할 수 있도록 하려는 경우 사용합니다. allowFrom 필드는 Mattermost 사용자 ID를 허용합니다. 사용자 ID는 System Console > Users에서 또는 Mattermost API를 통해 확인할 수 있습니다.
openclaw.json
{
  "channels": {
    "mattermost": {
      "dmPolicy": "pairing",
      "allowFrom": ["user-id-1", "user-id-2"]
    }
  }
}
dmPolicy를 'open'으로 설정하면 Mattermost 서버의 모든 사용자가 DM을 통해 AI 할당량을 소비할 수 있습니다. 대규모 서버에서는 주의하여 사용하십시오.

그룹 및 채널 정책

그룹 정책은 그룹 메시지를 수신할 때 봇이 참여하는 채널을 제어합니다. **allowlist (기본값)** — 봇은 groupAllowFrom에 명시적으로 나열된 채널에서만 응답합니다. 다른 채널의 메시지는 자동으로 무시됩니다. **open** — 봇은 추가된 모든 채널에서 응답합니다. 편리하지만 봇이 많은 채널에 추가된 경우 의도하지 않은 상호작용이 발생할 수 있습니다. groupAllowFrom 필드는 Mattermost 채널 ID를 허용합니다. 채널 ID는 채널 URL에서 또는 Mattermost API를 통해 확인할 수 있습니다.
openclaw.json
{
  "channels": {
    "mattermost": {
      "groupPolicy": "allowlist",
      "groupAllowFrom": ["channel-id-1", "channel-id-2"]
    }
  }
}
프로덕션 환경에서는 봇이 의도하지 않은 채널에서 응답하는 것을 방지하기 위해 allowlist 모드를 사용하십시오.
그룹 정책에 관계없이 봇이 메시지를 수신하려면 해당 채널의 멤버여야 합니다.

다중 계정 설정

OpenClaw는 여러 Mattermost Bot Account를 동시에 실행할 수 있으며, 각각 다른 Mattermost 서버를 대상으로 하거나 다른 구성으로 운영할 수 있습니다. accounts.<name> 패턴을 사용하여 여러 계정을 구성합니다. 각 계정은 고유한 Bot Token, 기본 URL, 채팅 모드 및 접근 정책을 가집니다. 여러 Mattermost 인스턴스(예: 프로덕션 및 스테이징)를 운영하는 조직이나 다른 팀에 다른 동작의 봇이 필요한 경우에 유용합니다.
openclaw.json
{
  "channels": {
    "mattermost": {
      "accounts": {
        "production": {
          "botToken": "prod-bot-token",
          "baseUrl": "https://mattermost.company.com",
          "chatmode": "oncall",
          "dmPolicy": "pairing",
          "allowFrom": ["user-1", "user-2"]
        },
        "dev-team": {
          "botToken": "dev-bot-token",
          "baseUrl": "https://mm-dev.company.com",
          "chatmode": "onmessage",
          "dmPolicy": "open"
        }
      }
    }
  }
}

아웃바운드 메시징

AI 에이전트는 mattermost 도구 액션을 사용하여 Mattermost 채널과 사용자에게 메시지를 능동적으로 보낼 수 있습니다. 이를 통해 사용자 트리거 없이 예약된 알림, 경고 및 자동 업데이트를 전송할 수 있습니다. 지원되는 대상 형식: - channel:<channel-id> -- 채널 ID로 특정 채널에 전송 - user:<user-id> -- 사용자 ID로 특정 사용자에게 DM 전송 - @username -- 사용자 이름으로 사용자에게 DM 전송 봇은 대상 채널에 게시하거나 대상 사용자와 DM을 시작할 수 있는 권한이 있어야 합니다.
agent-action.json
{
  "action": "mattermost",
  "params": {
    "message": "Daily standup reminder: please post your updates!",
    "to": "channel:abc123def456"
  }
}
안정적인 전달을 위해 채널 이름이 아닌 채널 ID를 사용하십시오. 채널 이름은 변경될 수 있습니다.
봇이 대상 채널에 메시지를 게시하려면 해당 채널의 멤버여야 합니다.

리치 메시지 기능

Mattermost는 다양한 메시지 기능을 지원하며, OpenClaw는 이를 모두 활용합니다. **미디어 첨부 파일** — 봇은 이미지, 파일 및 기타 첨부 파일을 보내고 받을 수 있습니다. 사용자가 공유한 미디어는 처리를 위해 AI 에이전트로 전달됩니다. **리액션** — 봇은 메시지에 이모지 리액션을 추가할 수 있습니다. 이는 확인 또는 상태 표시에 유용합니다. **스레드 답글** — 봇은 Mattermost의 스레딩 모델을 지원합니다. 사용자가 스레드에서 답글을 달면 봇은 해당 스레드 내에서 컨텍스트를 유지합니다. **Markdown** — Mattermost는 기본적으로 Markdown을 렌더링하므로, 봇의 응답에 서식이 적용된 텍스트, 코드 블록, 테이블 및 링크를 포함할 수 있습니다.
스레드 답글은 특히 바쁜 채널에서 대화를 체계적으로 정리하는 데 도움이 됩니다.
파일 첨부는 Mattermost 서버의 업로드 크기 제한에 따릅니다.

속도 제한 및 모범 사례

Mattermost는 서버 성능을 보호하기 위해 REST API에 속도 제한을 적용합니다. 기본 제한은 다음과 같습니다. - 사용자당 초당 10개 요청 (지속) - 100개 요청 버스트 용량 이러한 제한은 메시지 게시, 리액션 추가, 파일 업로드 등 Bot Account의 API 호출에 적용됩니다. 프로덕션 배포를 위한 모범 사례: 1. 불필요한 API 호출을 줄이기 위해 바쁜 채널에서는 oncall 또는 onchar 채팅 모드를 사용합니다. 2. 봇이 모든 채널에서 응답하는 것을 방지하기 위해 groupPolicy를 allowlist로 유지합니다. 3. Mattermost System Console > Environment > Rate Limiting에서 봇의 API 사용량을 모니터링합니다. 4. 트래픽이 많은 배포의 경우, 팀별로 별도의 계정을 운영하는 것을 고려합니다.
봇이 속도 제한을 초과하면 Mattermost는 HTTP 429 오류를 반환합니다. Gateway는 백오프를 적용하여 재시도하지만, 지속적인 초과 사용 시 구성 조정이 필요할 수 있습니다.

Mattermost 구성 참조

enabled
Type: booleanDefault: true

Mattermost 채널을 활성화 또는 비활성화합니다

botToken
Type: stringDefault: ""

Mattermost System Console > Bot Accounts에서 발급한 Bot Token

baseUrl
Type: stringDefault: ""

Mattermost 서버의 전체 URL (예: https://mattermost.example.com)

chatmode
Type: stringDefault: "oncall"

채팅 트리거 모드: 'oncall' (멘션), 'onmessage' (전체), 또는 'onchar' (접두사)

oncharPrefixes
Type: string[]Default: []

chatmode가 'onchar'일 때 봇을 트리거하는 접두사 문자

dmPolicy
Type: stringDefault: "pairing"

DM 접근 정책: 'pairing' (허용 목록만) 또는 'open' (모든 사용자)

allowFrom
Type: string[]Default: []

봇에게 DM을 보낼 수 있는 Mattermost 사용자 ID (dmPolicy: pairing과 함께 사용)

groupPolicy
Type: stringDefault: "allowlist"

그룹 채널 정책: 'allowlist' (지정된 채널만) 또는 'open' (모든 채널)

groupAllowFrom
Type: string[]Default: []

봇이 응답할 수 있는 Mattermost 채널 ID (groupPolicy: allowlist와 함께 사용)

requireMention
Type: booleanDefault: true

레거시 설정 -- chatmode: 'oncall' 사용을 권장합니다

accounts.<id>.botToken
Type: stringDefault: ""

다중 계정 모드에서 특정 계정의 Bot Token

accounts.<id>.baseUrl
Type: stringDefault: ""

특정 계정의 Mattermost 서버 URL

accounts.<id>.chatmode
Type: stringDefault: "oncall"

특정 계정의 채팅 트리거 모드

accounts.<id>.dmPolicy
Type: stringDefault: "pairing"

특정 계정의 DM 접근 정책

Mattermost 자주 묻는 질문

Mattermost 문제 해결

봇이 메시지에 응답하지 않습니다

채팅 모드 또는 접근 정책이 메시지를 필터링하고 있을 수 있습니다.

chatmode가 예상하는 트리거와 일치하는지 확인합니다 (oncall은 @멘션 필요, onchar는 접두사 필요). DM의 경우 dmPolicy와 allowFrom에 사용자 ID가 포함되어 있는지, 그룹 메시지의 경우 groupPolicy와 groupAllowFrom에 채널 ID가 포함되어 있는지 확인합니다.
시작 시 WebSocket 연결이 실패합니다

baseUrl이 잘못되었거나, Bot Token이 유효하지 않거나, 서버에 접근할 수 없습니다.

baseUrl이 올바른 Mattermost 서버를 가리키는지 확인합니다 (프로토콜을 포함해야 합니다. 예: https://). Bot Token이 유효하고 폐기되지 않았는지 확인합니다. Gateway와 Mattermost 서버 간의 네트워크 연결 및 방화벽 규칙을 확인합니다.
봇이 채널에 게시할 수 없습니다

봇이 대상 채널의 멤버가 아닙니다.

Mattermost에서 수동으로 봇을 채널에 추가하거나 (채널에서 'Add Members' 클릭), 봇의 사용자 이름을 @멘션하여 초대합니다. 봇은 메시지를 게시하려면 채널 멤버여야 합니다.
미디어 첨부 파일이 처리되지 않습니다

Mattermost 서버의 파일 업로드 설정이 파일 유형이나 크기를 제한하고 있을 수 있습니다.

System Console > Environment > File Storage에서 업로드 제한을 확인합니다. Bot Account에 파일 첨부 접근 권한이 있는지 확인합니다. Gateway가 Mattermost 파일 API 엔드포인트에 접근할 수 있는지 확인합니다.
로그에 속도 제한 오류 (HTTP 429)가 표시됩니다

봇이 짧은 시간 내에 너무 많은 API 요청을 수행하고 있습니다.

API 호출을 줄이기 위해 onmessage에서 oncall 또는 onchar 모드로 전환합니다. 봇이 활동하는 채널 수를 제한합니다. System Console > Environment > Rate Limiting에서 서버 측 속도 제한을 확인하거나 조정합니다.