Developer and self-hosted

Nextcloud Talk

Nextcloud Talk은 Talk Webhook 봇을 통해 OpenClaw를 자체 호스팅 Nextcloud 인스턴스에 연결하는 다운로드 가능한 채널 Plugin(@openclaw/nextcloud-talk)입니다. 다이렉트 메시지, 방, 반응 및 마크다운 메시지가 지원되며 미디어는 URL로 전송됩니다.

설치

bash
openclaw plugins install @openclaw/nextcloud-talk

현재 공식 릴리스 태그를 따르려면 버전이 없는 패키지 사양을 사용하십시오. 재현 가능한 설치가 필요한 경우에만 정확한 버전을 고정하십시오.

로컬 체크아웃에서 설치하는 경우(개발 워크플로):

bash
openclaw plugins install ./path/to/local/nextcloud-talk-plugin

설치 후 Gateway를 다시 시작하십시오. 자세한 내용: Plugin

빠른 설정(초보자)

  1. Plugin을 설치하십시오(위 참조).

  2. Nextcloud 서버에서 봇을 생성하십시오.

    bash
    ./occ talk:bot:install "OpenClaw" "<shared-secret>" "<webhook-url>" --feature webhook --feature response --feature reaction

    --feature response을 유지하십시오. 이것이 없으면 아웃바운드 응답이 401 오류로 실패합니다. 기존 봇은 ./occ talk:bot:state --feature webhook --feature response --feature reaction <botId> 1을 사용하여 복구하십시오.

  3. 대상 방 설정에서 봇을 활성화하십시오.

  4. OpenClaw를 구성하십시오.

    • 구성: channels.nextcloud-talk.baseUrl + channels.nextcloud-talk.botSecret
    • 또는 환경 변수: NEXTCLOUD_TALK_BOT_SECRET(기본 계정에만 적용)

    CLI 설정(--url/--token은 명시적 필드의 별칭이며, nc-talknc은 채널 별칭으로 작동합니다):

    bash
    openclaw channels add --channel nextcloud-talk \  --url https://cloud.example.com \  --token "<shared-secret>"

    동일한 명시적 필드:

    bash
    openclaw channels add --channel nextcloud-talk \  --base-url https://cloud.example.com \  --secret "<shared-secret>"

    파일 기반 시크릿:

    bash
    openclaw channels add --channel nextcloud-talk \  --base-url https://cloud.example.com \  --secret-file /path/to/nextcloud-talk-secret
  5. Gateway를 다시 시작하거나 설정을 완료하십시오.

최소 구성:

json5
{  channels: {    "nextcloud-talk": {      enabled: true,      baseUrl: "https://cloud.example.com",      botSecret: "shared-secret",      dmPolicy: "pairing",    },  },}

참고 사항

  • 봇은 DM을 시작할 수 없습니다. 사용자가 먼저 봇에 메시지를 보내야 합니다.
  • Nextcloud 서버에서 Webhook URL에 접근할 수 있어야 합니다. Gateway가 프록시 뒤에 있는 경우 webhookPublicUrl을 설정하십시오. Webhook 요청은 봇 시크릿을 사용하여 HMAC-SHA256으로 서명됩니다. 유효하지 않은 서명은 거부되며 속도 제한이 적용됩니다.
  • 봇 API는 미디어 업로드를 지원하지 않습니다. 아웃바운드 미디어는 Attachment: <url> 줄로 추가됩니다.
  • Webhook 페이로드는 DM과 방을 구분하지 않습니다. 방 유형 조회를 활성화하려면 apiUser + apiPassword을 설정하십시오(약 5분간 캐시됨). 설정하지 않으면 모든 대화가 방으로 처리됩니다.
  • 아웃바운드 요청은 SSRF 보호 장치를 통과합니다. 신뢰할 수 있는 비공개/내부 네트워크의 Nextcloud 호스트를 사용하려면 channels.nextcloud-talk.network.dangerouslyAllowPrivateNetwork: true로 명시적으로 허용하십시오.
  • apiUser/apiPasswordwebhookPublicUrl이 설정되면 openclaw channels status이 봇을 검사하고 response 기능이 없을 때 경고합니다.

액세스 제어(DM)

  • 기본값: channels.nextcloud-talk.dmPolicy = "pairing". 알 수 없는 발신자는 페어링 코드를 받습니다.
  • 다음 방법으로 승인하십시오.
    • openclaw pairing list nextcloud-talk
    • openclaw pairing approve nextcloud-talk &lt;CODE&gt;
  • 공개 DM: channels.nextcloud-talk.dmPolicy="open"channels.nextcloud-talk.allowFrom=["*"].
  • allowFrom은 Nextcloud 사용자 ID만 일치시킵니다(소문자로 변환됨). 표시 이름은 무시됩니다.

방(그룹)

  • 기본값: channels.nextcloud-talk.groupPolicy = "allowlist"(멘션 필요).
  • 방 토큰을 키로 사용하는 channels.nextcloud-talk.rooms으로 허용 목록에 방을 추가하십시오. "*"은 와일드카드 기본값을 설정합니다.
