Files
knowledge-base/projects/dttb/nextcloud-talk-bot
2026-02-27 00:34:13 +03:00
..

Nextcloud Talk Bot — Максимка

Обзор

AI-бот для Nextcloud Talk, который отвечает на сообщения в чате используя Claude через cliproxy (Clawdbot).

Архитектура

Пользователь → Nextcloud Talk (чат "Максимка")
                     ↓ (polling API)
              Talk Bot (Python) ← порт 3401 не используется, polling
                     ↓
              cliproxy (localhost:8317) → Claude Sonnet
                     ↓
              Ответ → Talk API → Чат

Компоненты

1. Nextcloud Talk Bot (зарегистрированный)

  • Bot ID: 2
  • Name: Максимка
  • Secret: maximka-talk-bot-secret-key-2026-very-long-40chars
  • Webhook URL: http://10.0.0.206:3401/nextcloud-talk/webhook
  • Features: webhook, response, event
  • Статус: Webhook не работает (Docker networking), используем polling

2. Python Polling Bot

  • Скрипт: /root/clawd/scripts/nextcloud-talk-bot.py
  • Метод: Long polling через Talk API (lookIntoFuture=1)
  • AI: Claude Sonnet через cliproxy на localhost:8317
  • Лог: /tmp/talk-bot.log

3. Nextcloud пользователи

  • admin (1qaz!QAZ) — для чтения сообщений (polling)
  • maximka (MaximkaBot2026) — для отправки ответов

Чат

  • Имя: Максимка
  • Token: aecax6yg
  • Участники: admin, maximka

Nextcloud

Запуск

# Запуск бота
nohup python3 -u /root/clawd/scripts/nextcloud-talk-bot.py > /tmp/talk-bot.log 2>&1 &

# Проверка
cat /tmp/talk-bot.log | tail -20

# Остановка
pkill -f nextcloud-talk-bot

Управление через OCC (внутри контейнера)

# SSH на VM
ssh cloud@10.0.0.230

# Список ботов
echo '1qaz!QAZ' | sudo -S docker exec -u www-data nextcloud-aio-nextcloud php occ talk:bot:list aecax6yg

# Список чатов
curl -s -u "admin:1qaz!QAZ" "http://10.0.0.230:11001/ocs/v2.php/apps/spreed/api/v4/room" -H "OCS-APIRequest: true" -H "Accept: application/json"

# Сброс пароля пользователя
echo '1qaz!QAZ' | sudo -S docker exec -i -e OC_PASS='NewPassword' -u www-data nextcloud-aio-nextcloud php occ user:resetpassword --password-from-env maximka

Важные заметки

  1. Webhook не работает — Nextcloud Talk webhook для ботов требует background jobs и работает ненадёжно в AIO setup. Поэтому используем polling.

  2. Join room обязательно — перед отправкой сообщения от maximka нужно вызвать POST .../room/{token}/participants/active (join), иначе 401.

  3. Фильтрация — бот пропускает:

    • Свои сообщения (actorId == "maximka")
    • Сообщения от других ботов (actorType == "bots")
    • Системные сообщения (messageType == "system")
  4. Long polling — Talk API поддерживает lookIntoFuture=1&timeout=30 для эффективного ожидания новых сообщений.

TODO

  • Systemd сервис для автозапуска
  • История контекста (несколько последних сообщений)
  • Поддержка нескольких чатов
  • Аватар для пользователя maximka