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

OpenClaw 다중 채팅 채널 동시 연결 튜토리얼

· 17 분 소요

소개

OpenClaw의 가장 강력한 기능 중 하나는 여러 채팅 플랫폼에 동시에 연결할 수 있다는 것입니다. 동일한 AI 어시스턴트를 WhatsApp, Telegram, Discord, Slack, Matrix 등의 플랫폼에 동시에 배치하고, 각 채널마다 다른 모델, 페르소나 및 동작 방식을 설정할 수 있습니다.

이 튜토리얼에서는 다중 채널 설정 방법과 모범 사례를 전반적으로 소개합니다.

다중 채널 아키텍처 개요

OpenClaw의 다중 채널 아키텍처는 다음과 같습니다:

                    ┌─────────────┐
                    │  OpenClaw   │
                    │   Gateway   │
                    │  :18789     │
                    └──────┬──────┘
                           │
          ┌────────────────┼────────────────┐
          │                │                │
    ┌─────┴─────┐   ┌─────┴─────┐   ┌─────┴─────┐
    │ WhatsApp  │   │ Telegram  │   │  Discord  │
    │  Channel  │   │  Channel  │   │  Channel  │
    └───────────┘   └───────────┘   └───────────┘

각 채널은 독립적으로 실행되며, 동일한 Gateway 서비스를 공유하지만 독립적인 설정을 가질 수 있습니다.

기본 다중 채널 설정

~/.config/openclaw/openclaw.json5를 편집하여 channels에 여러 채널을 추가합니다:

{
  // 전역 모델 설정 (각 채널의 기본값으로 사용)
  model: {
    provider: "claude",
    name: "claude-sonnet-4-20250514",
    apiKey: "sk-ant-xxxxx"
  },

  channels: {
    // WhatsApp 채널
    whatsapp: {
      enabled: true,
      phoneNumber: "+8613800138000",
      responseMode: "all"
    },

    // Telegram 채널
    telegram: {
      enabled: true,
      botToken: "123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11",
      responseMode: "mention"
    },

    // Discord 채널
    discord: {
      enabled: true,
      botToken: "MTIzNDU2Nzg5MDEy.xxxxx.xxxxx",
      responseMode: "mention",
      allowedServers: ["1234567890"]
    },

    // Matrix 채널
    matrix: {
      enabled: true,
      homeserverUrl: "https://matrix.org",
      userId: "@openclaw-bot:matrix.org",
      accessToken: "syt_xxxxx",
      responseMode: "mention"
    },

    // Slack 채널
    slack: {
      enabled: true,
      botToken: "xoxb-xxxxx",
      appToken: "xapp-xxxxx",
      responseMode: "mention"
    }
  }
}

채널별 독립 설정

각 채널은 전역 설정을 재정의하여 독립적인 모델, 페르소나 및 언어 설정을 구현할 수 있습니다.

채널별 다른 모델 지정

{
  // 전역 기본 모델
  model: {
    provider: "claude",
    name: "claude-sonnet-4-20250514",
    apiKey: "sk-ant-xxxxx"
  },

  channels: {
    // Telegram은 기본 Claude 모델 사용
    telegram: {
      enabled: true,
      botToken: "your-telegram-token"
    },

    // Discord는 Ollama 로컬 모델 사용 (비용 절감)
    discord: {
      enabled: true,
      botToken: "your-discord-token",
      model: {
        provider: "ollama",
        name: "llama3.1:70b",
        baseUrl: "http://localhost:11434"
      }
    },

    // WhatsApp은 OpenAI GPT-4o 사용
    whatsapp: {
      enabled: true,
      phoneNumber: "+8613800138000",
      model: {
        provider: "openai",
        name: "gpt-4o",
        apiKey: "sk-xxxxx"
      }
    }
  }
}

채널별 다른 페르소나 설정

{
  channels: {
    telegram: {
      enabled: true,
      botToken: "your-telegram-token",
      persona: {
        name: "작은 도우미",
        systemPrompt: "你是一个友好的中文AI助手,语气轻松活泼,适当使用表情符号。"
      }
    },

    slack: {
      enabled: true,
      botToken: "your-slack-token",
      appToken: "your-app-token",
      persona: {
        name: "TechBot",
        systemPrompt: "You are a professional technical assistant. Respond in English. Be concise and precise. Focus on code and technical solutions."
      }
    },

    discord: {
      enabled: true,
      botToken: "your-discord-token",
      persona: {
        name: "게임 컨설턴트",
        systemPrompt: "你是一个游戏领域的专家,熟悉各种游戏攻略和资讯。回答时可以用轻松幽默的语气。"
      }
    }
  }
}

