Увійти Реєстрація
Блог Серії
Кар'єра
Вакансії Компанії
Навчання
Документація Співбесіди Тестування Відео
Екосистема
Пакети Ресурси Проєкти Інструменти Події
Інше
Про нас Реклама
Новини 30 червня 2026

Laravel WhatsApp: Два Бекенди За Одним Фасадом

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

Два бекенди для різних завдань

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

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

Надсилання через обидва бекенди

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

WhatsApp::send('+14155550123', 'Your Laravel News digest is ready to read.');
WhatsApp::send('14155550123@c.us', 'Thanks for subscribing to the newsletter!');

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

WhatsApp::messages()->sendTemplate('+14155550123', 'issue_published', 'en_US', [
 ['type' => 'body', 'parameters' => [['type' => 'text', 'text' => 'Issue #312']]],
]);

Веб-бекенд відкриває операції, недоступні в Cloud API. Сесії мають назви, тому ви можете запускати кілька особистих акаунтів і звертатися до кожного за ім'ям:

WhatsApp::web('main')->groups()->create('Laracon Attendees', ['14155550123@c.us']);
WhatsApp::web('main')->messages()->sendImage('14155550123@c.us',
 ['url' => 'https://example.com/laracon-schedule.png', 'caption' => 'See you at the keynote!']);

Чергове надсилання та вхідні події

Вихідні повідомлення можна відправляти як Jobs через job SendMessage пакета, що переносить надсилання повідомлень із циклу запиту на ваші queue-воркери:

SendMessage::dispatch('+14155550123', 'New on Laravel News: this week in the ecosystem.');

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

use \Kstmostofa\LaravelWhatsApp\Events\Web\MessageReceived;
Event::listen(MessageReceived::class,
 function ($event) {
 Log::info('Reader replied', ['from' => $event->from(), 'body' => $event->body()]);
 }
);

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

Адмін-інтерфейс та рівень персистентності

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

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

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

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

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-credentials в оточенні:

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

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

php artisan whatsapp:sidecar:install
php artisan whatsapp:sidecar:start
php artisan whatsapp:web:listen main &

Ви можете ознайомитися з вихідним кодом, повним довідником конфігурації та списком доступних команд на GitHub.

8

Читати в документації

Коментарі

Увійдіть, щоб залишити коментар

Будьте першим, хто залишить коментар!

Читайте також

Filament v5.10.0
Новини 12 жовтня 2026

Filament v5.10.0: сітка в rich editor, скелетони таблиць і десятки виправлень

Вийшов Filament v5.10.0: елементи керування сіткою в rich editor, допоміжний контент для віджетів-графіків, скелетони завантаження таблиць, submitOnCompletion() для OneTimeCodeInput та багато виправлень авторизації, доступності й стану.

17
Laravel AI SDK на практиці
Новини 09 жовтня 2026

Laravel AI SDK на практиці: агент, що стоїть за There There

Фрік Ван дер Гертен розповідає, як у Spatie побудували AI-шар хелпдеска There There на Laravel AI SDK: клас агента, інструменти з типізованою JSON-схемою та делегування роботи звичайним domain-діям.

12

Вакансії за темою

Kredyt Kapital
17 днів тому

Middle Full-Stack Developer (PHP / Laravel / Vue / React)

Middle Full-Stack Developer для розробки внутрішніх IT-продуктів. Основний стек: PHP 8.3+, Laravel, PostgreSQL, REST API, Vue.js/React. Розробник займатиметься backend (бізнес-логіка, Eloquent, Jobs/Queues) і frontend (компоненти, інтерфейси), інтеграціями та оптимізацією. Вимоги: 2-3+ років комерційного досвіду з PHP, 2+ років практики з Laravel, впевнене знання PostgreSQL, Git, JavaScript ES6+.

Key2Law
30 днів тому

Full Stack Developer (Laravel)

Full Stack розробник на Laravel для розробки та підтримки веб-додатків. Відповідальний за реалізацію backend (REST APIs, бізнес-логіка, оптимізація БД) і frontend (Blade, Tailwind, Alpine/Livewire/Vue), тестування, деплой та моніторинг. Вимоги: PHP 8.1+, Laravel 10+, знання Eloquent, Queue, Redis, MySQL, JavaScript ES6+, PHPUnit/Pest, Docker, Git, основи AWS. Бажано досвід з Fintech, криптовалютами, high-availability системами.

Optimizee Group
33 дні тому

Product Lead (Strategy + Full Stack)

Product Lead з відповідальністю за розробку та лідерство. Гібридна роль: 60% управління продуктом (дорожна карта, пріоритизація, аналітика) та 40% full stack розробки на PHP Laravel. Потрібен досвід розробника (5+ років), знання бекенду, баз даних, здатність приймати продуктові рішення та керувати командою. Основний стек: PHP 8.2+, Laravel 12, MySQL, Redis, Alpine.js, Livewire.

Пакети за темою

Laravel Whatsapp

kstmostofa/laravel-whatsapp

Пакет Laravel з двома бекендами для WhatsApp: Meta Cloud API та вбудований whatsapp-web.js sidecar. Включає адміністративний інтерфейс на Livewire/Flux, чергові завдання, вебгуки з HMAC, моделі Eloquent, broadcasting та CLI-команди для управління життєвим циклом.

238 v1.0.3 13 5

Filament

filament/filament

Найпопулярніша адмін-панель для Laravel: ресурси, таблиці, форми та дашборди описуються PHP-класами поверх Livewire, Alpine і Tailwind. Замінює рутину CRUD-інтерфейсів декларативною конфігурацією.

31,852 v5.7.6 9