вот проходит текст, проходят фото. Вот функции в любом виде не проходят
Это очень точное наблюдение. Если текст и фото проходят, значит «труба» (канал связи) работает. Но если **«функции»** (структурированные данные JSON или вызовы инструментов) вызывают тишину и отсутствие записей в n8n, проблема в **фильтрации контента** или **несоответствии схемы данных**.
В режиме **Technical Co-Pilot** анализирую, почему «режутся» именно функции:
### 1. Nginx Proxy Manager (WAF / Security Filters)
В NPM или в самом Nginx могут быть включены базовые фильтры безопасности. Когда вы отправляете просто текст или фото, это выглядит «безопасно». Но когда отправляется JSON с «функциями» (где есть ключи вроде `function`, `call`, `arguments`, `parameters`), Nginx может принять это за попытку **Code Injection** (инъекции кода) и молча заблокировать запрос.
* **Как проверить:** В настройках NPM для `logic.raumai.de` убедитесь, что **НЕ** включена опция «Block Common Exploits». Если она включена — выключите и проверьте.
### 2. Ошибка парсинга в n8n (Webhook Node)
Если запрос доходит до n8n, но узел **Webhook** настроен слишком жестко, он может выдать ошибку до того, как создаст запись в истории (Execution).
* **Проверьте настройки узла Webhook:**
* **HTTP Method:** Должен быть `POST`.
* **Authentication:** Если вы используете API-ключ или Bearer Token, убедитесь, что Open WebUI его передает.
* **Options -> Ignore Response Code:** Попробуйте включить, чтобы увидеть, не «падает» ли он на входе.
* **Binary Data:** Если вы передаете функции вместе с фото, убедитесь, что включена опция `Always Output Data`.
### 3. Формат запроса Open WebUI (Functions vs Chat)
Когда Open WebUI вызывает «Функцию» (Tool), он отправляет JSON-пакет, который сильно отличается от обычного сообщения.
* Если ваш n8n ожидает структуру `message: { content: «…» }`, а Open WebUI присылает `tool_calls: [ … ]`, и в вашем workflow нет логики для обработки этого массива, n8n может просто не понять, что делать.
* **Но:** это всё равно должно было оставить след в истории. Если следа нет — запрос **не дошел**.
### 4. Самый важный тест (Браузер)
Чтобы мы не гадали, сделайте следующее:
1. Откройте Open WebUI.
2. Нажмите **F12** (Инструменты разработчика) -> вкладка **Network (Сеть)**.
3. Попробуйте вызвать функцию, которая «не проходит».
4. Найдите в списке запрос (он будет красным или с ошибкой).
5. Кликните на него и посмотрите вкладку **Response (Ответ)** и **Payload (Полезная нагрузка)**.
**Что мы там ищем:**
* Если там ошибка **403 Forbidden** или **406 Not Acceptable** — это режет **Nginx**.
* Если там ошибка **400 Bad Request** — это **n8n** не нравится формат JSON.
* Если там ошибка **502/504** — n8n «упал» при попытке обработать этот JSON.
### Почему фото проходят, а функции — нет?
Фотографии передаются как `multipart/form-data` или base64-строки. Для серверов безопасности это просто «бинарный шум». А функции — это **структурированный текст**, который проверяется на наличие опасных команд.
**Ваш следующий шаг:** Посмотрите код ошибки в консоли браузера (F12) при отправке функции. Это даст нам 100% ответ, кто именно «режет» запрос.
🤖 | 📅 | 🧠 CTX 6