# CRM Extensions - Полная документация ## 📋 Обзор изменений Этот документ содержит полное описание всех изменений, внесенных в CRM систему для интеграции с WhatsApp, Telegram, Nextcloud и AI Drawer. ## 🗂️ Структура проекта ``` crm_extensions/ ├── README.md # Эта документация ├── .env # Конфигурация (секретные данные) ├── nextcloud_api.php # API для Nextcloud интеграции ├── file_storage/ # Файловое хранилище │ ├── NextcloudClient.php # Класс для работы с Nextcloud │ ├── api/ │ │ └── prepare_edit.php # API для подготовки файлов к редактированию │ └── n8n_migration_clean.sh # Скрипт для n8n миграции └── logs/ # Логи системы ``` ## 🔧 Основные компоненты ### 1. AI Drawer (Умный ассистент) **Файлы:** - `/layouts/v7/resources/css/ai-drawer.css` - Стили - `/layouts/v7/resources/js/ai-drawer-simple.js` - Основная логика - `/ai_drawer_improvements.js` - Улучшения **Подключение в Header.tpl:** ```smarty {* AI Drawer - подключение внешних файлов только для авторизованных пользователей *} {if $CURRENT_USER_MODEL} {/if} ``` **Инициализация:** ```javascript // В конце ai-drawer-simple.js document.addEventListener('DOMContentLoaded', function() { console.log('AI Drawer: DOM loaded, initializing...'); window.aiDrawer = new AIDrawer(); console.log('AI Drawer: Initialized successfully'); }); ``` ### 2. Nextcloud Editor (Редактирование документов) **Файлы:** - `/layouts/v7/lib/nextcloud-editor.js` - JavaScript функция - `/crm_extensions/nextcloud_api.php` - API endpoint - `/crm_extensions/file_storage/NextcloudClient.php` - Класс для работы с Nextcloud **Подключение в Header.tpl:** ```smarty ``` **Использование в шаблонах:** ```smarty ``` ### 3. WhatsApp Integration **Файлы:** - `/include/utils/WhatsApp.php` - Отправка сообщений - `/wappi.php` - Webhook для входящих сообщений **Основные изменения:** 1. **Отправка файлов (WhatsApp.php):** ```php // Проверка вложений $result = $adb->pquery(" SELECT a.attachmentsid, a.path, a.storedname, n.filename, n.filelocationtype, n.s3_key FROM vtiger_seattachmentsrel sar JOIN vtiger_attachments a ON sar.attachmentsid = a.attachmentsid JOIN vtiger_notes n ON a.attachmentsid = n.notesid WHERE sar.crmid = ? AND n.filestatus = 1 ", array($recordId)); ``` 2. **Входящие сообщения (wappi.php):** ```php // Приоритет контактов над организациями $result = $adb->pquery(" SELECT p.crmid, p.setype FROM vtiger_pbxmanager_phonelookup p WHERE p.phonenumber = ? ORDER BY CASE WHEN p.setype = 'Contacts' THEN 1 ELSE 2 END, p.crmid DESC LIMIT 1 ", array($phone)); // Использование caption для файлов if (isset($data['messages']['caption']) && !empty($data['messages']['caption'])) { $message = $data['messages']['caption']; } ``` ### 4. Telegram Integration **Файлы:** - `/include/utils/Telegram.php` - Отправка сообщений - `/telegram.php` - Webhook для входящих сообщений **Основные изменения:** 1. **Отправка файлов (Telegram.php):** ```php // Скачивание файла из S3 во временный файл $tempFile = tempnam(sys_get_temp_dir(), 'telegram_file_'); file_put_contents($tempFile, $fileContent); // Отправка через curl_file_create $postData['document'] = new CURLFile($tempFile, $mimeType, $filename); ``` 2. **Входящие сообщения (telegram.php):** ```php // Поиск по tgid в поле phone $result = $adb->pquery(" SELECT cd.contactid FROM vtiger_contactdetails cd WHERE cd.phone = ? AND cd.contactid IN ( SELECT crmid FROM vtiger_crmentity WHERE setype = 'Contacts' ) LIMIT 1 ", array($tgid)); ``` ### 5. Управление комментариями **Файлы:** - `/layouts/v7/modules/Vtiger/Comment.tpl` - Шаблон комментария - `/layouts/v7/modules/Vtiger/RecentComments.tpl` - Виджет комментариев - `/layouts/v7/modules/Vtiger/resources/Detail.js` - JavaScript логика - `/modules/ModComments/views/DeleteAjax.php` - Серверная обработка **Особенности:** - Кнопка удаления видна всем пользователям - Разная логика для виджета (перезагрузка) и полного списка (анимация) - Подтверждение удаления через confirm() ### 6. Управление документами **Файлы:** - `/layouts/v7/modules/Documents/DocumentsRelatedList.tpl` - Список документов - `/layouts/v7/modules/Vtiger/DocumentsSummaryWidgetContents.tpl` - Виджет документов - `/layouts/v7/modules/Documents/DetailViewActions.tpl` - Детальный просмотр - `/modules/Documents/views/DeleteAjax.php` - Серверная обработка **Кнопки:** - **Редактировать** - редактирование в CRM - **Отвязать** - отвязка от контакта - **Удалить** - полное удаление документа - **Просмотр** - предварительный просмотр - **Скачать** - скачивание файла - **Nextcloud** - редактирование в Nextcloud ## 🔐 Конфигурация ### .env файл ```bash # S3 Storage (TWC Storage) S3_ACCESS_KEY=your_access_key S3_SECRET_KEY=your_secret_key S3_ENDPOINT=https://s3.twcstorage.ru S3_BUCKET=your_bucket_name # Nextcloud NEXTCLOUD_URL=https://office.clientright.ru NEXTCLOUD_USERNAME=admin NEXTCLOUD_PASSWORD=your_password # WhatsApp API WAPPI_API_KEY=your_wappi_key WAPPI_API_URL=https://wappi.pro/api # Telegram Bot TELEGRAM_BOT_TOKEN=your_bot_token ``` ## 📝 Логирование **Файлы логов:** - `wa_outbound.log` - Исходящие WhatsApp сообщения - `wa_inbound.log` - Входящие WhatsApp сообщения - `tg_outbound.log` - Исходящие Telegram сообщения - `debug.log` - Общие отладочные сообщения - `n8n_migration_clean.log` - Логи миграции n8n ## 🚀 Развертывание ### 1. Копирование файлов ```bash # Основные файлы уже на месте cp crm_extensions/nextcloud_api.php /var/www/fastuser/data/www/crm.clientright.ru/crm_extensions/ cp layouts/v7/lib/nextcloud-editor.js /var/www/fastuser/data/www/crm.clientright.ru/layouts/v7/lib/ ``` ### 2. Настройка прав ```bash chmod 755 /var/www/fastuser/data/www/crm.clientright.ru/crm_extensions/file_storage/n8n_migration_clean.sh chmod 644 /var/www/fastuser/data/www/crm.clientright.ru/crm_extensions/.env ``` ### 3. Проверка работы 1. Откройте CRM в браузере 2. Проверьте консоль на ошибки (F12) 3. Убедитесь, что AI Drawer появляется в правом нижнем углу 4. Протестируйте кнопки документов и комментариев ## 🔧 Устранение неполадок ### AI Drawer не появляется 1. Проверьте консоль браузера на ошибки 2. Убедитесь, что пользователь авторизован 3. Проверьте загрузку файлов CSS и JS ### Nextcloud не работает 1. Проверьте доступность `nextcloud_api.php` 2. Убедитесь в правильности учетных данных в .env 3. Проверьте логи ошибок PHP ### WhatsApp/Telegram не отправляют файлы 1. Проверьте права доступа к S3 2. Убедитесь в правильности API ключей 3. Проверьте логи отправки ## 📞 Поддержка При возникновении проблем: 1. Проверьте логи в соответствующих файлах 2. Убедитесь в правильности конфигурации .env 3. Проверьте права доступа к файлам 4. Обратитесь к разработчику с описанием проблемы --- **Дата создания:** 24 сентября 2025 **Версия:** 1.0 **Статус:** Производственная среда