Newer
Older
navi-1 / manuals / content_publish.md

content_publish

Что делает

Публикует файл из директории сессии для просмотра пользователем прямо в чате. Поддерживаются интерактивные viewer'ы для 3D-моделей (STL), HTML-страниц, SVG, PDF, изображений и видео.

Как работает внутри

  1. Файл уже должен быть в директории сессии (uploads/sessions/{session_id}/).
  2. Инструмент не копирует файл — он только регистрирует метаданные в базе данных.
  3. Пользователь видит файл по URL /sessions/{session_id}/files/{filename}.
  4. Если вы отредактируете файл после публикации, пользователь увидит изменения сразу (перезагружать страницу не нужно).

Формат вызова

content_publish(
    filename="мой_файл.svg",      # обязательно — имя файла в директории сессии
    title="Моя диаграмма",        # опционально — заголовок карточки
    content_type="svg"            # опционально — тип для viewer (автоопределение по расширению)
)

Где находится директория сессии

Директория сессии — это uploads/sessions/{session_id}/. Полный путь зависит от настроек сервера.

Как узнать путь:

filesystem info uploads/sessions/{session_id}

Или просто пишите файлы относительно текущей директории — если вы уже в рабочей директории, используйте полный путь через filesystem write.

Типичный workflow

1. Создание и публикация

# Создать SVG в директории сессии
filesystem write uploads/sessions/sess-abc/chart.svg "<svg>...</svg>"

# Опубликовать
content_publish(filename="chart.svg", title="Диаграмма продаж")

2. Редактирование после публикации

# Прочитать текущий файл
filesystem read uploads/sessions/sess-abc/chart.svg

# Отредактировать
filesystem write uploads/sessions/sess-abc/chart.svg "<svg>...исправлено...</svg>"

Пользователь увидит изменения мгновенно — URL не меняется.

Поддерживаемые типы

Расширение Тип Viewer
.stl 3D-модель Three.js 3D viewer
.html, .htm HTML iframe
.svg SVG iframe
.pdf PDF iframe
.png, .jpg, .jpeg, .gif, .webp Изображение img
.mp4, .webm Видео video

Для неизвестных типов показывается карточка со ссылкой на скачивание.

Важные правила

  1. Файл должен существовать ДО вызоваcontent_publish не создаёт файлы, только регистрирует.
  2. Проверяйте коллизии — если файл с таким именем уже есть, он будет перезаписан при публикации.
  3. Используйте понятные именаchart.svg лучше чем file_1.svg.
  4. Для редактирования используйте тот же путь — не создавайте новые копии, правьте оригинал.