채널 설정 항목 일람

다음은 각 채널에서 독립적으로 설정할 수 있는 항목입니다:

설정 항목 설명 예시
model AI 모델 설정 전역 모델 재정의
persona 페르소나 및 시스템 프롬프트 채널별 다른 성격
responseMode 응답 모드 all / mention
language 기본 언어 zh-CN / en / ja
maxTokens 최대 응답 Token 수 2048
temperature 모델 온도 0.7
skills 활성화할 스킬 목록 ["weather", "reminder"]
rateLimit 빈도 제한 { maxPerMinute: 10 }

메시지 라우팅 전략

공유 컨텍스트 vs 격리 컨텍스트

기본적으로 채널 간의 대화 컨텍스트는 서로 격리되어 있습니다. 설정을 통해 공유 컨텍스트를 활성화할 수 있습니다:

{
  context: {
    // 컨텍스트 격리 전략
    // "channel": 채널별 격리 (기본값)
    // "user": 사용자별 격리 (동일 사용자가 채널 간 컨텍스트 공유)
    // "global": 전역 공유
    isolation: "channel",

    // 컨텍스트 윈도우 크기
    maxMessages: 50,

    // 컨텍스트 만료 시간 (초)
    ttl: 3600
  }
}

사용자별 격리 시나리오

isolation: "user"로 설정하면 동일 사용자가 다른 채널에서의 대화를 이어갈 수 있습니다. 예를 들어, Telegram에서 특정 주제를 논의한 사용자가 Discord로 전환한 후에도 대화를 계속할 수 있습니다.

사용자는 다음과 같은 방식으로 ID를 매핑합니다:

{
  context: {
    isolation: "user",
    // 사용자 ID 매핑 (선택 사항, 크로스 플랫폼에서 동일 사용자 식별)
    userMapping: {
      "telegram:12345678": "user-alice",
      "discord:98765432": "user-alice",
      "whatsapp:+8613800138000": "user-alice"
    }
  }
}

채널별 스킬 설정

각 채널에서 다른 스킬을 활성화할 수 있습니다:

{
  channels: {
    telegram: {
      enabled: true,
      botToken: "your-token",
      // 이 스킬만 활성화
      skills: ["weather", "translate", "reminder"],
    },

    slack: {
      enabled: true,
      botToken: "your-token",
      appToken: "your-app-token",
      // 업무 시나리오 스킬
      skills: ["jira", "github", "code-review"],
    },

    discord: {
      enabled: true,
      botToken: "your-token",
      // 엔터테인먼트 시나리오 스킬
      skills: ["trivia", "music-recommend", "game-wiki"],
    }
  }
}

상태 모니터링

Dashboard 모니터링

OpenClaw Dashboard를 시작하여 모든 채널의 실시간 상태를 확인합니다:

openclaw dashboard

Dashboard는 브라우저에서 열리며 다음을 표시합니다:

  • 각 채널의 연결 상태 (온라인/오프라인/오류)
  • 메시지 송수신 통계
  • 모델 호출 횟수 및 Token 소비량
  • 실시간 로그 스트림

명령줄 상태 확인

# 모든 채널 상태 확인
openclaw doctor

# 실시간 로그 보기 (모든 채널)
openclaw logs

# 특정 채널의 로그 보기
openclaw logs --channel telegram

일반적인 정상 출력:

OpenClaw Doctor Report
======================
Gateway:    ✓ Running on port 18789
Node.js:    ✓ v22.12.0

Channels:
  whatsapp:  ✓ Connected (uptime: 3d 14h)
  telegram:  ✓ Connected (uptime: 3d 14h)
  discord:   ✓ Connected (uptime: 3d 14h)
  matrix:    ✓ Connected (uptime: 2d 8h)
  slack:     ✗ Error: Invalid bot token

Models:
  claude:    ✓ API reachable
  ollama:    ✓ Running locally

