Интеграции
Дворум работает рядом с системами, которые у объекта уже есть: бухгалтерией, шлагбаумом, СКУД, мессенджером и CRM. Ниже — какой процесс чем закрыт и как это подключается.
Какой процесс чем закрыт
Бухгалтерия управляющей
Обмен с 1С
Показания счётчиков выгружаются в 1С, начисления и оплаты приходят из 1С. Для этого есть готовая обработка: бухгалтер вставляет токен и нажимает «Обменяться».
Въезд без охранника
Access API шлагбаума
Контроллер шлагбаума спрашивает, пускать ли машину, по госномеру или QR-коду пропуска. Проезд записывается в журнал, автору пропуска приходит уведомление.
Проходы по картам
СКУД (PERCo-Web)
Карты сотрудников арендаторов и посетители на день уходят в систему контроля доступа, события проходов возвращаются в журнал посетителей. Сейчас поддержана PERCo-Web.
Уведомления и быстрые действия
Telegram-бот
Уведомления о заявках, счетах и гостях, а в самом боте — пропуск, заявка, счета, показания и голосование в опросах.
CRM, таблицы, свои сценарии
Вебхуки
События объекта уходят на ваш адрес: новая заявка, смена её статуса, оплата, пропуск, въезд и выезд арендатора. Так они попадают в Битрикс24, amoCRM и любую систему, которая принимает HTTP-запросы.
Шлагбаум, турникеты и считыватели остаются оборудованием объекта: мы отвечаем контроллеру, а не заменяем его.
Обмен с 1С: готовая обработка
Программист 1С не нужен. Обработку «Дворум: обмен с 1С» присылает техническая поддержка, подключает её бухгалтер.
- Модератор выпускает токен в настройках объекта: «Оплата» → «Интеграция с 1С».
- Бухгалтер открывает обработку в 1С, вставляет токен и выбирает месяц.
- Нажимает «Обменяться»: показания приходят таблицей, начисления и оплаты уходят в Дворум. В журнале обмена видно, что принято, а что нет и почему.
- Чтобы обмен шёл сам, обработку подключают в «Дополнительные отчёты и обработки» и задают расписание — например, каждый день в 7:00.
Начисления и оплаты обработка сама берёт из документов «1С:Бухгалтерии предприятия 3.0». Для других программ 1С, например для ЖКХ, — из файла Excel, сохранённого из отчёта. Плательщика обе системы узнают по номеру договора.
Вебхуки: как устроены
Модератор объекта добавляет адрес в настройках на вкладке «Интеграции», выбирает события и получает секрет подписи. Дальше каждое событие уходит POST-запросом с JSON.
События
- request.created
- Новая заявка
- request.status_changed
- Смена статуса заявки
- payment.received
- Поступление оплаты
- pass.created
- Пропуск выписан
- pass.entered
- Въезд или проход по пропуску
- pass.exited
- Выезд или выход по пропуску
- tenant.moved_in
- Въезд арендатора
- tenant.moved_out
- Выезд арендатора
В сообщении нет имён, телефонов, почты и госномеров. Помещение передаётся номером (дом, офис, квартира), организация — названием, люди — никак. Подробности открываются по ссылке на карточку.
Формат сообщения
Поле id одно и то же во всех повторах одного события: по нему получатель отсекает дубли.
POST https://your-crm.example/hook
Content-Type: application/json
X-Dvorum-Event: request.status_changed
X-Dvorum-Delivery: 66f1c0e2a9b3d4e5f6a7b8c9
X-Dvorum-Signature: t=1758795300,v1=5f2b…
{
"id": "66f1c0e2a9b3d4e5f6a7b8c0",
"type": "request.status_changed",
"createdAt": "2026-09-25T10:15:00.000Z",
"place": { "id": "…", "name": "…" },
"data": {
"request": {
"id": "…",
"title": "…",
"status": "IN_PROGRESS",
"category": { "key": "plumbing", "name": null },
"house": { "id": "…", "name": "312", "building": "A", "floor": 3 },
"zone": null,
"tenant": { "id": "…", "name": "…" },
"planned": false,
"createdAt": "2026-09-25T09:02:11.000Z",
"url": "https://dvorum.com/requests/…"
},
"from": "ACCEPTED",
"to": "IN_PROGRESS"
}
}Подпись
Заголовок X-Dvorum-Signature содержит метку времени t и подпись v1 — HMAC-SHA256 от строки «t.тело» на секрете. Проверяйте подпись по телу в том виде, в каком оно пришло, до разбора JSON, и отбрасывайте метки старше пяти минут.
import crypto from "node:crypto";
function verify(secret, header, rawBody) {
const sig = Object.fromEntries(header.split(",").map((p) => p.split("=")));
if (Math.abs(Date.now() / 1000 - Number(sig.t)) > 300) return false;
const expected = crypto
.createHmac("sha256", secret)
.update(`${sig.t}.${rawBody}`)
.digest("hex");
return crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(sig.v1));
}Доставка и повторы
- Ответ 2xx в течение 10 секунд — сообщение доставлено. Любой другой ответ или его отсутствие — ошибка.
- После ошибки попытка повторяется через 1 минуту, 5 минут, 30 минут, 2 часа, 6 часов и сутки — всего семь попыток.
- Если адрес не принимает сообщения трое суток, он выключается, а модераторам объекта приходит уведомление.
- Журнал доставок за 30 дней — с телом сообщения и ответом получателя — открывается на странице вебхука; там же кнопки «Проверить» и «Повторить сейчас».
Пример: Битрикс24
У Битрикс24 есть входящий вебхук — адрес REST с ключом, который создаётся в разделе приложений портала. Небольшой обработчик на вашем хостинге проверяет подпись и создаёт лид на каждую новую заявку:
<?php
$secret = 'whsec_…';
$body = file_get_contents('php://input');
parse_str(str_replace(',', '&', $_SERVER['HTTP_X_DVORUM_SIGNATURE'] ?? ''), $sig);
$expected = hash_hmac('sha256', ($sig['t'] ?? '') . '.' . $body, $secret);
if (!hash_equals($expected, $sig['v1'] ?? '') || abs(time() - (int)$sig['t']) > 300) {
http_response_code(401);
exit;
}
$event = json_decode($body, true);
if ($event['type'] === 'request.created') {
$r = $event['data']['request'];
file_get_contents('https://PORTAL.bitrix24.ru/rest/1/CODE/crm.lead.add.json?' .
http_build_query(['fields' => [
'TITLE' => $r['title'],
'COMMENTS' => trim(($r['house']['name'] ?? '') . ' ' . $r['url']),
]]));
}
http_response_code(200);PORTAL и CODE замените на адрес портала и ключ входящего вебхука. Готового подключения к Битрикс24 нет — есть вебхук, а соответствие полей настраивается на стороне CRM.
Пример: amoCRM
amoCRM принимает данные через свою интеграцию с авторизацией, поэтому проще подключить её через сервис-посредник, например Albato:
- В сервисе-посреднике создайте связку, которая начинается со входящего вебхука, и скопируйте его адрес.
- В настройках объекта добавьте этот адрес и выберите события — например, «Новая заявка».
- Нажмите «Проверить»: посредник получит пробное сообщение и покажет его поля.
- Добавьте шаг amoCRM «Создать сделку» или «Добавить примечание» и подставьте поля: название — data.request.title, помещение — data.request.house.name, ссылка — data.request.url.
С чего начинается подключение объекта — на странице «Как подключить».
Вопросы по настройке интеграций — в техническую поддержку.