Интеграция мессенджера Viber Business с сайтом
Viber Business Messages позволяет отправлять транзакционные и маркетинговые сообщения через официальный API Viber. Наиболее популярен в странах СНГ и Восточной Европы. Доступен через Viber REST API или через агрегаторов (SMSC, MessageBird, Infobip).
Типы Viber-аккаунтов
Viber Bot — бесплатный, бот взаимодействует с пользователями через диалоги. Ограничен 1-on-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.ru/order/{$orderId}"
]
]
]
]);
Webhook и обработка входящих
// Регистрация webhook
Http::withHeaders(['X-Viber-Auth-Token' => $authToken])
->post('https://chatapi.viber.com/pa/set_webhook', [
'url' => 'https://yoursite.ru/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 дня для базовой интеграции с уведомлениями и входящими.







