На главную
Дворум

Интеграции

Дворум работает рядом с системами, которые у объекта уже есть: бухгалтерией, шлагбаумом, СКУД, мессенджером и CRM. Ниже — какой процесс чем закрыт и как это подключается.

Какой процесс чем закрыт

  • Бухгалтерия управляющей

    Обмен с 1С

    Показания счётчиков выгружаются в 1С, начисления и оплаты приходят из 1С. Для этого есть готовая обработка: бухгалтер вставляет токен и нажимает «Обменяться».

  • Въезд без охранника

    Access API шлагбаума

    Контроллер шлагбаума спрашивает, пускать ли машину, по госномеру или QR-коду пропуска. Проезд записывается в журнал, автору пропуска приходит уведомление.

  • Проходы по картам

    СКУД (PERCo-Web)

    Карты сотрудников арендаторов и посетители на день уходят в систему контроля доступа, события проходов возвращаются в журнал посетителей. Сейчас поддержана PERCo-Web.

  • Уведомления и быстрые действия

    Telegram-бот

    Уведомления о заявках, счетах и гостях, а в самом боте — пропуск, заявка, счета, показания и голосование в опросах.

  • CRM, таблицы, свои сценарии

    Вебхуки

    События объекта уходят на ваш адрес: новая заявка, смена её статуса, оплата, пропуск, въезд и выезд арендатора. Так они попадают в Битрикс24, amoCRM и любую систему, которая принимает HTTP-запросы.

Шлагбаум, турникеты и считыватели остаются оборудованием объекта: мы отвечаем контроллеру, а не заменяем его.

Обмен с 1С: готовая обработка

Программист 1С не нужен. Обработку «Дворум: обмен с 1С» присылает техническая поддержка, подключает её бухгалтер.

  1. Модератор выпускает токен в настройках объекта: «Оплата» → «Интеграция с 1С».
  2. Бухгалтер открывает обработку в 1С, вставляет токен и выбирает месяц.
  3. Нажимает «Обменяться»: показания приходят таблицей, начисления и оплаты уходят в Дворум. В журнале обмена видно, что принято, а что нет и почему.
  4. Чтобы обмен шёл сам, обработку подключают в «Дополнительные отчёты и обработки» и задают расписание — например, каждый день в 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:

  1. В сервисе-посреднике создайте связку, которая начинается со входящего вебхука, и скопируйте его адрес.
  2. В настройках объекта добавьте этот адрес и выберите события — например, «Новая заявка».
  3. Нажмите «Проверить»: посредник получит пробное сообщение и покажет его поля.
  4. Добавьте шаг amoCRM «Создать сделку» или «Добавить примечание» и подставьте поля: название — data.request.title, помещение — data.request.house.name, ссылка — data.request.url.

С чего начинается подключение объекта — на странице «Как подключить».

Вопросы по настройке интеграций — в техническую поддержку.