Настройка уведомлений о статусе заказа в Viber 1С-Битрикс

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Настройка уведомлений о статусе заказа в Viber 1С-Битрикс
Простая
~1 рабочий день
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1177
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    811
  • 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 Appointment Booking Widget for a Medical Center
    564
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    747
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    976

Настройка уведомлений о статусе заказа в 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.ru/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 часов.