---
title: "Laravel WhatsApp: Два Бекенди За Одним Фасадом"
url: https://laravelukraine.com/blog/laravel-whatsapp-dva-bekendi-za-odnim-fasadom
date: 2026-06-30
source: https://laravel-news.com/laravel-whatsapp-two-backends-behind-one-facade?utm_medium=feed&utm_source=feedpress.me&utm_campaign=Feed%3A+laravelnews
---

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

[Laravel WhatsApp](https://github.com/kstmostofa/laravel-whatsapp) - це пакет від [Md Mostafijur Rahman](https://github.com/kstmostofa) для надсилання та отримання WhatsApp-повідомлень із Laravel-застосунків. Його особливість полягає у підтримці двох способів комунікації з WhatsApp: через офіційний Cloud API Meta для бізнес-повідомлень та через неофіційний Node-сервіс [`whatsapp-web.js`](https://github.com/pedroslopez/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` спрямовується до веб-сесії.

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

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

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

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

```php
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-воркери:

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

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

```php
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-дані осторонь від основної схеми. Пакет також обробляє фонове мостування подій, моніторинг стану сесій та кешування аватарів і медіа.

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

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

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

```env
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:

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

Ви можете ознайомитися з вихідним кодом, повним довідником конфігурації та списком доступних команд на [GitHub](https://github.com/kstmostofa/laravel-whatsapp).
