LINE (plugin)
LINE은 LINE Messaging API를 통해 OpenClaw에 연결됩니다. 이 plugin은 gateway에서 webhook receiver로 실행되며, authentication에는 channel access token과 channel secret을 사용합니다. 상태: plugin을 통해 지원됩니다. direct messages, group chats, media, locations, Flex messages, template messages, quick replies를 지원합니다. reactions와 threads는 지원하지 않습니다.Plugin 필요
LINE plugin을 설치하세요.설정
- LINE Developers 계정을 만들고 Console을 엽니다: https://developers.line.biz/console/
- Provider를 만들거나 선택한 뒤 Messaging API channel을 추가합니다.
- channel settings에서 Channel access token과 Channel secret을 복사합니다.
- Messaging API settings에서 Use webhook을 활성화합니다.
- webhook URL을 gateway endpoint로 설정합니다(HTTPS 필수).
channels.line.webhookPath 또는
channels.line.accounts.<id>.webhookPath를 설정하고 URL도 맞춰 변경하세요.
보안 참고:
- LINE signature verification은 raw body에 대한 body-dependent HMAC이므로, OpenClaw는 검증 전에 엄격한 pre-auth body limit와 timeout을 적용합니다.
구성
최소 구성:LINE_CHANNEL_ACCESS_TOKENLINE_CHANNEL_SECRET
tokenFile과 secretFile은 regular file이어야 합니다. symlink는 거부됩니다.
여러 account:
접근 제어
DM은 기본적으로 pairing을 사용합니다. 알 수 없는 sender는 pairing code를 받고, 승인 전까지 메시지는 무시됩니다.channels.line.dmPolicy:pairing | allowlist | open | disabledchannels.line.allowFrom: DM용 allowlisted LINE user IDchannels.line.groupPolicy:allowlist | open | disabledchannels.line.groupAllowFrom: group용 allowlisted LINE user ID- 그룹별 override:
channels.line.groups.<groupId>.allowFrom - runtime 참고:
channels.line자체가 완전히 없으면, group check는channels.defaults.groupPolicy가 있더라도groupPolicy="allowlist"로 fallback합니다.
- User:
U+ 32 hex chars - Group:
C+ 32 hex chars - Room:
R+ 32 hex chars
메시지 동작
- 텍스트는 5000자 단위로 chunking됩니다.
- Markdown formatting은 제거됩니다. code block과 table은 가능하면 Flex card로 변환됩니다.
- streaming response는 버퍼링되며, agent가 작업하는 동안 LINE은 loading animation과 함께 완성된 chunk를 받습니다.
- media download는
channels.line.mediaMaxMb(기본 10)로 제한됩니다.
채널 데이터(rich messages)
channelData.line을 사용해 quick replies, locations, Flex cards, template
messages를 보낼 수 있습니다.
/card 명령도 포함되어 있습니다.
문제 해결
- Webhook verification fails: webhook URL이 HTTPS인지,
channelSecret이 LINE console과 일치하는지 확인하세요. - No inbound events: webhook path가
channels.line.webhookPath와 일치하는지, 그리고 gateway가 LINE에서 도달 가능한지 확인하세요. - Media download errors: media가 기본 제한을 넘는다면
channels.line.mediaMaxMb를 높이세요.