Интеграция мессенджера 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' => 'ru'],
'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 дня).







