Skip to main content

LINE (플러그인)

LINE은 LINE Messaging API를 통해 OpenClaw에 연결됩니다. 이 플러그인은 게이트웨이에서 웹훅 수신기로 실행되며, 인증을 위해 채널 액세스 토큰 + 채널 비밀을 사용합니다. 상태: 플러그인을 통해 지원됩니다. 다이렉트 메시지, 그룹 채팅, 미디어, 위치, Flex 메시지, 템플릿 메시지, 빠른 답장이 지원됩니다. 반응 및 스레드는 지원되지 않습니다.

플러그인 필요

LINE 플러그인을 설치하세요:
로컬 체크아웃 (git repo에서 실행 시):

설정

  1. LINE Developers 계정을 만들고 콘솔을 엽니다: https://developers.line.biz/console/
  2. 프로바이더를 생성하거나 선택하고 Messaging API 채널을 추가합니다.
  3. 채널 설정에서 채널 액세스 토큰과 채널 비밀을 복사합니다.
  4. Messaging API 설정에서 웹훅 사용을 활성화합니다.
  5. 웹훅 URL을 게이트웨이 엔드포인트로 설정합니다 (HTTPS 필수):
게이트웨이는 LINE의 웹훅 확인(GET)과 인바운드 이벤트(POST)에 응답합니다. 사용자 정의 경로가 필요하다면, channels.line.webhookPath 또는 channels.line.accounts.<id>.webhookPath를 설정하고 URL을 적절히 업데이트하세요. 보안 참고:
  • LINE 서명 검증은 본문 의존적입니다 (원본 바디에 대한 HMAC). 따라서 OpenClaw는 서명 검증 전에 엄격한 사전 인증 본문 크기 제한과 타임아웃을 적용합니다.

구성

최소 구성:
환경 변수 (기본 계정만):
  • LINE_CHANNEL_ACCESS_TOKEN
  • LINE_CHANNEL_SECRET
토큰/비밀 파일:
tokenFile 및 secretFile은 일반 파일을 가리켜야 합니다. 심볼릭 링크는 거부됩니다. 다중 계정:

액세스 제어

다이렉트 메시지는 기본적으로 페어링으로 설정됩니다. 알 수 없는 발신자는 페어링 코드를 얻으며, 승인될 때까지 메시지가 무시됩니다.
허용 목록 및 정책:
  • channels.line.dmPolicy: pairing | allowlist | open | disabled
  • channels.line.allowFrom: 다이렉트 메시지에 대한 허용된 LINE 사용자 ID
  • channels.line.groupPolicy: allowlist | open | disabled
  • channels.line.groupAllowFrom: 그룹에 대한 허용된 LINE 사용자 ID
  • 그룹별 재정의: channels.line.groups.<groupId>.allowFrom
  • 런타임 노트: channels.line이 완전히 없는 경우, channels.defaults.groupPolicy가 설정되어 있더라도 런타임은 그룹 확인에 groupPolicy="allowlist"로 폴백합니다.
LINE ID는 대소문자를 구분합니다. 유효한 ID는 다음과 같습니다:
  • 사용자: U + 32자 16진수
  • 그룹: C + 32자 16진수
  • 룸: R + 32자 16진수

메시지 동작

  • 텍스트는 5000자에서 분할됩니다.
  • 마크다운 형식은 제거됩니다. 코드 블록과 테이블은 가능하면 Flex 카드로 변환됩니다.
  • 스트리밍 응답은 버퍼링됩니다. 에이전트가 작업하는 동안 LINE은 로딩 애니메이션과 함께 전체 청크를 받습니다.
  • 미디어 다운로드는 channels.line.mediaMaxMb (기본값 10)로 제한됩니다.

채널 데이터 (리치 메시지)

빠른 답장, 위치, Flex 카드 또는 템플릿 메시지를 보내려면 channelData.line을 사용하세요.
LINE 플러그인은 Flex 메시지 프리셋을 위한 /card 명령어도 제공합니다:

문제 해결

  • 웹훅 인증 실패: 웹훅 URL이 HTTPS인지, channelSecret이 LINE 콘솔과 일치하는지 확인하세요.
  • 인바운드 이벤트 없음: 웹훅 경로가 channels.line.webhookPath와 일치하는지 확인하고 게이트웨이가 LINE에서 접근 가능한지 확인하세요.
  • 미디어 다운로드 오류: 미디어가 기본 제한을 초과하는 경우 channels.line.mediaMaxMb을 늘리세요.