Laravel WhatsApp: два бекенди за єдиним Facade

Перекладено ШІ 0 Laravel News 30 червня, 2026

Пакет laravel-whatsapp пропонує універсальний спосіб інтеграції месенджера через офіційний Cloud API або веб-сайдкар для особистих профілів. Використовуйте єдиний WhatsApp:: facade для автоматизації розсилок, керування групами та швидкої обробки вхідних повідомлень.

Laravel WhatsApp — це пакет від Md Mostafijur Rahman для надсилання та отримання повідомлень WhatsApp безпосередньо з вашого Laravel-застосунку. Його головна особливість у тому, що він взаємодіє з месенджером двома шляхами: через офіційний Cloud API від Meta для бізнес-акаунтів та через неофіційний sidecar на базі Node.js — whatsapp-web.js. Останній використовує headless Chromium для роботи через протокол WebSocket, за яким працює вебверсія WhatsApp для особистих акаунтів. Обидва рішення доступні через єдиний фасад WhatsApp::, тож коду застосунку не потрібно знати, який саме бекенд обробляє повідомлення. Пакет підтримує Laravel 11, 12 та 13 на PHP 8.2 або вище.

Наявність двох бекендів зумовлена їхніми різними перевагами, і пакет чесно окреслює компроміси. Cloud API — це офіційний шлях для роботи з шаблонними бізнес-повідомленнями, проте він обмежує вільні відповіді 24-годинним вікном і не підтримує групи. Web sidecar не має таких обмежень: він дозволяє створювати групи, публікувати статуси та підключатися через QR-код, проте працює через особистий акаунт без офіційної підтримки.

Можливість Cloud API Web Sidecar
Підключення через QR Ні Так
Групи Ні Так
Повідомлення у довільній формі 24-годинне вікно Так
Бізнес-шаблони Так Ні
Офіційна підтримка Так Неофіційно

# Надсилання через будь-який бекенд

Найпростіший виклик відправляє звичайний текст. Куди піде повідомлення, залежить від формату отримувача: номер телефону в E.164 обробляється через Cloud API, тоді як ідентифікатор @c.us спрямовує його у вебсесію.

WhatsApp::send('+14155550123', 'Ваш дайджест Laravel News готовий до читання.');
WhatsApp::send('14155550123@c.us', 'Дякуємо за підписку!');

Для бізнес-комунікацій можна використовувати підтримку шаблонів Cloud API, передаючи назву шаблону, локаль та параметри:

WhatsApp::messages()->sendTemplate('+14155550123', 'issue_published', 'en_US', [
    ['type' => 'body', 'parameters' => [['type' => 'text', 'text' => 'Випуск #312']]],
]);

Веббекенд відкриває можливості, недоступні для Cloud API. Оскільки сесії мають назви, можна керувати кількома особистими акаунтами одночасно:

WhatsApp::web('main')->groups()->create('Учасники Laracon', ['14155550123@c.us']);
WhatsApp::web('main')->messages()->sendImage('14155550123@c.us',
    ['url' => 'https://example.com/laracon-schedule.png', 'caption' => 'До зустрічі на кейноті!']);

# Черги та вхідні події

Вихідні повідомлення можна надсилати як завдання через вбудований Job SendMessage. Це дозволяє винести процес відправки за межі життєвого циклу запиту на ваші queue workers:

SendMessage::dispatch('+14155550123', 'Нове на Laravel News: огляд екосистеми за тиждень.');

Вхідні повідомлення із sidecar інтегровані в систему подій Laravel. Фоновий процес whatsapp:web:listen відстежує стан Node-сервісу та ініціює події на кшталт MessageReceived, на які можна підписатися як на будь-яку іншу подію:

use \Kstmostofa\LaravelWhatsApp\Events\Web\MessageReceived;
 
Event::listen(MessageReceived::class,
    function ($event) {
        Log::info('Читач відповів', ['from' => $event->from(), 'body' => $event->body()]);
    }
);

Cloud API обробляє вхідний трафік через webhooks із верифікацією підпису HMAC за допомогою секретного ключа вашого застосунку Meta.

# Адмін-панель та збереження даних

Якщо встановити опціональні залежності Livewire та Flux, пакет надасть готовий інтерфейс за адресою /whatsapp. Він містить дашборд, екран повідомлень, перегляд чатів, а також сторінки для груп, контактів та логів webhook. З додаванням Laravel Reverb чати оновлюються в режимі реального часу.

Laravel WhatsApp Admin UI Overview
Огляд адмін-панелі Laravel WhatsApp
Laravel WhatsApp Admin UI Compose Message screen
Екран створення повідомлення в Laravel WhatsApp Admin UI

Для збереження даних передбачені три моделі Eloquent: WaSession, WaMessage та WaContact. Їх можна підключити до окремої бази даних, щоб не навантажувати основну схему. Пакет також бере на себе моніторинг стану сесій та кешування медіафайлів і аватарів.

# Початок роботи

Встановіть пакет та опублікуйте його конфігурацію та міграції:

composer require kstmostofa/laravel-whatsapp
php artisan vendor:publish --tag=laravel-whatsapp-config
php artisan vendor:publish --tag=laravel-whatsapp-migrations
php artisan migrate

Для використання Cloud API додайте ваші облікові дані Meta у файл оточення:

WHATSAPP_ACCESS_TOKEN=EAAG...
WHATSAPP_PHONE_NUMBER_ID=123456789012345
WHATSAPP_BUSINESS_ACCOUNT_ID=987654321098765
WHATSAPP_APP_SECRET=your-meta-app-secret
WHATSAPP_VERIFY_TOKEN=any-string-you-make-up

Web sidecar встановлюється та запускається artisan-командами, після чого процес-слухач транслює події в Laravel:

Вихідний код, повний гайд із налаштування та список команд доступні на GitHub.

Популярні

Інше, що варто прочитати

14 Оновлено 26 червня, 2026

Як задокументувати кілька API в Laravel за допомогою Scramble

Ви знали, що в одному додатку Laravel можна реалізувати кілька API? У нашій статті ви дізнаєтеся, як за допомогою Scramble легко документувати різні версії API та налаштувати доступ до документації, щоб зробити її публічною або приватною. Читайте далі, щоб дізнатися більше

11 Оновлено 26 червня, 2026

Laravel: шлях до створення справді дієздатних AI-агентів

Чи готові ви підвищити ефективність своїх проектів на Laravel і спростити інтеграцію штучного інтелекту? У нашій статті ви дізнаєтеся, як Vizra ADK може революціонізувати ваш підхід до розробки, розширюючи можливості, забезпечуючи тестування та надійність для ваших AI-агентів

12 Оновлено 26 червня, 2026

Управління доступом у Filament за допомогою плагіна Shield

Дізнайтеся, як пакет Filament Shield забезпечує управління доступом до ваших панелей, ресурсів і віджетів у Laravel. Ця стаття розкриває основні можливості пакету, включаючи просту установку та підтримку багатокористувацьких середовищ — не пропустіть!