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

OpenClaw LINE 연결 튜토리얼

· 14 분 소요

서문

LINE은 일본, 태국, 대만 등 지역에서 가장 주류인 인스턴트 메시징 앱입니다. OpenClaw를 LINE에 연결하면 지능형 챗봇을 만들어 친구의 메시지에 자동 응답하거나 그룹에서 AI 서비스를 제공할 수 있습니다. 이 글에서는 LINE Developers 콘솔 설정부터 단계별로 전체 연동 과정을 완료합니다.

사전 조건

  • OpenClaw가 설치되어 정상적으로 실행 중
  • LINE 계정을 보유하고 있음
  • OpenClaw 서비스가 공인 HTTPS 주소로 접근 가능 (LINE Webhook은 HTTPS 필수)

1단계: LINE Messaging API 채널 생성

1.1 LINE Developers 계정 등록

  1. LINE Developers에 접속합니다
  2. LINE 계정으로 로그인합니다
  3. 최초 로그인 시 개발자 약관에 동의하고 Provider를 생성해야 합니다

1.2 Provider 생성

Provider는 채널(Channel)을 관리하는 최상위 조직 단위입니다:

  1. LINE Developers Console에서 Create a new provider를 클릭합니다
  2. Provider 이름을 입력합니다 (예: "My OpenClaw Bot")
  3. Create를 클릭합니다

1.3 Messaging API Channel 생성

  1. Provider 페이지에서 Create a Messaging API channel을 클릭합니다
  2. 다음 정보를 입력합니다:
필드 설명 예시
Channel type Messaging API 선택 Messaging API
Channel name 봇 표시 이름 AI 어시스턴트
Channel description 봇 설명 OpenClaw 기반 지능형 어시스턴트
Category 카테고리 선택 도구/유틸리티
Subcategory 하위 카테고리 선택 챗봇
Email address 연락처 이메일 [email protected]
  1. 약관에 동의하고 Create를 클릭합니다

1.4 필요한 자격 증명 획득

생성 완료 후 두 가지 핵심 정보를 기록해야 합니다:

Channel Secret: Basic settings 탭에서 확인할 수 있습니다.

Channel Access Token:

  1. Messaging API 탭으로 이동합니다
  2. 하단의 Channel access token 영역까지 스크롤합니다
  3. Issue 버튼을 클릭하여 장기 Token을 생성합니다
  4. 복사하여 안전하게 보관합니다
Channel Secret: abc123def456ghi789jkl012
Channel Access Token: eyJhbGciOiJIUzI1NiJ9.xxxxx.xxxxx (매우 긴 문자열)

2단계: Webhook 설정

2.1 Webhook URL 설정

Messaging API 탭에서:

  1. Webhook settings 영역을 찾습니다
  2. Edit 버튼을 클릭합니다
  3. Webhook URL을 입력합니다:
https://your-domain.com/webhook/line
  1. Update를 클릭합니다
  2. Use webhook 스위치를 활성화합니다

2.2 Webhook 검증

Verify 버튼을 클릭하여 Webhook 연결을 테스트합니다. OpenClaw가 이미 설정되어 실행 중이라면 Success가 표시되어야 합니다.

2.3 자동 응답 비활성화

Messaging API 탭에서:

  1. LINE Official Account features 영역을 찾습니다
  2. Auto-reply messages 옆의 Edit 링크를 클릭합니다
  3. LINE Official Account Manager로 이동합니다
  4. 자동 응답 메시지를 비활성화합니다 (그렇지 않으면 OpenClaw의 응답과 충돌합니다)
  5. 인사 메시지도 비활성화합니다 (선택 사항, LINE의 기본 인사를 유지할 수도 있습니다)

3단계: OpenClaw 설정

3.1 설정 파일 방식

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

{
  channels: {
    line: {
      enabled: true,
      // Channel Secret (Basic settings에서 획득)
      channelSecret: "abc123def456ghi789jkl012",
      // Channel Access Token (Messaging API에서 생성)
      channelAccessToken: "eyJhbGciOiJIUzI1NiJ9.xxxxx.xxxxx",

      // Webhook 경로 (LINE 콘솔 설정과 일치해야 함)
      webhookPath: "/webhook/line",

      // 메시지 처리 설정
      message: {
        // 응답 방식: "reply"는 Reply API 사용 (무료), "push"는 Push API 사용 (유료 가능)
        replyMode: "reply",
        // 그룹 메시지 지원 여부
        groupEnabled: true,
        // 그룹에서의 트리거 방식
        groupTrigger: "mention",  // "mention" | "keyword" | "all"
        // 그룹 트리거 키워드 (groupTrigger가 "keyword"일 때 적용)
        groupKeywords: ["@AI", "/ask"]
      },

      // 응답 형식
      reply: {
        // 긴 메시지 자동 분할
        maxLength: 5000,
        // Flex Message 형식 사용 여부 (더 보기 좋음)
        useFlexMessage: false,
        // 메시지 전송 전 대기 표시
        loadingAnimation: true
      }
    }
  }
}

3.2 환경 변수 방식

export LINE_CHANNEL_SECRET="abc123def456ghi789jkl012"
export LINE_CHANNEL_ACCESS_TOKEN="eyJhbGciOiJIUzI1NiJ9.xxxxx.xxxxx"

3.3 재시작 및 확인

openclaw restart

# 연결 로그 확인
openclaw logs -f --component channel:line

성공 로그:

[INFO] [channel:line] LINE Messaging API 채널이 시작되었습니다
[INFO] [channel:line] Webhook 경로: /webhook/line
[INFO] [channel:line] Bot 이름: AI 어시스턴트
[INFO] [channel:line] 메시지 수신 대기 중...

Reply API와 Push API

