7.5 KiB
7.5 KiB
🛠️ Инструмент для AI: Создание документов
Дата: 2025-01-XX
Статус: ✅ Готово к использованию
🎯 Назначение
Простой инструмент для AI Ассистента, который:
- Создает пустой DOCX/XLSX/PPTX файл
- Записывает в него текст, сгенерированный AI
- Сохраняет в папку проекта
- Возвращает ссылку на редактирование
📍 Endpoint
POST /crm_extensions/file_storage/api/create_document_with_text.php
📥 Параметры запроса
Обязательные:
module- модуль CRM (Project, Contacts, Accounts, etc.)recordId- ID записи (проекта, контакта и т.д.)recordName- название записи (для формирования папки)fileName- имя создаваемого файла (без расширения)documentText- текст документа, который нужно записать
Опциональные:
documentType- тип документа:docx(по умолчанию),xlsx,pptx
📤 Ответ
Успешный ответ:
{
"success": true,
"message": "Документ создан успешно",
"documentName": "Претензия_УК_Жилищник.docx",
"documentUrl": "https://s3.twcstorage.ru/.../Претензия_УК_Жилищник.docx",
"editUrl": "https://crm.clientright.ru/crm_extensions/file_storage/api/open_file_v2.php?recordId=123456&fileName=...",
"path": "crm2/CRM_Active_Files/Documents/Project/Дело_Иванова_123456/Претензия_УК_Жилищник.docx"
}
Ошибка:
{
"success": false,
"error": "Не указаны обязательные параметры: module, recordId, fileName, documentText"
}
🔧 Использование в n8n
Пример HTTP Request узла в n8n:
URL:
https://crm.clientright.ru/crm_extensions/file_storage/api/create_document_with_text.php
Method: POST
Body (JSON):
{
"module": "{{ $json.body.context.module }}",
"recordId": "{{ $json.body.context.projectId }}",
"recordName": "{{ $json.body.context.projectName }}",
"fileName": "{{ $json.body.documentName }}",
"documentText": "{{ $json.body.generatedText }}",
"documentType": "docx"
}
Или через Query Parameters (GET):
https://crm.clientright.ru/crm_extensions/file_storage/api/create_document_with_text.php?
module={{ $json.body.context.module }}&
recordId={{ $json.body.context.projectId }}&
recordName={{ $json.body.context.projectName }}&
fileName={{ $json.body.documentName }}&
documentText={{ $json.body.generatedText }}&
documentType=docx
📋 Пример полного workflow в n8n
1. Webhook (получает запрос от AI Drawer)
↓
2. AI Node (GPT-4) - генерирует текст документа
↓
3. HTTP Request → create_document_with_text.php
Body: {
module: "Project",
recordId: "123456",
recordName: "Дело Иванова",
fileName: "Претензия_УК_Жилищник",
documentText: "ПРЕТЕНЗИЯ\n\nКому: УК Жилищник\nОт: Иванов Иван Иванович\n\n..."
}
↓
4. Получаем ответ:
{
success: true,
documentName: "Претензия_УК_Жилищник.docx",
editUrl: "https://..."
}
↓
5. Формируем сообщение для пользователя:
"✅ Документ создан: Претензия_УК_Жилищник.docx\n[Открыть для редактирования]"
↓
6. Публикуем в Redis: ai:response:{taskId}
💬 Пример ответа AI пользователю
После создания документа:
✅ Документ создан: Претензия_УК_Жилищник.docx
Документ сохранен в папку проекта и готов к редактированию.
Вы можете открыть его для просмотра и внесения изменений.
[Открыть документ] ← ссылка на editUrl
🎨 Форматирование текста
DOCX:
- Текст разбивается на параграфы по переносам строк (
\n) - Каждый параграф отделяется пустой строкой
- Шрифт: Times New Roman, 12pt
- Поля: 2 см сверху/справа/снизу, 3 см слева
XLSX:
- Весь текст записывается в ячейку A1
- Автоподбор ширины колонки
PPTX:
- Текст размещается на первом слайде
- Разбивается на параграфы
🔍 Примеры использования
Пример 1: Создание претензии
Запрос в n8n:
{
"module": "Project",
"recordId": "123456",
"recordName": "Дело Иванова",
"fileName": "Претензия_УК_Жилищник",
"documentText": "ПРЕТЕНЗИЯ\n\nКому: УК \"Жилищник\"\nОт: Иванов Иван Иванович\n\nДата: 15.01.2025\n\nТекст претензии:\nУК отказывается возмещать ущерб от залива квартиры...\n\nТребования:\n1. Возместить ущерб в размере 400000 рублей\n2. Провести экспертизу\n\nС уважением,\nИванов Иван Иванович"
}
Результат:
- Создан файл
Претензия_УК_Жилищник.docx - Сохранен в папку проекта
- Возвращена ссылка на редактирование
Пример 2: Создание иска
Запрос:
{
"module": "Project",
"recordId": "123456",
"recordName": "Дело Иванова",
"fileName": "Исковое_заявление",
"documentText": "ИСКОВОЕ ЗАЯВЛЕНИЕ\n\nВ суд: ...\n\nИстец: Иванов Иван Иванович\nОтветчик: УК \"Жилищник\"\n\n...",
"documentType": "docx"
}
⚠️ Ограничения
- Максимальный размер текста: Ограничен памятью PHP (обычно 128MB+)
- Форматирование: Базовое форматирование (параграфы, переносы строк)
- Таблицы/изображения: Не поддерживаются в упрощенной версии
🚀 Следующие шаги
После MVP можно добавить:
- Поддержку шаблонов (заполнение переменных)
- Расширенное форматирование (жирный, курсив, списки)
- Таблицы и изображения
- Автоматическое определение типа документа
📝 Примечания
- Файл сохраняется в S3
- Событие публикуется в Redis для индексации
- Документ сразу доступен для редактирования в OnlyOffice
- Путь формируется автоматически:
{module}/{recordName}_{recordId}/{fileName}.{ext}