2025-10-16 16:20:54 +03:00
# Система уведомлений для Telegram AI бота
**Дата:** 16 октября 2025
**Статус:** ✅ Реализовано и протестировано
## Описание
Интегрирована система уведомлений в endpoint `telegram_ai_qa.php` для сохранения AI-диалогов из Telegram. Теперь при общении клиента с AI ботом автоматически создается уведомление для ответственного по проекту.
## Как это работает
### 1. Процесс обработки диалога
1. **Клиент пишет в Telegram** → AI бот отвечает → бот вызывает `telegram_ai_qa.php`
2. **Система находит контакт** по TGID (Telegram ID в поле phone)
3. **Система находит проект** (активный или указанный)
4. **Создаются 2 комментария:**
- Вопрос клиента (от имени ответственного, customer=contactid)
- Ответ AI бота (от пользователя AI Bot ID=23)
5. ** 🆕 Создается уведомление** для ответственного по проекту
### 2. Структура уведомления
```sql
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()`
```php
function createTelegramAINotification($projectId, $contactId, $contactName, $questionPreview) {
// 1. Получаем ответственного по проекту
// 2. Формируем текст уведомления (обрезаем вопрос до 80 символов)
// 3. Проверяем существующие непрочитанные уведомления от AI
// 4. Обновляем существующее или создаем новое
}
```
### Интеграция в основной процесс
```php
// После создания комментариев с вопросом и ответом
$contactName = $firstname . ' ' . $lastname;
$notificationId = createTelegramAINotification($projectid, $contactid, $contactName, $question);
```
### Обработка дубликатов
- **Логика:** Если есть непрочитанное уведомление от AI для этого проекта → обновляется заголовок и время
- **Преимущество:** Н е засоряет панель уведомлений множественными сообщениями от одного клиента
- **Результат:** Ответственный всегда видит последний вопрос клиента
### Формат заголовка
```php
// Вопрос обрезается до 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
1. **Войти в CRM** под ответственным за проект
2. **Посмотреть панель уведомлений** (справа вверху)
3. **Увидеть уведомление:** "Telegram AI: [Имя клиента] - [вопрос]"
4. **Кликнуть на уведомление** → откроется проект с комментариями
## Логирование
В с е действия логируются в `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)
```json
{
"tgid": "663733547",
"projectid": 379166,
"question": "Я уже получила письмо от Гагаринского районного суда",
"answer": "Если вы не можете присутствовать на судебном заседании...",
"botname": "klientprav_bot"
}
```
### Ответ (JSON)
```json
{
"status": "success",
"contact_id": "379165",
"project_id": 379166,
"question_comment_id": 395300,
"answer_comment_id": 395301,
"notification_id": 6870,
"botname": "klientprav_bot"
}
```
## Преимущества
1. **Мгновенное оповещение** - ответственный сразу видит обращение клиента
2. **Контекст в заголовке** - сразу видно имя клиента и суть вопроса
3. **Прямая ссылка** - клик ведет сразу к проекту с комментариями
4. **Умная дедупликация** - обновление существующих уведомлений вместо создания новых
5. **Интеграция с VDNotifierPro** - использует существующую систему уведомлений
6. **Полное логирование** - все действия записываются в лог
## Отличия от уведомлений о письмах
| Характеристика | Письма (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 бот должен:
1. Получить вопрос от клиента
2. Сгенерировать ответ через AI
3. Отправить POST запрос к `telegram_ai_qa.php` с вопросом и ответом
4. **Автоматически создастся уведомление** для ответственного
---
**Статус:** ✅ Готово к использованию
**Автор:** AI Assistant + Фёдор
**Дата:** 16 октября 2025
2025-10-20 17:17:34 +03:00