Webim Mobile SDK 2.0 для интеграции в мобильные приложения

Компания ВЕБИМ.РУ объявляет о выходе версии 2.0 библиотеки Webim Mobile SDK.

Этот набор инструментов предоставляет разработчикам мобильных приложений на платформах Apple iOS, Google Android и Windows Phone средства для интеграции функциональности сервиса онлайн-консультанта Webim.

Завершены испытания библиотеки нашими специалистами и волонтёрами, исправлены ошибки, добавлено многое из того, что Интернет-сообщество предложило улучшить и добавить.

Отдельно хочется отметить добавление в этой версии SDK набора средств для Microsoft Windows Phone 8.1, а также поддержку оффлайн-обращений во всех ветках.

Основная задача Webim Mobile SDK - возможность интегрировать в стороннее мобильное приложение интерфейса для онлайн и оффлайн чата между внешними пользователями приложения и сотрудниками организации-разработчика мобильного приложения (операторами).

Интеграция в Apple iOS

iOS

Интеграция в Google Android

Android

Интеграция в Windows Phone 8.1

win phone 8

Регистрация и получение идентификатора компании осуществляются в общем порядке регистрации на сайте https://webim.ru, а добавление операторов и редактирование настроек - в стандартном административном интерфейсе, личном кабинете сервиса Webim.

Библиотека включает в себя несколько программных интерфейсов (API), которые сосредоточены в классе WMSession, который через механизм делегирования оповещает об изменении состояния чата.

Если Вы хотите интегрировать в Ваше мобильное приложение опцию чата с конечным пользователем, отправьте своим разработчикам ссылку на данную страницу.

Пример того, как в приложение на платформе iOS может быть интегрирован чат Webim:

 

Пример чата со стороны пользователя iPhone:
Документация сервиса Webim

 

 

Пример чата со стороны оператора, отвечающего этому пользователю:
Документация сервиса Webim

 

 


 

Функциональность сервиса Webim, доступная через Webim Mobile SDK 2.0

  • Онлайн и оффлайн чат между внешними пользователями и операторами;
  • для пользователя отображается онлайн или оффлайн кнопка;
  • если операторы есть в онлайне, отображается онлайн кнопка, при нажатии сразу открывается чат;
  • если операторов в онлайне нет, отображается оффлайн-кнопка;
  • окно чата, встроенное в основное окно приложения;
  • посетитель может закрыть чат;
  • оператор может закрыть чат;
  • поддерживаются размещения;
  • поддерживаются отделы;
  • поддерживается история диалогов;
  • поддерживается фотография оператора.

 


 

Особенности и ограничения

  • Если приложение закрылось полностью, то чат все равно должен считаться открытым пока он не был закрыт оператором или посетителем;
  • идентификатор пользователя генерируется на стороне клиента при первом использовании библиотеки;
  • пользователь приложения может вести один диалог одновременно;
  • передача данных осуществляется по протоколу HTTPS;
  • для одного приложения регистрируется один идентификатор;
  • пользовательский интерфейс делается на строне разработчика приложения, а не поставщика библиотеки.

 


 

Контроллер чата

Использование библиотеки осуществляется через объект контроллера чата.

Делегаты:

  • получено сообщение (сообщение, тип - сообщение оператора, посетителя, файл, системное сообщение, запрос контактов)
  • появился или сменился оператор (имя, фото)
  • полное обновление информации о чате, (история, текущий оператор) - будет вызываться после запуска приложения если уже шел чат, также может иногда вызываться при технологической необходимости по решению сервера
  • обработчик непредвиденных ошибок и ошибок связанный с необходимостью обновить приложение

Методы:

  • инициировать чат
  • отправка сообщения
  • загрузить предыдущие диалоги
  • закрыть диалог
  • запросить статус онлайновости
  • принудительно обновить состояние чата в качестве делегата будет использоваться "полное обновление информации о чате" либо "получено сообщение" "сменился оператор"

Для каждого из них нужен делегат для асинхронной обработки результата - успех или нет.

Пример вызова контроллера чата:

WebimChat chat = new WebimChat("account_name", "location", gotMessageDelegate, gotOperatorDelegate, 
          fullUpdateDelegate, errorDelegate, WebimChat.INFO /* logging level */);

 


 

