Обновленные файлы: - crm_extensions/nextcloud_api.php (2 места) - modules/Documents/actions/NcPrepareEdit.php - crm_extensions/nextcloud_editor/js/nextcloud-editor.js - crm_extensions/file_storage/api/get_edit_urls.php - crm_extensions/file_storage/api/simple_edit.php - crm_extensions/README.md - NEXTCLOUD_EDIT_BUTTON_IMPLEMENTATION.md - crm_extensions/docs/NEXTCLOUD_EDITOR.md - test_syntax_check.html - crm_extensions/tests/test_edit_button.html Все ссылки теперь указывают на новый сервер office.clientright.ru Backup файлы и тестовые директории не изменены
8.5 KiB
8.5 KiB
Система уведомлений для Telegram AI бота
Дата: 16 октября 2025
Статус: ✅ Реализовано и протестировано
Описание
Интегрирована система уведомлений в endpoint telegram_ai_qa.php для сохранения AI-диалогов из Telegram. Теперь при общении клиента с AI ботом автоматически создается уведомление для ответственного по проекту.
Как это работает
1. Процесс обработки диалога
- Клиент пишет в Telegram → AI бот отвечает → бот вызывает
telegram_ai_qa.php - Система находит контакт по TGID (Telegram ID в поле phone)
- Система находит проект (активный или указанный)
- Создаются 2 комментария:
- Вопрос клиента (от имени ответственного, customer=contactid)
- Ответ AI бота (от пользователя AI Bot ID=23)
- 🆕 Создается уведомление для ответственного по проекту
2. Структура уведомления
INSERT INTO vtiger_vdnotifierpro (
userid, -- Ответственный по проекту
modulename, -- 'Project'
crmid, -- ID проекта
link, -- Ссылка на проект
title, -- "Telegram AI: [ФИО] - [вопрос]"
status -- 5 (непрочитанное)
)
3. Пример уведомления
- Текст: "Telegram AI: Дария Сатюкова - Я уже получила письмо от Гагаринского районного суда"
- Ссылка:
module=Project&view=Detail&record=379166 - Получатель: Ответственный по проекту (пользователь 8)
Технические детали
Функция createTelegramAINotification()
function createTelegramAINotification($projectId, $contactId, $contactName, $questionPreview) {
// 1. Получаем ответственного по проекту
// 2. Формируем текст уведомления (обрезаем вопрос до 80 символов)
// 3. Проверяем существующие непрочитанные уведомления от AI
// 4. Обновляем существующее или создаем новое
}
Интеграция в основной процесс
// После создания комментариев с вопросом и ответом
$contactName = $firstname . ' ' . $lastname;
$notificationId = createTelegramAINotification($projectid, $contactid, $contactName, $question);
Обработка дубликатов
- Логика: Если есть непрочитанное уведомление от AI для этого проекта → обновляется заголовок и время
- Преимущество: Не засоряет панель уведомлений множественными сообщениями от одного клиента
- Результат: Ответственный всегда видит последний вопрос клиента
Формат заголовка
// Вопрос обрезается до 80 символов для краткости
$shortQuestion = mb_strlen($questionPreview) > 80 ? mb_substr($questionPreview, 0, 80) . '...' : $questionPreview;
$notificationTitle = "Telegram AI: " . $contactName . " - " . $shortQuestion;
Результаты тестирования
✅ Тест прошел успешно
=== Тест уведомлений Telegram AI ===
Тестовые данные:
- Contact ID: 379165 (Дария Сатюкова)
- Project ID: 379166
- Вопрос: "Я уже получила письмо от Гагаринского районного суда"
✅ Создано уведомление ID: 6870
✅ Пользователь: 8 (ответственный по проекту)
✅ Модуль: Project
✅ Ссылка: module=Project&view=Detail&record=379166
✅ Заголовок: Telegram AI: Дария Сатюкова - Я уже получила письмо от Гагаринского районного суда
✅ Статус: 5 (непрочитанное)
Проверка в CRM
- Войти в CRM под ответственным за проект
- Посмотреть панель уведомлений (справа вверху)
- Увидеть уведомление: "Telegram AI: [Имя клиента] - [вопрос]"
- Кликнуть на уведомление → откроется проект с комментариями
Логирование
Все действия логируются в logs/tg_ai_qa.log:
2025-10-16 16:19:26 - Создаем уведомление для проекта 379166 о диалоге с AI ботом
2025-10-16 16:19:26 - Ответственный по проекту: пользователь 8
2025-10-16 16:19:26 - ✅ Создано новое уведомление ID: 6870 для пользователя 8
Формат запроса
Endpoint
POST https://crm.clientright.ru/telegram_ai_qa.php
Тело запроса (JSON)
{
"tgid": "663733547",
"projectid": 379166,
"question": "Я уже получила письмо от Гагаринского районного суда",
"answer": "Если вы не можете присутствовать на судебном заседании...",
"botname": "klientprav_bot"
}
Ответ (JSON)
{
"status": "success",
"contact_id": "379165",
"project_id": 379166,
"question_comment_id": 395300,
"answer_comment_id": 395301,
"notification_id": 6870,
"botname": "klientprav_bot"
}
Преимущества
- Мгновенное оповещение - ответственный сразу видит обращение клиента
- Контекст в заголовке - сразу видно имя клиента и суть вопроса
- Прямая ссылка - клик ведет сразу к проекту с комментариями
- Умная дедупликация - обновление существующих уведомлений вместо создания новых
- Интеграция с VDNotifierPro - использует существующую систему уведомлений
- Полное логирование - все действия записываются в лог
Отличия от уведомлений о письмах
| Характеристика | Письма (Documents) | Telegram AI (Project) |
|---|---|---|
| Модуль | Documents | Project |
| Триггер | Поступление судебного письма | Диалог с AI ботом |
| Ссылка на | Документ | Проект |
| Заголовок | "Письмо от [ФИО] - [тип документа]" | "Telegram AI: [ФИО] - [вопрос]" |
| Дедупликация | По documentId | По projectId + префикс "Telegram AI:" |
| Обновление | Только время | Заголовок + время |
Файлы
Измененные файлы:
- ✅
telegram_ai_qa.php- добавлена функция уведомлений
Логи:
- ✅
logs/tg_ai_qa.log- все операции
Использование
Система работает автоматически при каждом запросе к telegram_ai_qa.php. Никаких дополнительных действий не требуется.
Telegram бот должен:
- Получить вопрос от клиента
- Сгенерировать ответ через AI
- Отправить POST запрос к
telegram_ai_qa.phpс вопросом и ответом - Автоматически создастся уведомление для ответственного
Статус: ✅ Готово к использованию
Автор: AI Assistant + Фёдор
Дата: 16 октября 2025