콘텐츠로 이동

OpenClaw Synology Chat 연동: 5분 만에 봇 설정하기

새로운 알림 시스템을 구축할 때마다 매번 다른 API 명세서를 뒤져가며 씨름하는 건 정말 피곤한 일이죠. 특히 폐쇄적인 네트워크 환경이나 개인용 NAS를 사용하는 경우, 외부 서비스와 메시지를 주고받는 과정이 생각보다 까다로울 때가 많아요.

Synology Chat을 사용하고 있다면 이제 걱정하지 마세요. OpenClaw를 통해 Synology Chat을 직접적인 메시지 채널로 연결하고, 익숙한 방식으로 봇과 대화할 수 있는 방법을 알려드릴게요.

현재 Synology Chat webhook을 사용하여 DM(Direct-message) 채널로 지원됩니다. 이 플러그인은 Synology Chat의 outgoing webhook으로부터 들어오는 메시지를 수신하고, incoming webhook을 통해 답장을 보냅니다.

Synology Chat은 플러그인 기반이며 기본 코어 채널 설치에 포함되어 있지 않아요.

로컬 체크아웃에서 설치하는 방법은 다음과 같아요:

Terminal window
openclaw plugins install ./path/to/local/synology-chat-plugin

상세 내용: Plugins

  1. Synology Chat 플러그인을 설치하고 활성화하세요.
    • 이제 openclaw onboard를 실행하면 openclaw channels add와 동일한 채널 설정 목록에 Synology Chat이 나타나요.
    • 비대화형 설정: openclaw channels add --channel synology-chat --token <token> --url <incoming-webhook-url>
  2. Synology Chat 통합 설정에서 다음을 수행하세요:
    • incoming webhook을 생성하고 URL을 복사하세요.
    • secret token을 사용하여 outgoing webhook을 생성하세요.
  3. outgoing webhook URL이 OpenClaw gateway를 가리키도록 설정하세요:
    • 기본값은 https://gateway-host/webhook/synology예요.
    • 또는 커스텀 설정한 channels.synology-chat.webhookPath를 사용하세요.
  4. OpenClaw에서 설정을 마무리하세요.
    • 가이드 모드: openclaw onboard
    • 직접 설정: openclaw channels add --channel synology-chat --token <token> --url <incoming-webhook-url>
  5. gateway를 재시작하고 Synology Chat 봇에게 DM을 보내보세요.

최소 설정 예시:

{
channels: {
"synology-chat": {
enabled: true,
token: "synology-outgoing-token",
incomingUrl: "https://nas.example.com/webapi/entry.cgi?api=SYNO.Chat.External&method=incoming&version=2&token=...",
webhookPath: "/webhook/synology",
dmPolicy: "allowlist",
allowedUserIds: ["123456"],
rateLimitPerMinute: 30,
allowInsecureSsl: false,
},
},
}

기본 계정의 경우 환경 변수를 사용할 수 있어요:

  • SYNOLOGY_CHAT_TOKEN
  • SYNOLOGY_CHAT_INCOMING_URL
  • SYNOLOGY_NAS_HOST
  • SYNOLOGY_ALLOWED_USER_IDS (쉼표로 구분)
  • SYNOLOGY_RATE_LIMIT
  • OPENCLAW_BOT_NAME

설정 파일의 값이 환경 변수보다 우선순위가 높아요.

  • dmPolicy: "allowlist" 방식을 기본으로 권장해요.
  • allowedUserIds는 Synology user ID 목록(또는 쉼표로 구분된 문자열)을 받아요.
  • allowlist 모드에서 allowedUserIds 목록이 비어 있으면 설정 오류로 간주되어 webhook 라우트가 시작되지 않아요 (모두 허용하려면 dmPolicy: "open"을 사용하세요).
  • dmPolicy: "open"은 모든 발신자를 허용해요.
  • dmPolicy: "disabled"는 DM을 차단해요.
  • 답장 수신자 바인딩은 기본적으로 고정된 숫자 형태의 user_id를 유지해요. channels.synology-chat.dangerouslyAllowNameMatching: true는 답장 전달을 위해 변경 가능한 username/nickname 조회를 다시 활성화하는 호환성 모드예요.
  • 페어링 승인은 다음 명령어로 작동해요:
    • openclaw pairing list synology-chat
    • openclaw pairing approve synology-chat <CODE>

숫자로 된 Synology Chat user ID를 타겟으로 사용하세요.

예시:

Terminal window
openclaw message send --channel synology-chat --target 123456 --text "Hello from OpenClaw"
openclaw message send --channel synology-chat --target synology-chat:123456 --text "Hello again"

URL 기반 파일 전달을 통한 미디어 전송도 지원돼요.

channels.synology-chat.accounts 아래에서 여러 개의 Synology Chat 계정을 지원해요. 각 계정은 token, incoming URL, webhook path, DM 정책 및 제한 사항을 개별적으로 설정할 수 있어요. DM 세션은 계정 및 사용자별로 격리되므로, 서로 다른 두 Synology 계정에서 동일한 숫자 user_id를 사용하더라도 대화 기록 상태를 공유하지 않아요. 활성화된 각 계정에 고유한 webhookPath를 지정해 주세요. OpenClaw는 중복된 경로를 거부하며, 다중 계정 설정에서 공유 webhook 경로를 그대로 상속받으려는 명명된 계정의 시작을 거부해요. 만약 의도적으로 레거시 상속이 필요하다면 해당 계정이나 channels.synology-chat에 dangerouslyAllowInheritedWebhookPath: true를 설정하세요. 하지만 중복된 경로는 여전히 거부되므로 계정별로 명확한 경로를 사용하는 것이 좋아요.

{
channels: {
"synology-chat": {
enabled: true,
accounts: {
default: {
token: "token-a",
incomingUrl: "https://nas-a.example.com/...token=...",
},
alerts: {
token: "token-b",
incomingUrl: "https://nas-b.example.com/...token=...",
webhookPath: "/webhook/synology-alerts",
dmPolicy: "allowlist",
allowedUserIds: ["987654"],
},
},
},
},
}
  • token은 비밀로 유지하고 유출된 경우 교체하세요.
  • 자체 서명된 로컬 NAS 인증서를 명시적으로 신뢰하는 경우가 아니라면 allowInsecureSsl: false를 유지하세요.
  • 인바운드 webhook 요청은 발신자별로 token 검증 및 rate-limit이 적용돼요.
  • 프로덕션 환경에서는 dmPolicy: "allowlist"를 권장해요.
  • 레거시 username 기반 답장 전달이 꼭 필요한 경우가 아니라면 dangerouslyAllowNameMatching을 꺼두세요.
  • 다중 계정 설정에서 공유 경로 라우팅 위험을 명시적으로 수용하는 경우가 아니라면 dangerouslyAllowInheritedWebhookPath를 꺼두세요.

AI Setup Assistant

OpenClaw

OpenClaw Expert

아직 막혀 있나요?

이 문서에서 답을 못 찾았다면 OpenClaw Expert에게 바로 물어보세요.