LINE에는 두 가지 메시지 전송 API가 있으며, 그 차이를 이해하는 것이 중요합니다:

Reply API

  • 트리거 방식: 사용자 메시지 수신 후에만 사용 가능
  • 시간 제한: Reply Token 유효 기간 약 30초
  • 비용: 완전 무료
  • 제한: 각 이벤트당 한 번만 응답 가능

Push API

  • 트리거 방식: 사용자에게 능동적으로 메시지 전송 가능
  • 시간 제한: 제한 없음
  • 비용: 무료 플랜 월 200건, 초과 시 유료
  • 제한: 구독 플랜에 따라 다름
{
  channels: {
    line: {
      message: {
        // 비용 절감을 위해 reply 모드 사용 권장
        replyMode: "reply",
        // 지연 응답이 필요한 경우 (시간이 오래 걸리는 작업 처리) push를 폴백으로 활성화
        fallbackToPush: true
      }
    }
  }
}

메시지 쿼터

플랜 Push API 메시지 수/월 비용
Free 200건 무료
Light 5,000건 약 800 TWD/월
Standard 25,000건 약 4,000 TWD/월
Pro 맞춤형 LINE에 문의

Reply API의 메시지는 쿼터에 포함되지 않으므로 Reply 모드를 우선 사용하는 것을 권장합니다.

Rich Menu 설정

Rich Menu는 LINE Bot 하단의 사용자 정의 메뉴로, 빠른 조작 입구를 제공할 수 있습니다.

Rich Menu 생성

LINE Official Account Manager에서 생성합니다:

  1. 채팅리치 메뉴로 이동합니다
  2. 생성을 클릭합니다
  3. 메뉴 레이아웃을 설계합니다. 일반적인 옵션:
┌─────────┬─────────┬─────────┐
│         │         │         │
│  질문   │  번역   │  요약   │
│         │         │         │
├─────────┼─────────┼─────────┤
│         │         │         │
│  초기화 │  모델   │  도움말 │
│         │         │         │
└─────────┴─────────┴─────────┘
  1. 각 영역의 동작 유형을 텍스트로 설정하고 해당 트리거 명령을 입력합니다

API를 통한 Rich Menu 생성

OpenClaw 설정에서 Rich Menu를 정의할 수도 있습니다:

{
  channels: {
    line: {
      richMenu: {
        enabled: true,
        areas: [
          { label: "질문", action: "/ask" },
          { label: "번역", action: "/translate" },
          { label: "요약", action: "/summarize" },
          { label: "대화 초기화", action: "/reset" },
          { label: "모델 전환", action: "/model" },
          { label: "도움말", action: "/help" }
        ]
      }
    }
  }
}

그룹 사용

Bot을 그룹에 추가

  1. LINE에서 그룹을 엽니다
  2. 그룹 설정 → 초대를 클릭합니다
  3. Bot을 검색하여 추가합니다

그룹 동작 설정

{
  channels: {
    line: {
      group: {
        // 그룹 참가 시 환영 메시지
        welcomeMessage: "안녕하세요, AI 어시스턴트입니다! @멘션 또는 /ask로 시작하면 질문에 답변해 드립니다.",
        // 그룹에서 퇴장 시 데이터 정리
        cleanOnLeave: true,
        // 그룹별 독립 컨텍스트
        separateContext: true
      }
    }
  }
}

HTTPS 요구사항

LINE Webhook은 HTTPS를 강제합니다. 아직 HTTPS를 설정하지 않은 경우 다음 방법을 사용할 수 있습니다:

방식 1: Nginx 리버스 프록시 + Let's Encrypt

# certbot 설치
sudo apt install certbot python3-certbot-nginx

# 인증서 발급
sudo certbot --nginx -d your-domain.com

방식 2: ngrok 터널 (개발 테스트용)

# ngrok 설치
npm install -g ngrok

# 터널 생성
ngrok http 18789

ngrok에서 생성된 HTTPS 주소를 LINE Webhook URL에 입력합니다.

방식 3: Cloudflare Tunnel

cloudflared tunnel --url http://localhost:18789

문제 해결

Webhook 검증 실패

# OpenClaw가 실행 중인지 확인
openclaw logs --level error

# Webhook 경로가 올바른지 확인
curl -X POST https://your-domain.com/webhook/line -d '{}' -H "Content-Type: application/json"

# SSL 인증서가 유효한지 확인
openssl s_client -connect your-domain.com:443

Bot이 메시지에 응답하지 않음

# Channel Access Token이 유효한지 확인
openclaw logs --component channel:line --level debug

# 일반적인 원인:
# 1. Token이 만료됨 - 새 Token을 발급
# 2. 자동 응답이 비활성화되지 않음 - LINE의 자동 응답이 Reply Token을 소비
# 3. Reply Token 타임아웃 - AI 모델 응답이 너무 느림 (>30초)

Reply Token 타임아웃

AI 모델 응답 시간이 30초를 초과하면 Reply Token이 만료됩니다. 해결 방안:

{
  channels: {
    line: {
      message: {
        replyMode: "reply",
        fallbackToPush: true,  // Reply 실패 시 Push API로 전환
        // 또는 먼저 "처리 중" 응답을 전송
        thinkingMessage: "생각 중입니다, 잠시만 기다려 주십시오..."
      }
    }
  }
}

요약

LINE 연동의 핵심 단계:

  1. LINE Developers에서 Messaging API 채널 생성
  2. Channel Secret과 Channel Access Token 획득
  3. HTTPS Webhook URL 설정
  4. OpenClaw 설정 파일에 자격 증명 입력
  5. LINE의 자동 응답 기능 비활성화
  6. 서비스 재시작 및 테스트

비용 절감을 위해 Reply API를 우선 사용하고 Rich Menu를 통해 사용자 경험을 향상시키는 것을 권장합니다.

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