빈도 제한 및 로드 밸런싱

여러 채널이 동시에 활성화된 경우, API 할당량 소진을 방지하기 위해 빈도 제한을 설정하는 것을 권장합니다:

{
  // 전역 빈도 제한
  rateLimit: {
    // 분당 최대 요청 수 (모든 채널 합계)
    globalMaxPerMinute: 60,
    // 사용자당 분당 최대 요청 수
    userMaxPerMinute: 10
  },

  channels: {
    telegram: {
      enabled: true,
      botToken: "your-token",
      // 채널 수준 빈도 제한
      rateLimit: {
        maxPerMinute: 30
      }
    },

    discord: {
      enabled: true,
      botToken: "your-token",
      rateLimit: {
        maxPerMinute: 20
      }
    }
  }
}

채널 활성화 및 비활성화

enabled 필드를 통해 설정을 삭제하지 않고 채널을 빠르게 활성화하거나 비활성화할 수 있습니다:

{
  channels: {
    whatsapp: {
      enabled: true,   // 실행 중
      // ...
    },
    telegram: {
      enabled: false,  // 비활성화됨, 설정은 유지
      // ...
    }
  }
}

설정 수정 후 OpenClaw를 재시작하여 적용합니다:

openclaw restart

실전: 팀 다중 채널 배포 방안

다음은 팀에서 실제로 사용하는 다중 채널 설정 방안입니다:

{
  model: {
    provider: "claude",
    name: "claude-sonnet-4-20250514",
    apiKey: "sk-ant-xxxxx"
  },

  channels: {
    // 팀 내부 Slack 작업 채널
    slack: {
      enabled: true,
      botToken: "xoxb-xxxxx",
      appToken: "xapp-xxxxx",
      responseMode: "mention",
      persona: {
        name: "팀 어시스턴트",
        systemPrompt: "你是团队的技术助手,帮助回答技术问题、review代码、查找文档。"
      },
      skills: ["github", "jira", "code-review", "docs-search"],
      language: "zh-CN"
    },

    // 고객 지원 Telegram 채널
    telegram: {
      enabled: true,
      botToken: "your-token",
      responseMode: "all",
      persona: {
        name: "고객 도우미",
        systemPrompt: "你是产品客服助手,礼貌地回答用户关于产品的问题。遇到无法解决的问题,建议用户联系人工客服。"
      },
      skills: ["faq", "product-docs"],
      model: {
        provider: "openai",
        name: "gpt-4o-mini",
        apiKey: "sk-xxxxx"
      }
    },

    // CEO의 개인 WhatsApp 어시스턴트
    whatsapp: {
      enabled: true,
      phoneNumber: "+8613800138000",
      responseMode: "all",
      persona: {
        name: "스마트 비서",
        systemPrompt: "你是CEO的私人智能助手,帮助处理日程、提醒、信息汇总等任务。"
      },
      skills: ["calendar", "reminder", "news-summary", "weather"]
    }
  }
}

자주 묻는 질문

특정 채널 연결이 끊어지면 다른 채널에 영향을 미치나요?

영향을 미치지 않습니다. 각 채널은 독립적으로 실행되며, 한 채널의 이상이 다른 채널에 영향을 미치지 않습니다. OpenClaw에는 자동 재연결 메커니즘도 내장되어 있습니다.

다중 채널은 더 많은 메모리를 소비하나요?

추가 채널당 약 20-50MB의 메모리가 증가합니다. 5개 채널이 동시에 실행될 때 총 메모리는 보통 200-400MB 범위입니다.

채널 문제를 빠르게 진단하려면 어떻게 해야 하나요?

# 진단 실행
openclaw doctor

# 특정 채널 로그 보기
openclaw logs --channel discord

# Gateway 상태 확인
curl http://localhost:18789/health

마무리

다중 채널 설정을 통해 OpenClaw는 전 플랫폼 AI 허브가 될 수 있습니다. 각 채널에서 독립적으로 모델, 페르소나, 스킬을 설정할 수 있는 기능 덕분에 다양한 시나리오의 요구사항에 유연하게 대응할 수 있습니다. 상태 모니터링과 빈도 제한을 결합하면 프로덕션 환경에서도 안심하고 다중 채널 서비스를 배포할 수 있습니다.

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