Files
crm.clientright.ru/TELEGRAM_AI_NOTIFICATIONS.md
Fedor 75d3f7942b feat: Обновлены все URL Nextcloud с office.klientprav.tech на office.clientright.ru
Обновленные файлы:
- 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 файлы и тестовые директории не изменены
2025-10-20 17:17:34 +03:00

8.5 KiB
Raw Blame History

Система уведомлений для 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. Структура уведомления

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

  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)

{
    "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"
}

Преимущества

  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