Developer and self-hosted
Nextcloud Talk
Nextcloud Talk to dostępny do pobrania plugin kanału (@openclaw/nextcloud-talk), który łączy OpenClaw z samodzielnie hostowaną instancją Nextcloud za pośrednictwem bota webhooka Talk. Obsługiwane są wiadomości bezpośrednie, pokoje, reakcje i wiadomości w formacie Markdown; multimedia są wysyłane jako adresy URL.
Instalacja
openclaw plugins install @openclaw/nextcloud-talkUżyj samej specyfikacji pakietu, aby korzystać z bieżącego oficjalnego tagu wydania. Przypnij dokładną wersję tylko wtedy, gdy potrzebujesz powtarzalnej instalacji.
Z lokalnego drzewa roboczego (przepływy programistyczne):
openclaw plugins install ./path/to/local/nextcloud-talk-pluginPo instalacji uruchom ponownie Gateway. Szczegóły: Pluginy
Szybka konfiguracja (dla początkujących)
-
Zainstaluj plugin (jak wyżej).
-
Utwórz bota na serwerze Nextcloud:
bash ./occ talk:bot:install "OpenClaw" "<shared-secret>" "<webhook-url>" --feature webhook --feature response --feature reactionZachowaj
--feature response: bez tej opcji odpowiedzi wychodzące kończą się błędem 401. Napraw istniejącego bota za pomocą polecenia./occ talk:bot:state --feature webhook --feature response --feature reaction <botId> 1. -
Włącz bota w ustawieniach docelowego pokoju.
-
Skonfiguruj OpenClaw:
- Konfiguracja:
channels.nextcloud-talk.baseUrl+channels.nextcloud-talk.botSecret - Lub zmienna środowiskowa:
NEXTCLOUD_TALK_BOT_SECRET(tylko konto domyślne)
Konfiguracja w CLI (
--url/--tokensą aliasami jawnych pól;nc-talkincdziałają jako aliasy kanału):bash openclaw channels add --channel nextcloud-talk \ --url https://cloud.example.com \ --token "<shared-secret>"Równoważne jawne pola:
bash openclaw channels add --channel nextcloud-talk \ --base-url https://cloud.example.com \ --secret "<shared-secret>"Sekret przechowywany w pliku:
bash openclaw channels add --channel nextcloud-talk \ --base-url https://cloud.example.com \ --secret-file /path/to/nextcloud-talk-secret - Konfiguracja:
-
Uruchom ponownie Gateway (lub dokończ konfigurację).
Minimalna konfiguracja:
{ channels: { "nextcloud-talk": { enabled: true, baseUrl: "https://cloud.example.com", botSecret: "shared-secret", dmPolicy: "pairing", }, },}Uwagi
- Boty nie mogą inicjować wiadomości bezpośrednich. Użytkownik musi najpierw wysłać wiadomość do bota.
- Adres URL webhooka musi być osiągalny z serwera Nextcloud; ustaw
webhookPublicUrl, gdy Gateway znajduje się za serwerem proxy. Żądania webhooka są podpisywane algorytmem HMAC-SHA256 przy użyciu sekretu bota; żądania z nieprawidłowymi podpisami są odrzucane i podlegają ograniczeniu częstotliwości. - Interfejs API bota nie obsługuje przesyłania multimediów; multimedia wychodzące są dołączane jako wiersz
Attachment: <url>. - Ładunek webhooka nie rozróżnia wiadomości bezpośrednich od pokojów; ustaw
apiUser+apiPassword, aby włączyć sprawdzanie typu pokoju (wyniki są buforowane przez około 5 minut). Bez tych ustawień każda konwersacja jest traktowana jako pokój. - Żądania wychodzące przechodzą przez zabezpieczenie SSRF. W przypadku hosta Nextcloud w zaufanej sieci prywatnej/wewnętrznej włącz obsługę za pomocą
channels.nextcloud-talk.network.dangerouslyAllowPrivateNetwork: true. - Gdy ustawiono
apiUser/apiPasswordiwebhookPublicUrl, polecenieopenclaw channels statussprawdza bota i ostrzega o braku funkcjiresponse.
Kontrola dostępu (wiadomości bezpośrednie)
- Domyślnie:
channels.nextcloud-talk.dmPolicy = "pairing". Nieznani nadawcy otrzymują kod parowania. - Zatwierdź za pomocą:
openclaw pairing list nextcloud-talkopenclaw pairing approve nextcloud-talk <CODE>
- Publiczne wiadomości bezpośrednie:
channels.nextcloud-talk.dmPolicy="open"wraz zchannels.nextcloud-talk.allowFrom=["*"]. allowFromdopasowuje wyłącznie identyfikatory użytkowników Nextcloud (małymi literami); nazwy wyświetlane są ignorowane.
Pokoje (grupy)
- Domyślnie:
channels.nextcloud-talk.groupPolicy = "allowlist"(wymagane jest wspomnienie). - Dodaj pokoje do listy dozwolonych za pomocą
channels.nextcloud-talk.rooms, używając tokenu pokoju jako klucza;"*"ustawia domyślną wartość wieloznaczną:
{ channels: { "nextcloud-talk": { rooms: { "room-token": { requireMention: true }, }, }, },}- Klucze dla poszczególnych pokojów:
requireMention(domyślnie true),enabled(false wyłącza pokój),allowFrom(lista dozwolonych nadawców dla pokoju),tools(nadpisania dozwolonych/zabronionych narzędzi),skills(ograniczenie ładowanych Skills),systemPrompt. - Aby nie zezwalać na żadne pokoje, pozostaw listę dozwolonych pustą lub ustaw
channels.nextcloud-talk.groupPolicy="disabled".
Możliwości
| Funkcja | Stan |
|---|---|
| Wiadomości bezpośrednie | Obsługiwane |
| Pokoje | Obsługiwane |
| Wątki | Nieobsługiwane |
| Multimedia | Tylko adresy URL |
| Reakcje | Obsługiwane |
| Polecenia natywne | Nieobsługiwane |
Dokumentacja konfiguracji (Nextcloud Talk)
Pełna konfiguracja: Konfiguracja
Opcje dostawcy:
channels.nextcloud-talk.enabled: włącza/wyłącza uruchamianie kanału.channels.nextcloud-talk.baseUrl: adres URL instancji Nextcloud.channels.nextcloud-talk.botSecret: współdzielony sekret bota (ciąg znaków lub odwołanie do sekretu).channels.nextcloud-talk.botSecretFile: ścieżka zwykłego pliku z sekretem. Dowiązania symboliczne są odrzucane.channels.nextcloud-talk.apiUser: użytkownik API do sprawdzania pokojów (wykrywania wiadomości bezpośrednich) i kontroli stanu.channels.nextcloud-talk.apiPassword: hasło API/aplikacji do sprawdzania pokojów.channels.nextcloud-talk.apiPasswordFile: ścieżka pliku z hasłem API.channels.nextcloud-talk.webhookPort: port procesu nasłuchującego webhooka (domyślnie: 8788).channels.nextcloud-talk.webhookHost: host webhooka (domyślnie: 0.0.0.0).channels.nextcloud-talk.webhookPath: ścieżka webhooka (domyślnie: /nextcloud-talk-webhook).channels.nextcloud-talk.webhookPublicUrl: zewnętrznie osiągalny adres URL webhooka.channels.nextcloud-talk.dmPolicy:pairing | allowlist | open | disabled(domyślnie: pairing).openwymagaallowFrom=["*"].channels.nextcloud-talk.allowFrom: lista dozwolonych nadawców wiadomości bezpośrednich (identyfikatory użytkowników).channels.nextcloud-talk.groupPolicy:allowlist | open | disabled(domyślnie: allowlist).channels.nextcloud-talk.groupAllowFrom: lista dozwolonych nadawców w pokojach (identyfikatory użytkowników); jeśli nie jest ustawiona, używana jest wartośćallowFrom.channels.nextcloud-talk.rooms: ustawienia i lista dozwolonych dla poszczególnych pokojów (patrz wyżej).- Do statycznych grup dostępu nadawców można odwoływać się z
allowFromigroupAllowFromza pomocąaccessGroup:<name>. channels.nextcloud-talk.historyLimit: limit historii grupy (0 wyłącza).channels.nextcloud-talk.dmHistoryLimit: limit historii wiadomości bezpośrednich (0 wyłącza).channels.nextcloud-talk.dms: nadpisania dla poszczególnych wiadomości bezpośrednich z identyfikatorem użytkownika jako kluczem (historyLimit).channels.nextcloud-talk.textChunkLimit: rozmiar fragmentu tekstu wychodzącego w znakach (domyślnie: 4000).channels.nextcloud-talk.chunkMode:length(domyślnie) lubnewline, aby dzielić tekst w pustych wierszach (granicach akapitów) przed podziałem według długości.channels.nextcloud-talk.blockStreaming: wyłącza strumieniowanie blokowe dla tego kanału.channels.nextcloud-talk.blockStreamingCoalesce: dostrajanie scalania strumieniowania blokowego.channels.nextcloud-talk.responsePrefix: prefiks odpowiedzi wychodzących.channels.nextcloud-talk.markdown.tables: tryb renderowania tabel Markdown (off | bullets | code | block).channels.nextcloud-talk.mediaMaxMb: limit multimediów przychodzących (MB).channels.nextcloud-talk.network.dangerouslyAllowPrivateNetwork: zezwala hostom Nextcloud w sieci prywatnej/wewnętrznej na przejście przez zabezpieczenie SSRF.channels.nextcloud-talk.accounts.<id>: nadpisania dla poszczególnych kont (te same klucze);defaultAccountwybiera konto domyślne. Zmienne środowiskoweNEXTCLOUD_TALK_BOT_SECRET/NEXTCLOUD_TALK_API_PASSWORDmają zastosowanie wyłącznie do konta domyślnego.
Powiązane
- Przegląd kanałów — wszystkie obsługiwane kanały
- Parowanie — uwierzytelnianie wiadomości bezpośrednich i przebieg parowania
- Grupy — działanie czatów grupowych i wymaganie wspomnienia
- Trasowanie kanałów — trasowanie sesji dla wiadomości
- Bezpieczeństwo — model dostępu i wzmacnianie zabezpieczeń