WhatsApp — канал, который ваш пользователь открывает десятки раз в день, а GLPI по умолчанию умеет общаться только по e-mail. Модуль WhatsApp Bot от NexTool связывает GLPI с Evolution API (open source, протокол Baileys) и доставляет уведомления по заявкам прямо в WhatsApp, с очередью, повторно обрабатывающей сбои, и подключением в вашей собственной инфраструктуре. Сопровождая службы поддержки, мы убедились, что правильный канал меняет долю ответов на согласования и опросы удовлетворённости, — но у интеграции есть ловушки настройки, которые это руководство показывает изнутри.
Проблема
GLPI отправляет транзакционные письма через очередь queuednotification. Это работает, но корпоративная почта попадает в спам, конечный пользователь не живёт в веб-почте, а руководитель, которому нужно согласовать заявку, узнаёт о ней, только когда ему звонят с напоминанием. В итоге согласования зависают на часы, доля ответов на опросы удовлетворённости близка к нулю, а служба поддержки тратит время на ручные напоминания. Замена e-mail на канал, который человек действительно читает, решает большую часть этих проблем — а в Бразилии таким каналом является WhatsApp.
Коммерческий вариант (официальный WhatsApp Business API) дорог, требует одобрения шаблонов со стороны Meta и привязывает вас к внешнему договору. Для тех, кто уже управляет собственной инфраструктурой, Evolution API — self-hosted альтернатива, а WhatsApp Bot подключает её к GLPI через встроенную инфраструктуру уведомлений — без костылей в ядре.
Как работает WhatsApp Bot
Модуль регистрирует собственный режим уведомлений, переиспользуя канал SMS в GLPI (Notification_NotificationTemplate::registerMode(MODE_SMS)). Когда срабатывает событие заявки, GLPI определяет получателя, модуль находит номер, формирует сообщение и отправляет его через Evolution API — всё прозрачно для оператора.
- Собственные уведомления по событиям — при установке модуль создаёт девять отдельных уведомлений WhatsApp (новая заявка, новый комментарий, заявка решена, опрос удовлетворённости, запрос на согласование, ответ на согласование и три уведомления о пароле), у каждого свои получатели. Создание идемпотентно по имени: если вы отредактируете текст в интерфейсе GLPI, переустановка сохранит вашу правку.
- Очередь с автоматическими повторами — сообщение, не отправленное из-за нестабильного подключения, попадает в таблицу очереди и повторно обрабатывается пакетами до 50 штук каждую минуту, максимум 3 попытки, после чего помечается как
failed. Ничего не пропадает молча: причина ошибки сохраняется. - Health check каждые 5 минут — cron запрашивает реальное состояние подключения в Evolution API и обновляет статус на панели, чтобы вы узнали о падении WhatsApp раньше, чем пожалуется пользователь.
- QR-код прямо в GLPI — номер отправителя подключается сканированием QR-кода, сгенерированного на вкладке «Коннекторы», не выходя из среды.
- Self-hosted или управляемый — укажите свою Evolution API (URL + API Key) или, в лицензированной среде, используйте инстанс, управляемый NexTool.
Номер получателя берётся из поля «Мобильный телефон» пользователя GLPI (glpi_users.mobile) и автоматически нормализуется: модуль убирает маску, проверяет длину (от 10 до 15 цифр) и добавляет код страны 55, если бразильский номер указан без него. Тот, у кого мобильный не указан, просто не получает сообщение — отправка пропускается молча и не порождает ошибку.
WhatsApp Bot против встроенных уведомлений GLPI
| Возможность | Стандартный GLPI (e-mail SMTP) | WhatsApp Bot + Evolution API |
|---|---|---|
| Канал доставки | Транзакционный e-mail | WhatsApp (сообщение на телефон) |
| Доля прочтений | Низкая (спам, никто не открывает) | Высокая (повседневный канал) |
| Повторная отправка при сбое | Очередь, без настраиваемых повторов по каналу | Собственная очередь, 3 попытки, пакеты по 50/мин |
| Источник номера | E-mail пользователя | Поле «Мобильный телефон» (glpi_users.mobile), нормализованное |
| Инфраструктура | SMTP-сервер | Evolution API, self-hosted или управляемая |
| Стоимость сообщения | Ноль (собственный SMTP) | Ноль (без платного API Meta) |
Как включить
- Установите NexTool в ваш GLPI и откройте Настройки > NexTool > Модули.
- Включите модуль WhatsApp Bot и нажмите «Настроить».
- На вкладке «Коннекторы» укажите URL и API Key вашей Evolution API и сгенерируйте QR-код для подключения номера отправителя.
- В Администрирование > Пользователи заполните поле «Мобильный телефон» получателей (формат: код страны + код города + номер, например 5511999998888).
- Убедитесь, что внешний cron GLPI работает — CronTask модуля имеют режим
MODE_EXTERNALи не запускаются при веб-обращениях.
# The module's CronTasks (healthcheck 5min, queue 1min) are MODE_EXTERNAL.
# On GLPI 11 the trigger is front/cron.php (there is no glpi:cron console):
* * * * * www-data /usr/bin/php /var/www/html/front/cron.php >/dev/null 2>&1
# The Evolution API receives the send at this endpoint (the module handles it):
# POST {URL}/message/sendText/{instance}
# header: apikey: ...your_api_key...
# body: { "number": "5511999998888", "text": "..." }
Диагностика доставки прямо в базе
Когда клиент говорит, что «WhatsApp не пришёл», ответ почти всегда находится в таблице очереди. Два запроса закрывают первичный разбор:
-- Queue overview: what is stuck and how many attempts it had
SELECT status, COUNT(*) AS total, MAX(attempts) AS max_attempts
FROM glpi_plugin_nextool_whatsappbot_queue
GROUP BY status;
-- Latest failures with the reason returned by the Evolution API
SELECT id, phone_number, attempts, last_error, created_at
FROM glpi_plugin_nextool_whatsappbot_queue
WHERE status = 'failed'
ORDER BY created_at DESC
LIMIT 20;
Самая частая ошибка, которую мы видим в last_error, — не баг модуля, а номер в неверном формате или упавшее подключение инстанса. Именно для этого существует health check: если на панели статус «отключено», QR-код истёк и его нужно отсканировать заново.
Ловушка, о которой знают только те, кто эксплуатирует
Две ловушки срывают почти каждое первое внедрение. Первая: канал WhatsApp Bot работает через режим SMS в GLPI. Это значит, что для получения сообщений в уведомлении должна быть включена отправка по SMS — многие ищут на экране уведомлений режим с названием «WhatsApp» и не находят его, потому что он отображается как SMS. Вторая: GLPI добавляет к телу шаблона стандартную подпись e-mail («-- » и подвал), и в WhatsApp это превращается в визуальный шум; модуль удаляет этот блок при отправке, но если вы создаёте собственный шаблон, не вставляйте в него переменные подписи e-mail. И помните: поскольку номер берётся из glpi_users.mobile, неправильно указанный мобильный — причина № 1 жалоб «я не получил»: код страны мы нормализуем, но перепутанную цифру угадать не можем.
Кому подходит (и когда не использовать)
WhatsApp Bot раскрывается там, где конечный пользователь не следит за почтой: розница, здравоохранение, образование, сфера услуг и любая служба поддержки, работающая с внешней аудиторией. Он также отлично подходит для согласований руководителями, которые редко заходят в GLPI. Когда не использовать: если ваша служба на 100% внутренняя и специалисты постоянно работают в GLPI, колокольчик уведомлений внутри приложения решит задачу лучше и без зависимости от инстанса WhatsApp. А если политика компании запрещает WhatsApp для рабочего общения, уважайте это — правильный канал тот, которым команда может пользоваться.
Совместимость
- GLPI: 10.0+ и 11.0+
- План: FREE
- Плагин: NexTool 4.2.1+
- Требование: установленная Evolution API, доступная с сервера GLPI
Следующий шаг
WhatsApp Bot входит в состав NexTool. Нужна помощь с развёртыванием Evolution API или с выбором событий для уведомлений в WhatsApp? Свяжитесь с командой.
Проверено командой NexTool Solutions.