Files
OnlineChatSdk-SwiftPM/README.md

150 lines
5.9 KiB
Markdown
Raw Normal View History

2019-11-20 16:32:38 +07:00
# OnlineChatSdk-Swift
2019-11-15 23:21:03 +07:00
[![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)
2019-11-20 16:33:32 +07:00
![Platform](https://img.shields.io/cocoapods/p/SwiftMessages.svg?style=flat)
2019-11-15 23:21:03 +07:00
2020-08-18 18:49:59 +07:00
![](https://github.com/bekannax/OnlineChatSdk-Swift/blob/master/images/2020-08-18_17-43-31.png?raw=true)
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.
![](https://github.com/bekannax/OnlineChatSdk-Android/blob/master/images/2019-03-21_16-53-28.png?raw=true)
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
![](https://github.com/bekannax/OnlineChatSdk-Android/blob/master/images/2019-04-01_18-32-22.png?raw=true)
## Получение новых сообщений от оператора
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
2020-08-18 23:31:32 +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
![](https://github.com/bekannax/OnlineChatSdk-Android/blob/master/images/2020-08-14_19-05-48.png?raw=true)
2019-11-15 23:21:03 +07:00
## License
OnlineChatSdk is available under the MIT license. See the LICENSE file for more info.