OpenClaw Nextcloud Talk 채널
Nextcloud 생태계에 내장된 프라이버시 중심의 기업용 커뮤니케이션 플랫폼인 Nextcloud Talk에 OpenClaw를 연결하세요. 이 통합은 웹훅 기반 봇 아키텍처를 사용합니다 — Nextcloud Talk이 웹훅을 통해 메시지 이벤트를 Gateway로 전송하고, 봇은 Talk REST API를 통해 응답합니다. 이를 통해 AI 어시스턴트가 자체 호스팅 Nextcloud 환경 내에서 다이렉트 메시지, 채팅방 대화에 참여하고 이모지로 메시지에 반응할 수 있습니다.
Nextcloud Talk 지원 기능
텍스트 메시지
지원
미디어 및 파일
지원
리액션
지원
스레드
미지원
음성 메시지
미지원
그룹 채팅
지원
Nextcloud Talk 사전 요구사항
- 관리자 권한이 있고 Talk 앱이 설치된 Nextcloud 서버(v27.1 이상)
- 웹훅 서명 검증을 위한 공유 시크릿(40-128자)
- Nextcloud 서버에서 접근 가능한 Gateway의 웹훅 엔드포인트(공개 URL 또는 내부 네트워크)
- OpenClaw Gateway 설치 및 실행 중
- 'openclaw plugins install @openclaw/nextcloud-talk' 명령으로 설치된 Nextcloud Talk 플러그인
Nextcloud Talk 빠른 설정
Nextcloud Talk 플러그인 설치
'openclaw plugins install @openclaw/nextcloud-talk' 명령을 실행하여 Gateway에 Nextcloud Talk 지원을 추가합니다.
Nextcloud 서버에 봇 등록
Nextcloud 서버에 SSH로 접속한 후 OCC 명령을 실행합니다: ./occ talk:bot:install "OpenClaw" "<shared-secret>" "<webhook-url>" --feature reaction. <shared-secret>을 40자 이상의 강력한 시크릿으로, <webhook-url>을 Gateway의 공개 접근 가능한 웹훅 엔드포인트(예: https://gateway.example.com:8788/webhook)로 대체하세요.
봇 활성화 및 설정
Nextcloud Talk에서 채팅방 설정으로 이동하여 OpenClaw 봇을 활성화합니다. 그런 다음 baseUrl과 botSecret을 포함한 채널 설정을 ~/.openclaw/openclaw.json에 추가합니다. 'openclaw start'로 Gateway를 시작하고 채팅방에서 메시지를 보내 연결을 확인합니다.
Nextcloud Talk 구성 예시
{
"channels": {
"nextcloud-talk": {
"enabled": true,
"baseUrl": "https://nextcloud.example.com",
"botSecret": "your-shared-secret-min-40-chars",
"dmPolicy": "pairing"
}
}
}Nextcloud Talk 상세 문서
아키텍처 개요
OCC를 통한 봇 등록
./occ talk:bot:install "OpenClaw" "a]72@Bz&V!LKMO*xhQib7p^E%yzGMG(8a7Bp*x6o" "https://gateway.example.com:8788/webhook" --feature reactionDM 정책
{
"channels": {
"nextcloud-talk": {
"dmPolicy": "pairing",
"allowFrom": ["user-id-1", "user-id-2"]
}
}
}채팅방 설정
{
"channels": {
"nextcloud-talk": {
"groupPolicy": "allowlist",
"rooms": {
"abc123token": {
"requireMention": true
},
"def456token": {
"requireMention": false
}
}
}
}
}채팅방 유형 감지를 위한 API 자격 증명
{
"channels": {
"nextcloud-talk": {
"apiUser": "bot-service-account",
"apiPassword": "service-account-password",
"apiPasswordFile": "/run/secrets/nc-api-password"
}
}
}웹훅 설정
{
"channels": {
"nextcloud-talk": {
"webhookPort": 8788,
"webhookHost": "0.0.0.0",
"webhookPath": "/webhook",
"webhookPublicUrl": "https://gateway.example.com:8788/webhook"
}
}
}메시지 처리 및 스트리밍
{
"channels": {
"nextcloud-talk": {
"textChunkLimit": 4000,
"chunkMode": "newline",
"blockStreaming": true,
"blockStreamingCoalesce": true,
"mediaMaxMb": 10
}
}
}대화 기록
{
"channels": {
"nextcloud-talk": {
"historyLimit": 20,
"dmHistoryLimit": 50
}
}
}리액션 지원
보안 및 웹훅 서명
Nextcloud Talk 구성 참조
| Key | Type | Default | Description |
|---|---|---|---|
| enabled | boolean | true | Nextcloud Talk 채널 활성화 또는 비활성화 |
| baseUrl | string | "" | Nextcloud 서버의 전체 URL(예: https://nextcloud.example.com) |
| botSecret | string | "" | 웹훅 서명 검증에 사용되는 공유 시크릿(OCC 설치 시크릿과 일치해야 함) |
| botSecretFile | string | "" | 공유 시크릿이 포함된 파일 경로(인라인 botSecret의 대안) |
| apiUser | string | "" | API 호출에 사용되는 Nextcloud 사용자 이름(채팅방 유형 감지에 사용) |
| apiPassword | string | "" | API 사용자 계정의 비밀번호 |
| apiPasswordFile | string | "" | API 비밀번호가 포함된 파일 경로(인라인 apiPassword의 대안) |
| dmPolicy | string | "pairing" | DM 접근 정책: 'pairing'(인증 코드), 'open'(모든 사용자), 또는 'disabled'(DM 비활성) |
| allowFrom | string[] | [] | 봇에 DM을 보낼 수 있는 Nextcloud 사용자 ID(["*"]로 개방 접근) |
| groupPolicy | string | "allowlist" | 채팅방 접근 정책: 'allowlist'(모더레이터가 활성화한 채팅방만 허용) |
| webhookPort | number | 8788 | 내장 웹훅 HTTP 서버의 포트 |
| webhookHost | string | "0.0.0.0" | 웹훅 서버를 바인딩할 인터페이스 |
| webhookPath | string | "/webhook" | 웹훅 엔드포인트의 URL 경로 |
| webhookPublicUrl | string | "" | 웹훅 엔드포인트의 전체 공개 URL(리버스 프록시 뒤에서 필요) |
| historyLimit | number | 20 | 채팅방 대화의 컨텍스트로 포함되는 최대 이전 메시지 수 |
| dmHistoryLimit | number | 50 | DM 대화의 컨텍스트로 포함되는 최대 이전 메시지 수 |
| textChunkLimit | number | 4000 | 메시지 청크당 최대 문자 수 |
| chunkMode | string | "length" | 텍스트 분할 모드: 'length'(문자 수 제한) 또는 'newline'(문단 경계) |
| blockStreaming | boolean | false | 전송 전 완전한 AI 응답 대기(스트리밍 없음) |
| blockStreamingCoalesce | boolean | false | 스트리밍 청크를 하나의 최종 메시지로 결합 |
| mediaMaxMb | number | 10 | 미디어 URL 참조의 최대 파일 크기(MB) |
Nextcloud Talk 채널 활성화 또는 비활성화
Nextcloud 서버의 전체 URL(예: https://nextcloud.example.com)
웹훅 서명 검증에 사용되는 공유 시크릿(OCC 설치 시크릿과 일치해야 함)
공유 시크릿이 포함된 파일 경로(인라인 botSecret의 대안)
API 호출에 사용되는 Nextcloud 사용자 이름(채팅방 유형 감지에 사용)
API 사용자 계정의 비밀번호
API 비밀번호가 포함된 파일 경로(인라인 apiPassword의 대안)
DM 접근 정책: 'pairing'(인증 코드), 'open'(모든 사용자), 또는 'disabled'(DM 비활성)
봇에 DM을 보낼 수 있는 Nextcloud 사용자 ID(["*"]로 개방 접근)
채팅방 접근 정책: 'allowlist'(모더레이터가 활성화한 채팅방만 허용)
내장 웹훅 HTTP 서버의 포트
웹훅 서버를 바인딩할 인터페이스
웹훅 엔드포인트의 URL 경로
웹훅 엔드포인트의 전체 공개 URL(리버스 프록시 뒤에서 필요)
채팅방 대화의 컨텍스트로 포함되는 최대 이전 메시지 수
DM 대화의 컨텍스트로 포함되는 최대 이전 메시지 수
메시지 청크당 최대 문자 수
텍스트 분할 모드: 'length'(문자 수 제한) 또는 'newline'(문단 경계)
전송 전 완전한 AI 응답 대기(스트리밍 없음)
스트리밍 청크를 하나의 최종 메시지로 결합
미디어 URL 참조의 최대 파일 크기(MB)
Nextcloud Talk 자주 묻는 질문
Nextcloud Talk 문제 해결
Webhook URL에 접근할 수 없거나, 채팅방에서 봇이 활성화되지 않았거나, 공유 시크릿이 일치하지 않습니다.
openclaw.json의 공유 시크릿이 봇 설치 시 사용된 것과 일치하지 않습니다.
대상 채팅방에서 모더레이터가 봇을 활성화하지 않았거나, requireMention이 true인데 봇이 @멘션되지 않았습니다.
API 자격 증명(apiUser, apiPassword)이 설정되지 않았습니다.
설정된 웹훅 포트가 이미 사용 중이거나 호스트 바인딩이 유효하지 않습니다.