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

95 lines
3.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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
- **URL:** http://10.0.0.230:11001
- **Тип:** Nextcloud AIO (Docker)
- **VM:** 10.0.0.230 (cloud@10.0.0.230)
## Запуск
```bash
# Запуск бота
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 (внутри контейнера)
```bash
# 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