Налаштування повідомлень про статус замовлення у Viber 1С-Бітрікс

Наша компанія займається розробкою, підтримкою та обслуговуванням рішень на Бітрікс та Бітрікс24 будь-якої складності. Від простих односторінкових сайтів до складних інтернет-магазинів, CRM систем з інтеграцією 1С та телефонії. Досвід розробників підтверджено сертифікатами від вендора.
Пропоновані послуги
Показано 1 з 1 послугУсі 1626 послуг
Налаштування повідомлень про статус замовлення у Viber 1С-Бітрікс
Проста
~1 робочий день
Часті питання
Наші компетенції:
Етапи розробки
Останні роботи
  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Розробка на базі Бітрікс, Бітрікс24, 1С для компанії Development of an Online
    585
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    751
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    657
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    989

Налаштування сповіщень про статус замовлення у Viber 1С-Бітрікс

Viber надає публічний Bot API, схожий за структурою на Telegram. На відміну від WhatsApp, для відправки сповіщень через Viber не потрібна верифікація бізнесу через Meta — достатньо створити бота через Viber Admin Panel. Обмеження: користувач повинен підписатися на бота або сам написати йому першим, перш ніж бот зможе надсилати повідомлення.

Створення Viber-бота

  1. Реєструємо акаунт на developers.viber.com
  2. Створюємо бота в my.viber.com/~admin/bot/new
  3. Отримуємо auth token вигляду 47b...==
  4. Встановлюємо webhook: POST https://chatapi.viber.com/pa/set_webhook
// Реєстрація webhook
$ch = curl_init('https://chatapi.viber.com/pa/set_webhook');
curl_setopt_array($ch, [
    CURLOPT_POST           => true,
    CURLOPT_POSTFIELDS     => json_encode([
        'url'           => 'https://your-site.com/viber/webhook/',
        'event_types'   => ['subscribed', 'unsubscribed', 'message'],
        'send_name'     => true,
    ]),
    CURLOPT_HTTPHEADER     => [
        'X-Viber-Auth-Token: ' . VIBER_BOT_TOKEN,
        'Content-Type: application/json',
    ],
    CURLOPT_RETURNTRANSFER => true,
]);
curl_exec($ch);
curl_close($ch);

Збереження Viber user_id

При підписці користувача на бота Viber надсилає webhook з подією subscribed. У цей момент пов'язуємо Viber user_id з користувачем Бітрікс:

// Обробник webhook Viber
$update = json_decode(file_get_contents('php://input'), true);
$eventType = $update['event'] ?? '';

if ($eventType === 'subscribed') {
    $viberUserId = $update['user']['id'];
    $context = $update['user']['context'] ?? '';  // передаємо uid= у deep link

    if (preg_match('/uid=(\d+)/', $context, $m)) {
        $bitrixUserId = (int)$m[1];
        \Bitrix\Main\UserTable::update($bitrixUserId, [
            'UF_VIBER_USER_ID' => $viberUserId,
        ]);
    }
}

Deep link для підписки формується в особистому кабінеті:

$deepLink = 'viber://pa?chatURI=' . VIBER_BOT_URI . '&context=uid=' . $USER->GetID();

Відправка сповіщень при зміні статусу

\Bitrix\Main\EventManager::getInstance()->addEventHandler(
    'sale',
    'OnSaleOrderStatusChange',
    function (\Bitrix\Main\Event $event) {
        $order = $event->getParameter('ENTITY');
        $statusId = $order->getField('STATUS_ID');
        $userId = $order->getUserId();

        $user = \Bitrix\Main\UserTable::getById($userId)->fetch();
        $viberUserId = $user['UF_VIBER_USER_ID'] ?? null;
        if (!$viberUserId) {
            return;
        }

        $texts = [
            'N' => 'Замовлення #%d оформлено та очікує на опрацювання.',
            'P' => 'Замовлення #%d передано у доставку.',
            'F' => 'Замовлення #%d виконано. Дякуємо за покупку!',
            'X' => 'Замовлення #%d скасовано.',
        ];

        if (!isset($texts[$statusId])) {
            return;
        }

        $message = sprintf($texts[$statusId], $order->getId());

        // Відправка через Viber API
        $payload = [
            'receiver' => $viberUserId,
            'type'     => 'text',
            'text'     => $message,
            'sender'   => ['name' => 'MyShop'],
        ];

        $ch = curl_init('https://chatapi.viber.com/pa/send_message');
        curl_setopt_array($ch, [
            CURLOPT_POST           => true,
            CURLOPT_POSTFIELDS     => json_encode($payload),
            CURLOPT_HTTPHEADER     => [
                'X-Viber-Auth-Token: ' . VIBER_BOT_TOKEN,
                'Content-Type: application/json',
            ],
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_TIMEOUT        => 5,
        ]);
        $response = json_decode(curl_exec($ch), true);
        curl_close($ch);

        // status_message = 'ok' при успіху
    }
);

Обмеження Viber Bot API

  • Не можна написати користувачу першим, якщо він жодного разу не взаємодіяв з ботом
  • Безкоштовний тариф: без обмежень на кількість повідомлень для зареєстрованих ботів
  • Viber недоступний у деяких країнах (Китай, ряд країн СНД)
  • Повідомлення від бота, якому користувач не писав більше 1 року, можуть не доставлятися

Терміни налаштування

Створення бота, webhook, поле користувача UF_VIBER_USER_ID, сторінка підписки в особистому кабінеті, обробник подій — 4–8 годин.