- Образец
- Добавление библиотеки в проект
- Классы базы знаний
- Методы базы знаний
- Методы чата
- CallBack
- Кастомизация интерфейса
Чтобы запустить пример проекта, клонируйте репозиторий и сначала запустите pod install
из каталога примера.
Для запуска тестового приложения нужно:
-Клонировать репозиторий
-Запустить терминал
-Перейти в скаченную дирректорию (в папку Example)
-Выполнить команду pod install
Библиотека UseDesk_SDK_Swift доступна через систему управления зависимостями CocoaPods.
-Добавьте строчку в Podfile вашего приложения
pod 'UseDesk_SDK_Swift'
-Выполните команду в терминале pod update
-Подключаем библиотеку import UseDesk`
Переменная | Тип | Описание |
---|---|---|
CompanyID | String | идентификатор компании |
isUseBase | Bool | использовать базу знаний |
Account ID | String | идентификатор базы знаний (опциональный) |
API Token | String | личный API ключ |
String | почта клиента | |
Phone | String | телефон клиента (опционально) |
URL | String | адрес сервера в формате - dev.company.ru |
Port | String | порт сервера |
Name | String | имя клиента (опционально) |
NameChat | String | имя чата (опционально). Отображается в шапке |
FirstMessage | String | автоматическое сообщение (опционально). Отправиться сразу после иницилизации от имени клиента |
PresentIn | UIViewController | в каком контроллере открывать (опционально) |
Переменная | Тип | Описание |
---|---|---|
Success | Bool | статус подключения к серверу |
Error | String | описание ошибки при неудачном подключении |
let usedesk = UseDeskSDK()
usedesk.start(withCompanyID: "1234567", isUseBase: true, account_id: "1", api_token: "143ed59g90ef093s", email: "lolo@yandex.ru", phone: "89000000000", url: "dev.company.ru", port: "213", name: "Name", nameChat: "NameChat", firstMessage: "message", presentIn: self, connectionStatus: { success, error in
})
let usedesk = UseDeskSDK()
usedesk.start(withCompanyID: "1234567", isUseBase: false, api_token: "143ed59g90ef093s", email: "lolo@yandex.ru", phone: "89000000000", url: "dev.company.ru", port: "213", name: "Name", nameChat: "NameChat", firstMessage: "message", connectionStatus: { success, error in
})
-
Подключаем библиотеку import UseDesk
-
Выполняем операцию инициализации чата параметрами без GUI:
Переменная | Тип | Описание |
---|---|---|
CompanyID | String | идентификатор компании |
isUseBase | Bool | использовать базу знаний |
Account ID | String | идентификатор базы знаний (опциональный) |
API Token | String | личный API ключ |
String | почта клиента | |
Phone | String | телефон клиента (опционально) |
URL | String | адрес сервера адрес сервера в формате - dev.company.ru |
Port | String | порт сервера |
Name | String | имя клиента (опционально) |
NameChat | String | имя чата (опционально). Отображается в шапке |
FirstMessage | String | автоматическое сообщение (опционально). Отправиться сразу после иницилизации от имени клиента |
let usedesk = UseDeskSDK()
usedesk.startWithoutGUICompanyID(companyID: "1234567", isUseBase: true, account_id: "1", api_token: "143ed59g90ef093s", email: "lolo@yandex.ru", phone: "89000000000", url: "dev.company.ru", port: "213", name: "Name", nameChat: "NameChat", firstMessage: "message", connectionStatus: { (success, error) in
})
Переменная | Тип | Описание |
---|---|---|
Success | Bool | статус подключения к серверу |
Error | String | описание ошибки при неудачном подключении |
Если тип ошибки noOperators то нет доступных операторов в данный момент времени
Свойство | Тип | Описание |
---|---|---|
title | String | название раздела |
id | Int | идентификатор раздела |
open | Bool | публичный или закрытый раздел |
image | String | адрес изображения раздела |
сategories | [BaseCategory] | массив категорий |
Свойство | Тип | Описание |
---|---|---|
title | String | название категории |
id | Int | идентификатор категории |
open | Bool | публичная или закрытая категория |
articlesTitles | [ArticleTitle] | массив названий статей |
Свойство | Тип | Описание |
---|---|---|
title | String | название статьи |
id | Int | идентификатор статьи |
views | Int | количество просмотров статьи |
Свойство | Тип | Описание |
---|---|---|
title | String | название статьи |
id | Int | идентификатор статьи |
open | Bool | публичная или закрытая статья |
text | String | тект статьи |
category_id | Int | идентификатор категории статьи |
collection_id | Int | идентификатор категории раздела |
views | Int | количество просмотров статьи |
created_at | String | дата создания статьи |
Свойство | Тип | Описание |
---|---|---|
page | Int | страница |
last_page | Int | количество страниц |
count | Int | количество статей на страницу |
total_count | Int | общее количество статей |
articles | [Article] | массив статей |
Внимание: если при инициализации не был передан account_id или isUseBase указан false, следующие методы не будут работать.
возвращает массив разделов - [BaseCollection]
usedesk.getCollections(connectionStatus: {success, collections, error in
})
возвращает класс статьи - Article
Переменная | Тип | Описание |
---|---|---|
articleID | Int | идентификатор статьи |
usedesk?.getArticle(articleID: id, connectionStatus: { success, article, error in
})
возвращает класс результата поиска - SearchArticle
Переменная | Тип | Описание |
---|---|---|
collection_ids | [Int] | id разделов через запятую |
category_ids | [Int] | id категорий через запятую |
article_ids | [Int] | id статей через запятую |
count | Int | Количество статей на страницу (максимум: 100, по умолчанию: 20) |
page | Int | Страница (по умолчанию 1) |
query | String | Поисковая строка запроса, которая ищет по заголовку и тексту статьи |
type | TypeArticle(.all .open .close) | выводятся все статьи. Если статья публичная, но находится в приватной категории, то при запросе с type=open она не выведется, т.к будет считаться приватной из-за родительской категории |
sort | SortArticle (.id .title .category_id .public .created_at) | Параметр, по которому сортируются статьи |
order | OrderArticle (.asc .desc) | Порядок сортировки по параметру sort. по умолчанию: asc Варианты: asc - по возрастанию, desc - по убыванию |
usedesk.getSearchArticles(collection_ids: [collection_ids], category_ids: [category_ids], article_ids: [], query: searchText, type: .all, sort: .title, order: .asc) { (success, searchArticle, error) in
})
Переменная | Тип | Описание |
---|---|---|
articleID | Int | идентификатор статьи |
count | Int | количество просмотров |
usedesk.addViewsArticle(articleID: id, count: 1, connectionStatus: { success, error in
})
Переменная | Тип | Описание |
---|---|---|
Message | String | тест сообщения |
usedesk.sendMessage("привет как дела?")
Переменная | Тип | Описание |
---|---|---|
Message | String | тест сообщения |
FileName | String | имя файла |
fileType | String | тип файла (MIMO) |
contentBase64 | Base64 | данные |
Несколько файлов отправляются отдельными сообщениями
usedesk.sendMessage(text, withFileName: "file", fileType: "image/png", contentBase64: content)
Переменная | Тип | Описание |
---|---|---|
Message | String | тест сообщения |
usedesk.sendOfflineForm(withMessage message: "привет") { (result, error) in
}
Переменная | Тип | Описание |
---|---|---|
Success | Bool | статус отправки |
Error | String | тип ошибки |
История сообщений доступна после инициализации чата в параметре historyMess = [RCMessage] RCMessage - объект хранящий всю информацию о сообщении
usedesk.historyMess
Можно изменять максимальное количество прикрепленных файлов с помощью переменной maxCountAssets
usedesk.maxCountAssets = 5
usedesk.connectBlock = { success, error in
}
Переменная | Тип | Описание |
---|---|---|
Success | Bool | статус соединения |
Error | String | тип ошибки |
Переменная | Тип | Описание |
---|---|---|
incoming | Bool | флаг входящего сообщения |
outgoing | Bool | флаг исходящего сообщения |
text | String | текст сообщения |
picture_image | UIImage | изображение |
rcButtons | [RCMessageButton] | массив объектов с параметрами кнопки |
Error | String | тип ошибки |
usedesk.newMessageBlock { success, message in
}
Переменная | Тип | Описание |
---|---|---|
status | Bool | true - like, false - dislike |
usedesk!.sendMessageFeedBack(true)
usedesk.errorBlock = {errors in
}
usedesk.releaseChat()
Переменная | Тип | Описание |
---|---|---|
Message | RCMessage | сообщение с type 4 – пользователь завершил разговор |
usedesk.feedbackMessageBlock = { message in
}
Можно ограничить отправляемые клиентом типы контента, например запретить отправку видео или фото или и то и другое.
Для этого нужно выбрать значение переменной supportedAttachmentTypes в классе Settings
Для этого нужно задать соответствующее значение переменным avatarIncomingHidden (для входящих сообщений) и avatarOutgoingHidden (для исходящих сообщений) в классе RCMessages
Код | Ошибка | Описание |
---|---|---|
111 | Server error | Ошибка на сервере |
112 | Invalid token | В запросе передан не правильный токен |
115 | Access error | Ошибка доступа |
121 | Request limits | Превышен лимит запросов |
- | Could not connect to the server | Не удалось подключиться к серверу |
Код | Ошибка | Описание |
---|---|---|
500 | Check server logs | Непредвиденная ошибка сервера |
403 | @@server/chat/INIT First | Не проведена инициализация |
400 | ID of company is not defined | Не передали company_id |
400 | Email is not defined | Не передали email |
400 | Data is not defined | Не передали data в set-действии |
400 | Message is not defined | Не передали message |
403 | Your token is fake | Передали несуществующий токен |
Для кастомизации NavigationBar и SearchBar можно переопределить соответствующие переменные в классе Settings
Для кастомизации сообщений можно переопределить соответствующие переменные в классе RCMessages
Так же для таблицы чата, базы знаний и отдельных ячеек можете использовать файлы .xib расположенных в папке UseDesk_SDK_Swift/Resources/Classes
Сергей, kon.sergius@gmail.com
Максим, ixotdog@gmail.com
UseDesk_SDK_Swift is available under the MIT license. See the LICENSE file for more info.