Личный WhatsApp
Личный WhatsApp добавляет личные диалоги в общую очередь EasyChat. Операторы видят отдельный фильтр и знак канала, отвечают из браузера или Android и могут получить отметку прочтения, когда WhatsApp передал точное подтверждение. Знак взят из официального набора WhatsApp Brand Assets. В фильтрах он выглядит нейтрально рядом с остальными каналами и становится зелёным только при выборе, наведении или фокусе с клавиатуры.
Что Нужно Серверу
- PHP CLI 7.4 или новее;
- расширения CLI
curl,pdo_mysqlиzlib; - системные
timeoutиnohup; - отдельная cron-задача раз в минуту;
- закрытая папка для сессии вне публичной папки сайта.
- исходящие TLS-соединения к
web.whatsapp.com:443напрямую или через выбранный для WhatsApp HTTP proxy.
EasyChat проверяет эти требования перед входом и не показывает
неподтверждённую команду. Пересекающиеся запуски безопасно обрабатываются
внутренними блокировками. Блокировка протокольной сессии использует MySQL,
поэтому cron-команде не нужна системная утилита flock. Для приватных файлов
по-прежнему обязательны безопасные права и подтверждённый владелец.
Ключи и состояние протокола шифруются на сервере;
QR-код хранится короткое время и относится только к текущей попытке. Пока
администратор сканирует код, контрольные проверки worker не прерывают активное
соединение WhatsApp. Если телефон уже показывает связанное устройство, EasyChat
продолжит эту же попытку после обрыва фонового процесса и не попросит сканировать новый QR.
При каждом следующем подключении EasyChat сам активирует связанное устройство,
чтобы WhatsApp передал накопленные и новые сообщения; повторный QR для этого не нужен.
Подключение
- Откройте Интеграции → Личный WhatsApp. В верхней компактной карточке всегда видно, что настраивается именно личная учётная запись; основное внимание остаётся на текущем шаге подключения.
- Скопируйте команду с чёрного терминального блока.
- Создайте в панели хостинга отдельную задачу с расписанием
* * * * *. - Нажмите Проверить. Три последовательных минутных запуска подтвердят расписание; один ручной запуск не считается настройкой cron.
- Нажмите Показать QR.
- На телефоне откройте WhatsApp → Связанные устройства → Привязка устройства и отсканируйте код.
Это вторая фоновая задача: она нужна вместе с основным cron EasyChat, а не вместо него. Если задача запускается раз в несколько минут или перестала работать, вкладка покажет одно короткое предупреждение. При исправной работе постоянных зелёных уведомлений нет. Открытая вкладка сама уберёт предупреждение, когда минутные запуски снова подтверждены.
Что Загружается
При первом подключении WhatsApp может передать недавнюю историю. EasyChat принимает только последние 30 дней, обрабатывает её постепенно и не создаёт уведомления о старых сообщениях. Повторные события дедуплицируются.
Поддерживаются личные и групповые диалоги, текст, изображения, видео, аудио и проверенные документы. Возможность отдельных типов зависит от того, что передал WhatsApp. Ответы оператора отправляются текстом и поддерживаемыми вложениями.
Если WhatsApp временно не отдаёт конкретное вложение, EasyChat сохраняет доступный текст и продолжает принимать следующие обращения. Один файл не останавливает очередь диалогов.
Имена, Аватары, Телефон И Прочтение
Имя и аватар могут уточниться после позднего события профиля или синхронизации истории. EasyChat обновит уже созданную карточку, не создавая второй диалог.
Номер телефона записывается как подтверждённый только тогда, когда протокол передал доказанную пару внутренних идентификаторов PN/LID. Один похожий на телефон идентификатор не считается доказательством. Если история содержит противоречивые пары, EasyChat пропустит только такое подтверждение, но продолжит загружать сами диалоги и сообщения.
Две галочки появляются у исходящего сообщения только в личном диалоге и только
после точного события read или played. В группах отметка скрыта: групповое
событие не доказывает просмотр конкретным клиентом. Открытый диалог получает
это обновление автоматически, без ручного обновления страницы. Отдельный
минутный worker держит соединение достаточно долго, чтобы принять позднее
подтверждение после сетевого handshake.
ИИ И Безопасная Эксплуатация
AI-подсказки оператору доступны. Автоматическая отправка ответа ИИ в предварительный личный WhatsApp выключена, чтобы фоновая автоматика не повышала риск для аккаунта.
История прежней учётной записи остаётся читаемой после повторного подключения, но EasyChat не даст случайно ответить в неё из другого WhatsApp-аккаунта. Отозвать связанное устройство можно на телефоне в любой момент; после этого EasyChat попросит войти снова.
Проверка
- Отдельный cron подтверждён как ежеминутный.
- WhatsApp показывает EasyChat среди связанных устройств.
- Новое личное сообщение появилось без ручного обновления страницы.
- Ответ из web и Android получен на телефоне.
- После просмотра ответа появилась отметка прочтения.
- Групповой receipt не показан как точное прочтение клиентом.
Если прямое подключение к WhatsApp заблокировано хостингом, откройте Настройки → Proxy, укажите доверенный HTTP proxy и включите только маршрут WhatsApp. EasyChat использует этот маршрут и для проверки доступности, и для защищённого WebSocket-соединения. Для новой попытки EasyChat ограничивает время фонового процесса и отделяет её от старого worker. Если вкладка просит повторный вход, сначала проверьте список связанных устройств на телефоне, затем создайте новый QR.
При ошибке после сканирования поддержка может проверить закрытый журнал QR-процесса на сервере. Он фиксирует этап, длительность, код отключения WhatsApp и место программной ошибки; для ошибок базы данных — SQLSTATE и числовой код. QR-коды, ключи сессии и переписка в эти записи не попадают. Сообщите поддержке время попытки и часовой пояс. Журналы автоматически очищаются при запуске новых попыток: сохраняется не более 12 файлов за сутки.
На некоторых хостингах идентификатор пользователя PHP отличается от владельца создаваемых им файлов. EasyChat проверяет владельца с помощью пустого временного файла в том же закрытом каталоге. Менять права вручную или переносить хранилище в публичную папку не требуется. Если хостинг запрещает создание, проверку или удаление такого файла, подключение останавливается; поддержке понадобится журнал попытки.
Если хостинг быстро закрывает простаивающие соединения с MySQL, EasyChat поддерживает соединение фонового обработчика и проверяет, что блокировка сессии остаётся у него. Глобальные настройки базы данных не меняются. При обрыве следующий запуск cron повторяет обработку; повторно сканировать QR только из-за такого обрыва не требуется.
Первичная синхронизация большой адресной книги обрабатывается пакетами в пределах фиксированного времени. EasyChat может разобрать до 1000 событий за цикл, чтобы новые сообщения меньше ждали контакты и историю.