OnlineChatSdk-Swift

Version License Platform

Добавление в проект

pod 'OnlineChatSdk'

Получение id

Перейдите в раздел «Online чат - Ваш сайт - Настройки - Установка» и скопируйте значение переменной id.

Пример использования

Добавьте свой ViewController с суперклассом ChatController.

class MyController: ChatController {
    
    override func viewDidLoad() {
        super.viewDidLoad()
        load("<Ваш id>", "<Домен вашего сайта>")
    }
}

Так же при загрузке можно указать language, clientId и apiToken.

load(
    "<Ваш id>", 
    "<Домен вашего сайта>",
    "en",
    "newClientId",
    "<Токен для доступа к Rest Api>",
    "showCloseButton",
    "css"
)

События

  • operatorSendMessage - оператор отправил сообщение посетителю.
  • clientSendMessage - посетитель отправил сообщение оператору.
  • clientMakeSubscribe - посетитель заполнил форму.
  • contactsUpdated - посетитель обновил информацию о себе.
  • sendRate - посетитель отправил новый отзыв.
  • clientId - уникальный идентификатор посетителя.

Для каждого события есть персональный обработчик.

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) {

}

Или можно задать один обработчик на все события.

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 - получение контактных данных.
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 или добавьте новый.

Получение новых сообщений от оператора

Для получения новых сообщений, в ChatController есть два статичных метода getUnreadedMessages и getNewMessages.

getUnreadedMessages - возвращает все непрочитанные сообщения.

getNewMessages работает аналогичным образом, но при повторном запросе предыдущие сообщения уже не возвращаются.

Перед использование методов, нужно указать apiToken.

ChatController.getUnreadedMessages { data in }
ChatController.getNewMessages { data in }

Формат data аналогичен ответу метода /chat/message/getList в Rest Api.

Подробное описание можно прочесть в разделе «Интеграция и API - REST API - Инструкции по подключению».

License

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