Swiftpack.co - Package - usedesk/UseDeskSwift

UseDesk_SDK_Swift

Образец

Чтобы запустить пример проекта, клонируйте репозиторий и сначала запустите 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 ключ | | Email | String | почта клиента | | Phone | String | телефон клиента (опционально) | | URL | String | адрес сервера с номером порта | | Port | String | порт сервера | | Name | String | имя клиента (опционально) | | NameChat | String | имя чата (опционально). Отображается в шапке|

Блок возвращает следующие параметры:

| Переменная | Тип | Описание | | -------------| ------------- | ------------- | | Success | Bool | статус подключения к серверу | | Error | String | описание ошибки при неудачном подключении |

Пример c использованием базы знаний:

let usedesk = UseDeskSDK()
usedesk.start(withCompanyID: "1234567", isUseBase: true, account_id: "1", api_token: "143ed59g90ef093s", email: "lolo@yandex.ru", phone: "89000000000", url: "https:dev.company.ru", port: "213", name: "Name", nameChat: "NameChat", connectionStatus: { success, error in

})

Пример без использования базы знаний:

let usedesk = UseDeskSDK()
usedesk.start(withCompanyID: "1234567", isUseBase: false, api_token: "143ed59g90ef093s", email: "lolo@yandex.ru", phone: "89000000000", url: "https:dev.company.ru", port: "213", name: "Name", nameChat: "NameChat", connectionStatus: { success, error in

})

Подключение SDK без графического интерфейса

  • Подключаем библиотеку import UseDesk

  • Выполняем операцию инициализации чата параметрами без GUI:

| Переменная | Тип | Описание | | -------------| ------------- | ------------- | | CompanyID | String | идентификатор компании | | isUseBase | Bool | использовать базу знаний | | Account ID | String | идентификатор базы знаний (опциональный) | | API Token | String | личный API ключ | | Email | String | почта клиента | | Phone | String | телефон клиента (опционально) | | URL | String | адрес сервера с номером порта | | Port | String | порт сервера | | Name | String | имя клиента (опционально) | | NameChat | String | имя чата (опционально). Отображается в шапке|

Пример:

let usedesk = UseDeskSDK()
usedesk.startWithoutGUICompanyID(companyID: "1234567", isUseBase: true, account_id: "1", api_token: "143ed59g90ef093s", email: "lolo@yandex.ru", phone: "89000000000", url: "https:dev.company.ru", port: "213", name: "Name", nameChat: "NameChat", connectionStatus: { (success, error) in

})

Блок возвращает следующие параметры:

| Переменная | Тип | Описание | | -------------| ------------- | ------------- | | Success | Bool| статус подключения к серверу | | Error | String | описание ошибки при неудачном подключении |

Если тип ошибки noOperators то нет доступных операторов в данный момент времени

Классы базы знаний:

Класс раздела - BaseCollection :

| Свойство | Тип | Описание | | -------------| ------------- | ------------- | | title | String | название раздела | | id | Int | идентификатор раздела | | open | Bool | публичный или закрытый раздел | | image | String | адрес изображения раздела | | сategories | [BaseCategory] | массив категорий |

Класс категории - BaseCategory :

| Свойство | Тип | Описание | | -------------| ------------- | ------------- | | title | String | название категории | | id | Int | идентификатор категории | | open | Bool | публичная или закрытая категория | | articlesTitles | [ArticleTitle] | массив названий статей |

Класс названия статьи - ArticleTitle :

| Свойство | Тип | Описание | | -------------| ------------- | ------------- | | title | String | название статьи | | id | Int | идентификатор статьи | | views | Int | количество просмотров статьи |

Класс статьи - Article :

| Свойство | Тип | Описание | | -------------| ------------- | ------------- | | title | String | название статьи | | id | Int | идентификатор статьи | | open | Bool | публичная или закрытая статья | | text | String | тект статьи | | category_id | Int | идентификатор категории статьи | | collection_id | Int | идентификатор категории раздела | | views | Int | количество просмотров статьи| | created_at | String | дата создания статьи |

Класс результата поиска статьи - SearchArticle :

| Свойство | Тип | Описание | | -------------| ------------- | ------------- | | 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: 1, connectionStatus baseBlock: @escaping UDSArticleBlock)

Получение результатов поиска статьи:

возвращает класс результата поиска - 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

CallBack – уведомления о действиях

Статус соединия:

Пример:

usedesk.connectBlock = (success, error){
}

Блок возвращает следующие параметры:

| Переменная | Тип | Описание | | -------------| ------------- | ------------- | | Success | Bool | статус соединения | | Error | String | тип ошибки |

Новое входящее сообщение:

| Переменная | Тип | Описание | | -------------| ------------- | ------------- | | incoming | Bool | флаг входящего сообщения | | outgoing | Bool | флаг исходящего сообщения | | text | String | текст сообщения | | picture_image | UIImage | изображение | | rcButtons | [RCMessageButton] | массив объектов с параметрами кнопки | | Error | String | тип ошибки |

Пример:

usedesk.newMessageBlock = (success, message){
}

Отправление оценки CSI:

| Переменная | Тип | Описание | | -------------| ------------- | ------------- | | status | Bool | true - like, false - dislike |

Пример:

usedesk!.sendMessageFeedBack(true)

Блок возвращающий ошибку соединения:

Пример:

usedesk.errorBlock = (errors){
    
}

Конец сессии:

usedesk.releaseChat()

Операторы завершили разговор

Блок возвращает следующие параметры:

| Переменная | Тип | Описание | | -------------| ------------- | ------------- | | Message | RCMessage | сообщение с type 4 – пользователь завершил разговор |

Пример:

usedesk.feedbackMessageBlock = (message){
}

Список ошибок

При работе с базой знаний:

| Код | Ошибка | Описание | | -------------| ------------- | ------------- | | 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 | Передали несуществующий токен |

Author

Сергей, kon.sergius@gmail.com

Максим, ixotdog@gmail.com

License

UseDesk_SDK_Swift is available under the MIT license. See the LICENSE file for more info.

Github

link
Stars: 0

Dependencies

Used By

Total: 0