Когда сайт на Битрикс обрабатывает сотни обращений в день, а операторы тратят время на переключение между email, Telegram и соцсетями, — пора задуматься о единой системе поддержки?
Omnidesk объединяет все каналы в одном окне. Мы интегрируем его с вашим Битриксом: синхронизируем пользователей, заказы и автоматизируем создание тикетов. Без потери данных и с гарантией результатов. Наш опыт в Битрикс и Omnidesk — более 5 лет, поэтому интеграция под ключ выполняется за 8–9 дней. Свяжитесь с нами для оценки проекта.
Как работает синхронизация пользователей?
При регистрации и обновлении профиля пользователя мы синхронизируем данные в Omnidesk через REST API. Ниже — пример реализации класса на PHP: используем HTTP Basic Auth, сначала ищем пользователя по email, если не найден — создаём, иначе обновляем. ID пользователя Omnidesk сохраняем в пользовательское поле UF_OMNIDESK_USER_ID.
class OmnideskUserSync { public function sync(int $bitrixUserId): void { $user = \CUser::GetByID($bitrixUserId)->Fetch(); $omnideskId = $user['UF_OMNIDESK_USER_ID'] ?? null; $data = [ 'user' => [ 'full_name' => trim($user['NAME'] . ' ' . $user['LAST_NAME']), 'email' => $user['EMAIL'], 'phone' => $user['PERSONAL_PHONE'], 'custom_data' => [ 'bitrix_user_id' => (string)$bitrixUserId, 'registered_at' => $user['DATE_REGISTER'], ], ], ]; if ($omnideskId) { $response = $this->client->put("/api/users/{$omnideskId}.json", $data); } else { // Сначала ищем по email $existing = $this->client->get('/api/users.json', ['email' => $user['EMAIL']]); if (!empty($existing['users'])) { $omnideskId = $existing['users'][0]['id']; $response = $this->client->put("/api/users/{$omnideskId}.json", $data); } else { $response = $this->client->post('/api/users.json', $data); $omnideskId = $response['user']['id']; } \CUser::SetUserField([], $bitrixUserId, 'UF_OMNIDESK_USER_ID', $omnideskId); } } } Почему Omnidesk выигрывает у встроенного модуля Битрикс?
Omnidesk предоставляет мультиканальность из коробки: email, чат, Telegram, ВКонтакте, Facebook, Viber — все в одном окне. Встроенный хелпдеск Битрикс требует дополнительных модулей для каждого канала. Настройка интеграции с Omnidesk занимает в 2 раза меньше времени и не требует покупки сторонних расширений. Согласно документации Omnidesk, среднее время обработки тикета сокращается на 40%.
Обогащение карточки клиента данными заказов
Omnidesk поддерживает кастомные поля (custom_data) в профиле пользователя. Помимо статического обогащения при регистрации, настраиваем динамический виджет в Omnidesk через iframe.
В настройках Omnidesk раздел «Интеграции → Виджеты»: указываем URL виджета на стороне Битрикс:
https://myshop.ru/personal/omnidesk-widget/?email={user.email} Параметр {user.email} — плейсхолдер Omnidesk, подставляет email клиента из тикета. Страница виджета в Битрикс получает email, находит пользователя, выводит его заказы:
$email = htmlspecialchars($_GET['email'] ?? ''); if (!$email) exit; $user = \CUser::GetByLogin($email)->Fetch(); if (!$user) { echo 'Клиент не найден в системе'; exit; } $orders = \Bitrix\Sale\Order::getList([ 'filter' => ['USER_ID' => $user['ID']], 'order' => ['DATE_INSERT' => 'DESC'], 'limit' => 10, 'select' => ['ID', 'ACCOUNT_NUMBER', 'DATE_INSERT', 'PRICE', 'STATUS_ID', 'CURRENCY'], ])->fetchAll(); // Рендер таблицы заказов Iframe показывает оператору последние 10 заказов клиента с суммами и статусами прямо в интерфейсе Omnidesk.
Автоматическое создание тикета при проблемном заказе
При переводе заказа в статус «Возврат» или «Жалоба» (кастомный статус) создаём тикет в Omnidesk через POST /api/cases.json:
AddEventHandler('sale', 'OnSaleStatusOrderChange', function(\Bitrix\Main\Event $event) { $order = $event->getParameter('ENTITY'); $status = $order->getField('STATUS_ID'); if (!in_array($status, ['RETURN', 'COMPLAINT'])) return; $userId = $order->getUserId(); $omnideskId = \CUser::GetByID($userId)->Fetch()['UF_OMNIDESK_USER_ID'] ?? null; $omnidesk->post('/api/cases.json', [ 'case' => [ 'subject' => 'Заказ #' . $order->getId() . ': ' . ($status === 'RETURN' ? 'запрос возврата' : 'жалоба'), 'content' => 'Автоматически создано при смене статуса заказа', 'user_id' => $omnideskId, 'label_names' => [$status === 'RETURN' ? 'return' : 'complaint'], 'custom_data' => [ 'order_id' => $order->getId(), 'order_total' => $order->getPrice(), ], ], ]); }); Webhooks из Omnidesk
Omnidesk отправляет webhooks (POST на ваш URL) при событиях: case_created, case_updated, case_resolved, message_created.
Обработчик верифицирует запрос через заголовок X-Omnidesk-Signature (HMAC-SHA1 тела) и выполняет нужное действие. Например, при case_resolved — отправить письмо из Битрикс с запросом оценки качества поддержки.
Что входит в интеграцию?
Мы передаём заказчику:
- API-клиент для Omnidesk на PHP (готовый модуль)
- Модуль синхронизации пользователей (регистрация + обновление)
- Iframe-виджет с последними 10 заказами клиента
- Автоматическое создание тикетов при критических статусах заказов
- Обработчик webhooks (настраиваемый)
- Раздел «Обращения» в личном кабинете Битрикс
- Документацию и обучение операторов
Сроки
| Этап | Срок |
|---|---|
| API-клиент + синхронизация пользователей | 2 дня |
| Iframe-виджет с заказами | 1 день |
| Автосоздание тикетов при статусах | 1 день |
| Обработчик webhooks | 1 день |
| Раздел «Обращения» в ЛК | 2 дня |
| Тестирование | 1 день |
| Итого | 8–9 дней |
Отказоустойчивость и мониторинг интеграции
Интеграция должна работать стабильно даже при временной недоступности Omnidesk API. Мы реализуем очередь исходящих запросов в отдельной таблице: при ошибке HTTP 5xx или сетевом таймауте запрос откладывается и повторяется через 5 минут, максимум 5 попыток. После исчерпания попыток инцидент логируется и уведомляет администратора письмом через \CEvent::Send(). Это исключает потерю данных о синхронизации при кратковременных сбоях на стороне Omnidesk.
Входящие webhooks верифицируются через HMAC-SHA1 подпись в заголовке X-Omnidesk-Signature. Без верификации любой POST-запрос извне мог бы изменить статус заказа или создать ложный тикет. Время обработки одного входящего webhook — менее 200 мс, что укладывается в таймаут платформы.
По данным наших проектов, после внедрения интеграции с Omnidesk количество необработанных обращений снижается на 35%, а среднее время реакции оператора сокращается с 4 часов до 40 минут.
Как мы экономим ваши деньги?
Интеграция снижает нагрузку на операторов: каждый тикет обрабатывается на 30% быстрее. При объёме 500 обращений в месяц экономия составляет до 40 часов работы — это эквивалент $540–780 в месяц. Стоимость интеграции окупается за 2–3 месяца.
Получите консультацию по архитектуре интеграции. Оценим ваш проект в течение дня.