json5
{  channels: {    "nextcloud-talk": {      rooms: {        "room-token": { requireMention: true },      },    },  },}
  • 방별 키: requireMention(기본값 true), enabled(false이면 방 비활성화), allowFrom(방별 발신자 허용 목록), tools(도구 허용/거부 재정의), skills(불러오는 Skills 제한), systemPrompt.
  • 어떤 방도 허용하지 않으려면 허용 목록을 비워 두거나 channels.nextcloud-talk.groupPolicy="disabled"을 설정하십시오.

기능

기능 상태
다이렉트 메시지 지원됨
지원됨
스레드 지원되지 않음
미디어 URL만 지원
반응 지원됨
네이티브 명령 지원되지 않음

구성 참조(Nextcloud Talk)

전체 구성: 구성

제공자 옵션:

  • channels.nextcloud-talk.enabled: 채널 시작을 활성화/비활성화합니다.
  • channels.nextcloud-talk.baseUrl: Nextcloud 인스턴스 URL입니다.
  • channels.nextcloud-talk.botSecret: 봇 공유 시크릿(문자열 또는 시크릿 참조)입니다.
  • channels.nextcloud-talk.botSecretFile: 일반 파일 시크릿 경로입니다. 심볼릭 링크는 거부됩니다.
  • channels.nextcloud-talk.apiUser: 방 조회(DM 감지) 및 상태 검사에 사용할 API 사용자입니다.
  • channels.nextcloud-talk.apiPassword: 방 조회에 사용할 API/앱 비밀번호입니다.
  • channels.nextcloud-talk.apiPasswordFile: API 비밀번호 파일 경로입니다.
  • channels.nextcloud-talk.webhookPort: Webhook 리스너 포트(기본값: 8788)입니다.
  • channels.nextcloud-talk.webhookHost: Webhook 호스트(기본값: 0.0.0.0)입니다.
  • channels.nextcloud-talk.webhookPath: Webhook 경로(기본값: /nextcloud-talk-webhook)입니다.
  • channels.nextcloud-talk.webhookPublicUrl: 외부에서 접근 가능한 Webhook URL입니다.
  • channels.nextcloud-talk.dmPolicy: pairing | allowlist | open | disabled(기본값: pairing)입니다. open에는 allowFrom=["*"]이 필요합니다.
  • channels.nextcloud-talk.allowFrom: DM 허용 목록(사용자 ID)입니다.
  • channels.nextcloud-talk.groupPolicy: allowlist | open | disabled(기본값: allowlist)입니다.
  • channels.nextcloud-talk.groupAllowFrom: 방 발신자 허용 목록(사용자 ID)입니다. 설정하지 않으면 allowFrom을 사용합니다.
  • channels.nextcloud-talk.rooms: 방별 설정 및 허용 목록입니다(위 참조).
  • 정적 발신자 액세스 그룹은 accessGroup:<name>을 사용하여 allowFromgroupAllowFrom에서 참조할 수 있습니다.
  • channels.nextcloud-talk.historyLimit: 그룹 기록 제한입니다(0이면 비활성화).
  • channels.nextcloud-talk.dmHistoryLimit: DM 기록 제한입니다(0이면 비활성화).
  • channels.nextcloud-talk.dms: 사용자 ID를 키로 사용하는 DM별 재정의입니다(historyLimit).
  • channels.nextcloud-talk.textChunkLimit: 아웃바운드 텍스트 청크 크기(문자 수, 기본값: 4000)입니다.
  • channels.nextcloud-talk.streaming.chunkMode: 길이별 청킹 전에 빈 줄(단락 경계)을 기준으로 분할하려면 length(기본값) 또는 newline을 사용합니다.
  • channels.nextcloud-talk.streaming.block.enabled: 이 채널의 블록 스트리밍을 활성화하거나 비활성화합니다.
  • channels.nextcloud-talk.streaming.block.coalesce: 블록 스트리밍 병합 조정입니다.
  • channels.nextcloud-talk.responsePrefix: 아웃바운드 응답 접두사입니다.
  • channels.nextcloud-talk.markdown.tables: 마크다운 표 렌더링 모드(off | bullets | code | block)입니다.
  • channels.nextcloud-talk.mediaMaxMb: 인바운드 미디어 제한(MB)입니다.
  • channels.nextcloud-talk.network.dangerouslyAllowPrivateNetwork: 비공개/내부 Nextcloud 호스트가 SSRF 보호 장치를 통과하도록 허용합니다.
  • channels.nextcloud-talk.accounts.<id>: 계정별 재정의(동일한 키)입니다. defaultAccount은 기본값을 선택합니다. 환경 변수 NEXTCLOUD_TALK_BOT_SECRET / NEXTCLOUD_TALK_API_PASSWORD은 기본 계정에만 적용됩니다.

관련 문서

Was this useful?
On this page

On this page