Інтеграція месенджера WhatsApp Business з веб-сайтом
WhatsApp Business API дозволяє відправляти транзакційні сповіщення, створювати чат-боти та вести переписку з клієнтами. Доступний через офіційний Cloud API від Meta або через партнерів (BSP): Twilio, 360dialog, Infobip, WATI.
Способи підключення
Meta Cloud API (прямий) — безплатний доступ для бізнесу через Meta Business Suite. Потрібен верифікований Business Manager, номер телефону (не може використовуватися у WhatsApp одночасно з іншими методами).
BSP (Business Solution Provider) — посередник, який надає API-ключі без прямої роботи з Meta. Швидше підключитися, зручніше для невеликих проектів, але дорожче за повідомлення.
Відправка повідомлення через Cloud API
$response = Http::withToken(env('WHATSAPP_ACCESS_TOKEN'))
->post("https://graph.facebook.com/v19.0/{$phoneNumberId}/messages", [
'messaging_product' => 'whatsapp',
'to' => $phone, // міжнародний формат: 79001234567
'type' => 'template',
'template' => [
'name' => 'order_confirmation',
'language' => ['code' => 'uk'],
'components' => [
[
'type' => 'body',
'parameters' => [
['type' => 'text', 'text' => $orderId],
['type' => 'text', 'text' => $orderTotal . ' ₽']
]
]
]
]
]);
Шаблони повідомлень
Для вихідних сповіщень обов'язкове використання попередньо схвалених шаблонів. Шаблон створюється в Meta Business Manager та проходить перевірку (зазвичай 24–48 годин). Довільний текст у вихідних повідомленнях неможливо відправляти — лише в межах 24-годинного вікна сеансу.
24-годинне вікно та сеансові повідомлення
Якщо користувач написав боту першим або відповів на шаблонне повідомлення — відкривається 24-годинне вікно, в яке можна відправляти довільні повідомлення. Це використовується для підтримки та діалогів:
// Довільне повідомлення (лише в межах 24ч вікна)
Http::withToken($token)->post($url, [
'messaging_product' => 'whatsapp',
'to' => $phone,
'type' => 'text',
'text' => ['body' => "Ваше замовлення відправлено, трек-номер: {$trackNumber}"]
]);
Webhook для вхідних
// Верифікація webhook при реєстрації
if ($request->has('hub_challenge')) {
if ($request->hub_verify_token === env('WHATSAPP_VERIFY_TOKEN')) {
return response($request->hub_challenge);
}
}
// Обробка вхідних
$body = $request->json()->all();
foreach ($body['entry'] as $entry) {
foreach ($entry['changes'] as $change) {
$messages = $change['value']['messages'] ?? [];
foreach ($messages as $message) {
dispatch(new ProcessWhatsAppMessageJob($message));
}
}
}
Кнопки та інтерактивні повідомлення
// Інтерактивні кнопки
[
'type' => 'interactive',
'interactive' => [
'type' => 'button',
'body' => ['text' => 'Ваше замовлення готово до видачі. Підтвердьте отримання:'],
'action' => [
'buttons' => [
['type' => 'reply', 'reply' => ['id' => "confirm_{$orderId}", 'title' => 'Отримав ✓']],
['type' => 'reply', 'reply' => ['id' => "problem_{$orderId}", 'title' => 'Проблема']]
]
]
]
]
Тривалість інтеграції: 3–5 днів для сповіщень з шаблонами + вхідні повідомлення. Час на верифікацію шаблонів — окремо (1–3 дні).