Инструкция по подключению библиотеки

  1. Загрузите файлы библиотеки на локальный диск.
  2. Откройте проект в XCode.
  3. Добавьте файлы библиотеки: заголовочные и файл libWebimClientLibrary-ХХ.a. Для этого
    скопируйте в проект файлы SDK из директории, в которую Вы их загрузили, например, с помощью пункта меню Xcode > File > Add files.
  4. установите флаг -ObjC для Other Linker Flags для Target в настройках проекта в Build Settings.
  5. Включите необходимые заголовочные файлы библиотеки в файлах имплементации, где предполагается использовать классы библиотеки.

 


 

Порядок работы

Для того, чтобы начать работать с чатом, необходимо инициализировать объект сессии и выставить ему делегата. Делегатом может быть любой конроллер, который будет управлять отображаемыми видами и следить за изменением состояния сессии. Делегат должен следовать протоколу WMSessionDelegate, описанному в файле WMSession.h. Кроме выбора делегата необходимо определиться с так называемой "локацией" и "аккаунтом" в домене сервиса. Объект сессии работает только с одной выбранной локацией.

Сессия инициализируется методом:

- (id)initWithAccountName:(NSString *)accountName location:(NSString *)location delegate:(id)delegate;

Для начала чата необходимо стартовать сессию методом:

- (void)startSession;

При успешном старте сессии на делегате вызовется метод

- (void)sessionDidReceiveFullUpdate:(WMSession *)session;

Что в общем случае означает то, что внутренние данные сессии, такие как состояние, чат, оператор, могли измениться. После перого вызова этого метода можно анализировать состояние сессии и работать с чатом.

При первом запуске чат скорее всего не будет инициализирован, то есть session.chat == nil или session.chat.state == WMChatStateUnknown. Однако при повторной инициализации чат уже (ещё) может существовать, если это так, то необходимо отобразить этот чат. Он уже будет содержать сообщения.

Объект WMChat имеет несколько состояний, которые важны для определения необходимости отображать этот чат пользователю.

typedef enum {
    WMChatStateUnknown,
    WMChatStateQueue,
    WMChatStateChatting,
    WMChatStateClosed,
    WMChatStateClosedByVisitor,
    WMChatStateClosedByOperator,
    WMChatStateIdle,
} WMChatState;

Если чат существует и находится в одном из состояний WMChatStateQueue, WMChatStateChatting или WMChatStateClosedByOperator, то его необходимо отобразить пользователю. Если на делегате вызывается один из методов об изменении чата, то при изменении состояния на любое другое - чат должен закрыться. Обращения к такому чату (посылка сообщений, закрытие) будут возвращать ошибку.

Перед началом чата необходимо убедиться в наличии операторов онлайн. Это можно узнать вызвав метод session.hasOnlineOperator.

Если чат не существует, то его можно инициировать методом сессии:

- (void)startChat;

Если вызов этого метода будет удачным, то на делегате вызовутся методы:

- (void)session:(WMSession *)session didStartChat:(WMChat *)chat;
- (void)sessionDidChangeChatStatus:(WMSession *)session;

Для закрытия чата вызывается парный метод:

- (void)closeChat;

аналогичным образом влияет на делегат и состояние сессии и чата

Инициированный чат содержит указатель на массив сообщений, принадлежащих этому чату. Каждое из сообщений имеет тип, описанный в WMMessage.h. Условно они делятся на три типа: сообщения от посетителя, от оператора и системные сообщения.

Для отправки сообщения от пользователя необходимо вызвать метод у сессии:

- (void)sendMessage:(NSString *)message;

Реакцией на успешную доставку сообщения, так же как и на появления системного или операторского сообщения будет вызов на делегате метода:

- (void)session:(WMSession *)session didReceiveMessage:(WMMessage *)message;

Для сообщений типа WMMessageKindFileFromOperator можно загрузить соответствующий файл по ссылке, которую можно получить через объект сессии методом:

- (NSURL *)urlForFileFromMessage:(WMMessage *)message;

При необходимости дать пользователю обновить чат, у сессии можно вызвать метод:

- (void)refreshSessionWithCompletionBlock:(void (^)(void))block;

принимает параметром блок, который исполнится после выполения запроса обновления

Для отслеживания ошибок при работе с чатом необходимо на делегате имплементировать метод протокола:

- (void)session:(WMSession *)session didReceiveError:(WMSessionError)errorID;

возвращает номер ошибки из перечисления WMSessionError
 


Вернуться к главной странице документации