2019-11-20 16:32:38 +07:00
|
|
|
|
# OnlineChatSdk-Swift
|
2019-11-15 23:21:03 +07:00
|
|
|
|
[](https://cocoapods.org/pods/OnlineChatSdk)
|
|
|
|
|
|
[](https://cocoapods.org/pods/OnlineChatSdk)
|
2019-11-20 16:33:32 +07:00
|
|
|
|

|
2019-11-15 23:21:03 +07:00
|
|
|
|
|
2020-08-18 18:49:59 +07:00
|
|
|
|

|
|
|
|
|
|
|
2019-11-20 16:32:38 +07:00
|
|
|
|
## Добавление в проект
|
2019-11-20 18:28:06 +07:00
|
|
|
|
```ruby
|
2019-11-20 16:32:38 +07:00
|
|
|
|
pod 'OnlineChatSdk'
|
2019-11-20 18:28:06 +07:00
|
|
|
|
```
|
2019-11-20 16:32:38 +07:00
|
|
|
|
|
|
|
|
|
|
## Получение id
|
2020-08-18 23:23:06 +07:00
|
|
|
|
Перейдите в раздел «Online чат - Ваш сайт - Настройки - Установка» и скопируйте значение переменной id.
|
|
|
|
|
|

|
2019-11-15 23:21:03 +07:00
|
|
|
|
|
2019-11-20 16:32:38 +07:00
|
|
|
|
## Пример использования
|
2020-08-18 23:23:06 +07:00
|
|
|
|
Добавьте свой `ViewController` с суперклассом `ChatController`.
|
2019-11-20 16:32:38 +07:00
|
|
|
|
```swift
|
|
|
|
|
|
class MyController: ChatController {
|
|
|
|
|
|
|
|
|
|
|
|
override func viewDidLoad() {
|
|
|
|
|
|
super.viewDidLoad()
|
|
|
|
|
|
load("<Ваш id>", "<Домен вашего сайта>")
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
2020-08-18 18:49:59 +07:00
|
|
|
|
Так же при загрузке можно указать `language`, `clientId` и `apiToken`.
|
2019-11-20 16:32:38 +07:00
|
|
|
|
```swift
|
2020-08-18 18:49:59 +07:00
|
|
|
|
load("<Ваш id>", "<Домен вашего сайта>", "en", "newClientId", "<Токен для доступа к Rest Api>")
|
2019-11-20 16:32:38 +07:00
|
|
|
|
```
|
2019-11-15 23:21:03 +07:00
|
|
|
|
|
2019-11-20 16:32:38 +07:00
|
|
|
|
## События
|
|
|
|
|
|
* **operatorSendMessage** - оператор отправил сообщение посетителю.
|
|
|
|
|
|
* **clientSendMessage** - посетитель отправил сообщение оператору.
|
|
|
|
|
|
* **clientMakeSubscribe** - посетитель заполнил форму.
|
|
|
|
|
|
* **contactsUpdated** - посетитель обновил информацию о себе.
|
|
|
|
|
|
* **sendRate** - посетитель отправил новый отзыв.
|
|
|
|
|
|
* **clientId** - уникальный идентификатор посетителя.
|
2019-11-15 23:21:03 +07:00
|
|
|
|
|
2019-11-20 16:32:38 +07:00
|
|
|
|
Для каждого события есть персональный обработчик.
|
|
|
|
|
|
```swift
|
|
|
|
|
|
override func onOperatorSendMessage(_ data: NSDictionary) {
|
2019-11-15 23:21:03 +07:00
|
|
|
|
|
2019-11-20 16:32:38 +07:00
|
|
|
|
}
|
2019-11-15 23:21:03 +07:00
|
|
|
|
|
2019-11-20 16:32:38 +07:00
|
|
|
|
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
|
2020-02-20 15:03:51 +07:00
|
|
|
|
callJsSetClientInfo("{name: \"Имя\", email: \"test@mail.ru\"}")
|
2019-11-20 16:32:38 +07:00
|
|
|
|
|
|
|
|
|
|
callJsSetTarget("reason")
|
|
|
|
|
|
|
|
|
|
|
|
callJsOpenReviewsTab()
|
|
|
|
|
|
|
|
|
|
|
|
callJsOpenTab(1)
|
|
|
|
|
|
|
|
|
|
|
|
callJsSendMessage("Здравствуйте! У меня серьёзная проблема!")
|
|
|
|
|
|
|
|
|
|
|
|
callJsReceiveMessage("Мы уже спешим на помощь ;)", "", 2000)
|
|
|
|
|
|
|
|
|
|
|
|
callJsSetOperator("Логин оператора")
|
|
|
|
|
|
|
|
|
|
|
|
callJsGetContacts() // результат прилетает в getContactsCallback
|
|
|
|
|
|
override func getContactsCallback(_ data: NSDictionary) {
|
|
|
|
|
|
|
|
|
|
|
|
}
|
2019-11-15 23:21:03 +07:00
|
|
|
|
```
|
2019-11-20 16:32:38 +07:00
|
|
|
|
Подробное описание методов можно прочесть в разделе «Интеграция и API - Javascript API».
|
|
|
|
|
|
|
|
|
|
|
|
## Получение token
|
|
|
|
|
|
Перейдите в раздел «Интеграция и API - REST API», скопируйте существующий token или добавьте новый.
|
2019-11-15 23:21:03 +07:00
|
|
|
|
|
2020-08-18 18:49:59 +07:00
|
|
|
|

|
|
|
|
|
|
|
|
|
|
|
|
## Получение новых сообщений от оператора
|
2020-08-18 23:23:06 +07:00
|
|
|
|
Для получения новых сообщений, в `ChatController` есть два статичных метода `getUnreadedMessages` и `getNewMessages`.
|
|
|
|
|
|
|
2020-08-18 23:24:47 +07:00
|
|
|
|
**getUnreadedMessages** - возвращает все непрочитанные сообщения.
|
2020-08-18 23:23:06 +07:00
|
|
|
|
|
|
|
|
|
|
**getNewMessages** так же возвращает непрочитанные сообщения, но при следующих запросах предыдущие сообщения уже не возвращаются.
|
2020-08-18 18:49:59 +07:00
|
|
|
|
|
|
|
|
|
|
Перед использование методов, нужно указать `apiToken`.
|
2019-11-15 23:21:03 +07:00
|
|
|
|
|
2019-11-20 16:32:38 +07:00
|
|
|
|
```swift
|
2020-08-18 18:49:59 +07:00
|
|
|
|
ChatController.getUnreadedMessages { data in }
|
|
|
|
|
|
ChatController.getNewMessages { data in }
|
2019-11-20 16:32:38 +07:00
|
|
|
|
```
|
2020-08-18 18:49:59 +07:00
|
|
|
|
Формат `data` аналогичен ответу метода /chat/message/getList в Rest Api.
|
|
|
|
|
|
|
2019-11-20 16:32:38 +07:00
|
|
|
|
Подробное описание можно прочесть в разделе «Интеграция и API - REST API - Инструкции по подключению».
|
2019-11-15 23:21:03 +07:00
|
|
|
|
|
2020-08-18 18:49:59 +07:00
|
|
|
|

|
|
|
|
|
|
|
2019-11-15 23:21:03 +07:00
|
|
|
|
## License
|
|
|
|
|
|
|
|
|
|
|
|
OnlineChatSdk is available under the MIT license. See the LICENSE file for more info.
|