Перейти к основному содержимому
Версия: 5.9.0

Настройки подключения

Настройки подключения к серверу описываются моделью ChatTransportConfig.

Детальная настройка

init(rest: String, webSocket: String, dataStore: String, dataStoreHTTPHeaders: [String: String]? = nil, newRoutesEnabled: Bool = true, apiVersion: APIVersion = .api17)

Для полной настройки адресов (например, для in-house установок) необходимо указать адреса основных компонентов сервера:

ПолеТипОбязательныйОписание
restStringДаURL REST API бекенда (например, https://your-host.edna.ru)
webSocketStringДаURL WebSocket-шлюза (например, wss://your-host.edna.ru/socket)
dataStoreStringДаURL хранилища файлов и медиа (например, https://your-host.edna.ru/files)
dataStoreHTTPHeaders[String: String]?Нет (default nil)HTTP-заголовки для DataStore. После init хранится как public var [String: String] (non-optional) — для очистки присваивайте [:]
newRoutesEnabledBoolНет (default true)Использовать новый путь REST-эндпоинта истории сообщений. Установите false для серверов со старой маршрутизацией
apiVersionAPIVersionНет (default .api17)Версия API бекенда. См. таблицу Версии API ниже
let chatTransportConfig = ChatTransportConfig(
rest: "https://your-host.edna.ru",
webSocket: "wss://your-host.edna.ru/socket",
dataStore: "https://your-host.edna.ru/files"
)

Облачный конструктор

init(cloudHost host: String, apiVersion: APIVersion = .api17)

Для клиентов облачного edna Chat Center доступен упрощённый конструктор — достаточно указать имя хоста:

ПолеТипОбязательныйОписание
cloudHostStringДаИмя хоста в формате name.edna.ru (без https://)
apiVersionAPIVersionНет (default .api17)Версия API бекенда
let chatTransportConfig = ChatTransportConfig(cloudHost: "your-host.edna.ru")

SDK автоматически формирует адреса:

  • REST: https://{host}
  • WebSocket: wss://{host}/socket
  • DataStore: https://{host}/files
Где взять параметры подключения

Адреса для подключения и providerUid выдаются при интеграции. Если у вас их нет — напишите на support@edna.ru.

Невалидный cloudHost падает молча

Если в cloudHost передана строка, из которой невозможно собрать валидный URL (опечатка, пустая строка, недопустимые символы), SDK инициализируется без явной ошибки, но authorize и все сетевые запросы тихо падают — без событий в делегат.

Проверяйте cloudHost на этапе тестов и логируйте chatTransportConfig.debugDescription сразу после создания. При валидном host вывод такой:

newRoutesEnabled: true
apiVersion: api17
dataStoreHTTPHeaders: [:]
restURL: https://your-host.edna.ru
webSocketURL: wss://your-host.edna.ru/socket
dataStoreURL: https://your-host.edna.ru/files

При невалидном host в выводе встретится file:// в значениях restURL / webSocketURL / dataStoreURL — это и есть индикатор, что валидация провалилась.

В детальном конструкторе (init(rest:webSocket:dataStore:...)) невалидные URL в debug-сборке приводят к assertionFailure (краш процесса). В release-сборке assertionFailure молчит, и SDK инициализируется с теми же file://-заглушками. Облачный конструктор не падает ни в debug, ни в release.

Доступность параметров

ПараметрДетальный конструкторОблачный конструкторМутация после инициализации
rest, webSocket, dataStore✅ обязательныеформируются из cloudHost автоматическиlet, нельзя
apiVersion✅ опциональный✅ опциональныйpublic var — мутировать на инстансе
dataStoreHTTPHeaders✅ опциональный❌ нельзя через initpublic var — мутировать на инстансе
newRoutesEnabled✅ опциональный❌ нельзя через initpublic var — мутировать на инстансе

Пример мутации dataStoreHTTPHeaders после создания облачным конструктором:

var config = ChatTransportConfig(cloudHost: "your-host.edna.ru")
config.dataStoreHTTPHeaders = ["X-Auth": "token"]

Версии API

Параметр apiVersion определяет версию API на бекенде, от которой зависит доступный функционал. Обратитесь к документации edna ChatCenter на сервере для определения требуемой версии API:

ЗначениеВерсияФункционал
.api1717Базовый (ChatCenter 6.x+)
.api1818Уведомления о персональных данных
.api1919Кнопочные опросы
.api2020Уведомление о разблокировке клиента (CLIENT_UNBLOCKED)
.api2121Комментарии к опросам
Совместимость версий API

Подробное описание совместимости версий API со значениями функционала см. в серверной документации edna ChatCenter.

Как узнать актуальную версию API на сервере

В SDK нет автоматического discovery версии API — клиентское приложение должно знать её на этапе сборки. Способы определить версию:

  1. Уточнить у edna при интеграции. Поддержка сообщит требуемую APIVersion для вашего тенанта/окружения.
  2. Серверная документация. В описании установки edna ChatCenter указана версия API, поддерживаемая текущим релизом сервера.

Что произойдёт при несовпадении

Headerdoc APIVersion фиксирует только общее правило: «При несовпадении отдельные функции могут не работать или отвечать ошибкой». Точное поведение (какие именно эндпоинты возвращают ошибку, какие игнорируют неизвестные поля) определяется серверной стороной — см. документацию edna ChatCenter.

Если в продакшене после обновления сервера часть фич перестала работать — первым делом проверьте, что в SDK на стороне приложения поднят apiVersion до соответствующего значения и приложение пересобрано с новой версией.


Связанные разделы