Інтеграція месенджера Viber Business з веб-сайтом
Viber Business Messages дозволяє відправляти транзакційні та маркетингові повідомлення через офіційний API Viber. Найбільш популярний у країнах СНД та Східної Європи. Доступний через Viber REST API або через агрегаторів (SMSC, MessageBird, Infobip).
Типи облікових записів Viber
Viber Bot — безплатний, бот взаємодіє з користувачами через діалоги. Обмежений 1-на-1 чатами.
Viber Business Account — платний, дозволяє відправляти повідомлення користувачам, які раніше не почали діалог з ботом. Потрібна верифікація бізнесу.
Відправка через Viber REST API
$authToken = env('VIBER_BOT_TOKEN');
// Відправка текстового повідомлення
$response = Http::withHeaders([
'X-Viber-Auth-Token' => $authToken
])->post('https://chatapi.viber.com/pa/send_message', [
'receiver' => $viberUserId, // унікальний Viber ID користувача
'type' => 'text',
'text' => "Ваше замовлення #{$orderId} передано в доставку.",
'sender' => ['name' => 'Мій Магазин']
]);
Повідомлення з кнопкою
Http::withHeaders(['X-Viber-Auth-Token' => $authToken])
->post('https://chatapi.viber.com/pa/send_message', [
'receiver' => $viberUserId,
'type' => 'rich_media',
'rich_media' => [
'Type' => 'rich_media',
'ButtonsGroupRows' => 2,
'Buttons' => [
[
'Columns' => 6,
'Rows' => 1,
'Text' => 'Відстежити замовлення',
'ActionType' => 'open-url',
'ActionBody' => "https://track.example.ua/order/{$orderId}"
]
]
]
]);
Webhook та обробка вхідних
// Реєстрація webhook
Http::withHeaders(['X-Viber-Auth-Token' => $authToken])
->post('https://chatapi.viber.com/pa/set_webhook', [
'url' => 'https://yoursite.ua/webhooks/viber',
'event_types' => ['delivered', 'seen', 'failed', 'subscribed', 'unsubscribed', 'conversation_started', 'message']
]);
// Обробник
Route::post('/webhooks/viber', function (Request $request) {
$event = $request->json()->all();
$type = $event['event'];
if ($type === 'message') {
$userId = $event['sender']['id'];
$text = $event['message']['text'];
dispatch(new ProcessViberMessageJob($userId, $text));
}
if ($type === 'subscribed') {
// Користувач підписався на бота
ViberUser::updateOrCreate(['viber_id' => $event['user']['id']], [...]);
}
return response()->json(['status' => 0]); // 0 = OK для Viber
});
Отримання Viber ID користувача
Viber ID користувача приходить у подіях conversation_started (перший діалог) або subscribed. Потрібно зберегти зв'язок user_id → viber_id у БД.
Відправка через агрегаторів (SMSC)
Для відправлення Viber-повідомлень без власного бота можна використовувати SMSC.ru — він підтримує Viber Business Messages через єдиний API.
Тривалість інтеграції: 2–3 дні для базової інтеграції з сповіщеннями та вхідними.







