Настройки подключения
Настройки подключения к серверу описываются моделью ChatTransportConfig.
Детальная настройка
init(rest: String, webSocket: String, dataStore: String, dataStoreHTTPHeaders: [String: String]? = nil, newRoutesEnabled: Bool = true, apiVersion: APIVersion = .api17)
Для полной настройки адресов (например, для in-house установок) необходимо указать адреса основных компонентов сервера:
| Поле | Тип | Обязательный | Описание |
|---|---|---|---|
rest | String | Да | URL REST API бекенда (например, https://your-host.edna.ru) |
webSocket | String | Да | URL WebSocket-шлюза (например, wss://your-host.edna.ru/socket) |
dataStore | String | Да | URL хранилища файлов и медиа (например, https://your-host.edna.ru/files) |
dataStoreHTTPHeaders | [String: String]? | Нет (default nil) | HTTP-заголовки для DataStore. После init хранится как public var [String: String] (non-optional) — для очистки присваивайте [:] |
newRoutesEnabled | Bool | Нет (default true) | Использовать новый путь REST-эндпоинта истории сообщений. Установите false для серверов со старой маршрутизацией |
apiVersion | APIVersion | Нет (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 доступен упрощённый конструктор — достаточно указать имя хоста:
| Поле | Тип | Обязательный | Описание |
|---|---|---|---|
cloudHost | String | Да | Имя хоста в формате name.edna.ru (без https://) |
apiVersion | APIVersion | Нет (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 | ✅ опциональный | ❌ нельзя через init | ✅ public var — мутировать на инстансе |
newRoutesEnabled | ✅ опциональный | ❌ нельзя через init | ✅ public var — мутировать на инстансе |
Пример мутации dataStoreHTTPHeaders после создания облачным конструктором:
var config = ChatTransportConfig(cloudHost: "your-host.edna.ru")
config.dataStoreHTTPHeaders = ["X-Auth": "token"]
Версии API
Параметр apiVersion определяет версию API на бекенде, от которой зависит доступный функционал. Обратитесь к документации edna ChatCenter на сервере для определения требуемой версии API:
| Значение | Версия | Функционал |
|---|---|---|
.api17 | 17 | Базовый (ChatCenter 6.x+) |
.api18 | 18 | Уведомления о персональных данных |
.api19 | 19 | Кнопочные опросы |
.api20 | 20 | Уведомление о разблокировке клиента (CLIENT_UNBLOCKED) |
.api21 | 21 | Комментарии к опросам |
Подробное описание совместимости версий API со значениями функционала см. в серверной документации edna ChatCenter.
Как узнать актуальную версию API на сервере
В SDK нет автоматического discovery версии API — клиентское приложение должно знать её на этапе сборки. Способы определить версию:
- Уточнить у edna при интеграции. Поддержка сообщит требуемую
APIVersionдля вашего тенанта/окружения. - Серверная документация. В описании установки edna ChatCenter указана версия API, поддерживаемая текущим релизом сервера.
Что произойдёт при несовпадении
Headerdoc APIVersion фиксирует только общее правило: «При несовпадении отдельные функции могут не работать или отвечать ошибкой». Точное поведение (какие именно эндпоинты возвращают ошибку, какие игнорируют неизвестные поля) определяется серверной стороной — см. документацию edna ChatCenter.
Если в продакшене после обновления сервера часть фич перестала работать — первым делом проверьте, что в SDK на стороне приложения поднят apiVersion до соответствующего значения и приложение пересобрано с новой версией.
Связанные разделы
- Сетевые настройки — таймауты и SSL-пиннинг
- Настройки SDK — параметры функционала чата
- Настройки инициализации SDK — конструктор
ChatCenterUISDK - Инициализация и настройка SDK — полный пример