# OnlineChatSdk-Swift [![Version](https://img.shields.io/cocoapods/v/OnlineChatSdk.svg?style=flat)](https://cocoapods.org/pods/OnlineChatSdk) [![License](https://img.shields.io/cocoapods/l/OnlineChatSdk.svg?style=flat)](https://cocoapods.org/pods/OnlineChatSdk) ![Platform](https://img.shields.io/cocoapods/p/SwiftMessages.svg?style=flat) ## Добавление в проект pod 'OnlineChatSdk' ## Получение id Перейдите в раздел «Настройки - Установка» и скопируйте значение переменной id. ![](https://github.com/bekannax/OnlineChatSdk-Android/blob/master/images/2019-03-21_16-53-28.png) ## Пример использования Добавьте свой **ViewController** с суперклассом `ChatController`. ```swift class MyController: ChatController { override func viewDidLoad() { super.viewDidLoad() load("<Ваш id>", "<Домен вашего сайта>") } } ``` Так же при загрузке можно указать **language** и **clientId**. ```swift load("<Ваш id>", "<Домен вашего сайта>", "en", "newClientId") ``` ## События * **operatorSendMessage** - оператор отправил сообщение посетителю. * **clientSendMessage** - посетитель отправил сообщение оператору. * **clientMakeSubscribe** - посетитель заполнил форму. * **contactsUpdated** - посетитель обновил информацию о себе. * **sendRate** - посетитель отправил новый отзыв. * **clientId** - уникальный идентификатор посетителя. Для каждого события есть персональный обработчик. ```swift override func onOperatorSendMessage(_ data: NSDictionary) { } override func onClientSendMessage(_ data: NSDictionary) { } override func onClientMakeSubscribe(_ data: NSDictionary) { } override func onContactsUpdated(_ data: NSDictionary) { } override func onSendRate(_ data: NSDictionary) { } override func onClientId(_ clientId: String) { } ``` Или можно задать один обработчик на все события. ```swift override func onEvent(_ name: String, _ data: NSDictionary) { switch name { case ChatController.event_operatorSendMessage: break case ChatController.event_clientSendMessage: break case ChatController.event_clientMakeSubscribe: break case ChatController.event_contactsUpdated: break case ChatController.event_sendRate: break case ChatController.event_clientId: break case ChatController.method_getContacts: break default: break } } ``` ## Методы * **setClientInfo** - изменение информации о посетителе. * **setTarget** - пометить посетителя целевым. * **openReviewsTab** - отобразить форму для отзыва. * **openTab** - отобразить необходимую вкладку. * **sendMessage** - отправка сообщения от имени клиента. * **receiveMessage** - отправка сообщения от имени оператора. * **setOperator** - выбор любого оператора. * **getContacts** - получение контактных данных. ```swift callJsSetClientInfo("{name: \"Имя\", email: \"test@mail.ru\"") callJsSetTarget("reason") callJsOpenReviewsTab() callJsOpenTab(1) callJsSendMessage("Здравствуйте! У меня серьёзная проблема!") callJsReceiveMessage("Мы уже спешим на помощь ;)", "", 2000) callJsSetOperator("Логин оператора") callJsGetContacts() // результат прилетает в getContactsCallback override func getContactsCallback(_ data: NSDictionary) { } ``` Подробное описание методов можно прочесть в разделе «Интеграция и API - Javascript API». ## Получение token Перейдите в раздел «Интеграция и API - REST API», скопируйте существующий token или добавьте новый. ![](https://github.com/bekannax/OnlineChatSdk-Android/blob/master/images/2019-04-01_18-32-22.png) ## ChatApi **getNewMessages** - получение новых сообщений от оператора. ```swift ChatApi.getNewMessages("", "") {(result) in if result?["error"] != nil { print("error : \(String(describing: result?["error"]))") } else { print("result : \(result.debugDescription)") } } ``` Подробное описание можно прочесть в разделе «Интеграция и API - REST API - Инструкции по подключению». ## License OnlineChatSdk is available under the MIT license. See the LICENSE file for more info.