Synchra.24
menu_bookДокументация
Практические материалы по запуску и развитию

Здесь собраны инструкции по запуску, разработке внутренних сценариев и встраиванию собственных инструментов в рабочий контур компании.

folderВстроенные сервисы

Запуск в веб-версии

Веб-доступ, определение среды, внешний сервис и совместимость мобильного моста.

Запуск в веб-версии

В настройках сервиса включите Разрешить в веб-версии и сохраните изменения. Для нового встроенного сервиса этот же переключатель доступен при создании. По умолчанию он выключен: существующие сервисы не появляются в вебе автоматически.

Сервис появится в боковом меню Сервисы с заданными названием и иконкой. Он участвует в поиске меню и в персональной настройке видимости разделов. После сохранения или публикации меню обновляется. При переходе по пункту сервис открывается внутри обычной рабочей области с сохранением бокового меню.

Показ зависит также от лицензии Приложения, общего включения сервиса, полномочия и списка доступных сотрудников. Для встроенного сервиса нужна опубликованная версия: черновик в рабочее меню не попадает. Выключение доступа в вебе не отключает мобильный сервис и не удаляет данные. Прямая ссылка не обходит проверки доступа; сервер веб-моста повторно проверяет доступность перед операциями с данными.

Сервис по внешней ссылке открывается во встроенном окне. Его сайт должен разрешать встраивание через собственные заголовки CSP / X-Frame-Options. Если это запрещено, используйте Открыть отдельно. При открытии отдельно авторизованный мост Synchra24 недоступен. Сайты по внешним ссылкам не получают пользовательский или корпоративный API-токен.

Проверка среды выполнения

Во встроенном сервисе доступен синхронный метод:

const runtime = synchra.getRuntime(); // 'web' или 'mobile'
if (runtime === 'mobile') {
  const photo = await synchra.takePhoto({ upload: true });
  // Обработайте результат нативной камеры.
} else {
  // Собственная веб-реализация: например, обычный input type="file".
  document.querySelector('#web-file-input')?.click();
}

isSynchraIntegrated() проверяет доступность моста, а getRuntime() определяет среду: это разные проверки. Не определяйте мобильную среду по наличию ReactNativeWebView: в вебе движок использует совместимый транспорт. Нативные действия в вебе не открывают камеру, геолокацию или диалоги телефона: они возвращают {runtime: 'web', supported: false, ignored: true}. Это не успешное получение фотографии или координат. Неизвестные методы и произвольные api.request не разрешаются автоматически.

Для внешнего сервиса, использующего свою версию SDK, доступна проверка window.getSynchraRuntime?.() ?? 'web'. Мобильное приложение устанавливает эту функцию до загрузки страницы. Метод synchra.getRuntime() предоставляется встроенным движком, а не любой старой версией npm-пакета. Веб-альтернатива подчиняется ограничениям браузера и sandbox; мобильный вызов не преобразуется автоматически в браузерный.

Мост внешнего сервиса в браузере

Встроенный редактор подключает транспорт сам. Для приложения по внешней ссылке подключите адаптер на стороне этого приложения до создания SynchraApp. Проверяйте точный origin вашего веб-приложения Synchra24; для коробочной установки замените адрес своим. Не добавляйте Bearer-токены в URL.

const hostOrigin = 'https://app.synchra24.com';
const runtime = window.getSynchraRuntime?.() ?? 'web';
if (runtime === 'web' && window.parent !== window) {
  window.__SYNCHRA_RUNTIME__ = 'web';
  window.getSynchraRuntime = () => 'web';
  window.ReactNativeWebView = {
    postMessage(message) {
      window.parent.postMessage({ synchraHosted: true, message }, hostOrigin);
    }
  };
  window.addEventListener('message', (event) => {
    if (event.source !== window.parent || event.origin !== hostOrigin) return;
    if (event.data?.synchraHostedReply) {
      window.onNativeMessage?.(JSON.stringify(event.data.message));
    }
    if (event.data?.synchraHostedTheme) {
      window.__SYNCHRA_THEME__ = event.data.synchraHostedTheme;
      window.dispatchEvent(new CustomEvent('synchra.theme', {
        detail: event.data.synchraHostedTheme
      }));
    }
  });
}

Далее инициализируйте используемый SDK обычным service token и проверьте isSynchraIntegrated(). Веб-мост принимает только сообщения открытого фрейма с ожидаемого origin. Поддерживаются контекст, тема, чтение артефактов и отправка зарегистрированных событий. Для последнего метода в собственной сборке SDK нужна поддержка emitEvent; наличие транспорта само по себе метод не добавляет.

Доступ с телефона и ограничения

В мобильном приложении опубликованный сервис открывается без отдельного входа в веб-версию. Доступ зависит от подписки компании, роли сотрудника и настроек сервиса.

Встроенным сервисам нужно интернет-соединение: офлайн-работа пока не поддерживается. При открытии ссылки в обычном браузере потребуется войти в Synchra24.