LiveTex SDK. Стартовая документация

LiveTex SDK предоставляет инструментарий для организации консультирования пользователей мобильных приложений.

Использование функционала Livetex SDK в мобильном приложении возможно двумя способами:

Функциональность:

Документация API:

Документация LivetexKit (готовый графический интерфейс):

Demo-приложение:

Установка Demo-приложения:

Get it on Google Play Get it on AppStore

С чего начать?

Шаг 1. Создание аккаунта

Регистрируемся в системе Livetex, добавляем оператора и сайт.

Шаг 2. Получение ключа разработчика.

Запрашиваем ключ разработчика. В письме необходимо указать идентификатор аккаунта в системе Livetex. Идентификатор аккаунта в системе можно посмотреть в личном кабинете в выпадающем списке при нажатии на профиль администратора (верхний правый угол).

Шаг 3. Добавление библиотеки SDK к проекту

Пример добавления библиотеки SDK к проекту можно найти в репозитории с demo-приложением.

Бинарные пакеты библиотек доступны в публичных репозиториях.

Для Android проекта c Gradle cборкой.

Для Windows phone.

Ссылка на пакет для windows phone: https://www.nuget.org/packages/LiveTex.SDK/

Шаг 4. Разработка обработчиков оповещений от сервера

Livetex SDK предоставляет возможность мгновенного оповещения о новых событиях от сервера. Новые события могут влиять на отображение информации пользователю приложения. Livetex SDK требует от разработчика реализации обработчика оповещений от сервера. Детали интерфейса обработчика можно найти по ссылкам:

Пример обработчика оповещений на Java с функциональностью открытия диалога и отсылки сообщения.

// Обработчик инициализации.
class CustomInitHandler implements IInitHandler {

  private Livetex sdk;

  CustomInitHandler(Livetex livetex) {
    sdk = livetex;
  }

  // В случае успешной инициализации сохраняем переданный токен и создаем обращение.
  public void onSuccess(String token) {
    saveTokenToCustomClientStorage(token);
    sdk.request(new AHandler<State>());
  }
}

class CustomNotificationHandler implements INotificationHandler {

  private Livetex sdk;

  CustomNotificationHandler(Livetex livetex) {
    sdk = livetex;
  }

  ...

  // При назначении оператора для диалога отправляем приветственное сообщение.
  public void updateDialogState(DialogState state) {
    if (state.isSetEmployee()) {
      sdk.sendTextMessage("Hello", new AHandler<TextMessage>());
    }
  }

  // Логируем сообщения оператора.
  public void receiveTextMessage(TextMessage message) {
    System.out.println(message.getText());
  }
  ...
}

Пример обработчика оповещений на Objective-C с функциональностью открытия диалога и отсылки сообщения.

@interface LTCustomNotificationDelegate : NSObject  <LTMobileSDKNotificationHandlerProtocol>
@property(nonatomic, copy) void (^callBack) (id data);
@end

...

@implementation LTCustomNotificationDelegate

// Обработка изменения состояния.
- (void) updateDialogState: (LTDialogState *) state
{
    // Проверяем назначен ли оператор для диалога.
    if (state.employee != nil) {
      // Отправляем сообщение.
      [sdk sendMessage:@"Hello" success:^(LTTextMessage *message) {
        ...
      } failure:^(NSException *chatExeption) {
        ...
      }];
    }
}

// Обработка нового сообщения от оператора.
- (void) receiveTextMessage: (LTTextMessage *) message
{
    NSLog(message.text);
}
@end

Пример обработчика оповещений на C# с функциональностью открытия диалога и отсылки сообщения.

public class CustomNotificationHandler: ILiveTexEventsHandler {

    private LiveTexClient client;

    public CustomNotificationHandler(LiveTexClient client) {
        client = client;
    }

    ...

    public ILiveTexEventsHandler.UpdateDialogState(DialogState dialogState) {
        if (dialogState.Employee != null) {
            Task<TextMessage> messageTask = SendTextMessageAsync("Hello, Employee!");
            TextMessage message = await messageTask;
        }
    }

    public ILiveTexEventsHandler.ReceiveTextMessage(TextMessage message) {
        Console.Write(message.Text);
    }

    ...
}

Шаг 5. Инициализация SDK

Пример инициализации Android SDK в основном потоке приложения.

// URL сервиса аутентификации, получен на втором шаге данного гайда.
string url = "http://authentication-service-sdk-production-1.livetex.ru";

// Ключ SDK для аутентификации кодовой базы клиент, получен на втором шаге данного гайда.
string key = "NEVER_SHOW_THIS_KEY_TO_STRANGERS";

// Идентификатор приложения клиента - это идентификатор сайта, который можно 
// получить в личном кабинете.
string application = "10001350";

// Список возможностей реализованных в клиентском приложении.
List<Capabilities> capabilities = new ArrayList<Capabilities>();

// Клиентское приложение умеет вести диалог.
capabilities.add(Capabilities.CHAT);

// Клиентское приложение умеет принимать файлы.
capabilities.add(Capabilities.FILES_RECEIVE);

// Получение токена аутентификации из персистентного хранилища клиента SDK.
// Реализуется на усмотрение разработчика. На этапе инициализации SDK можно
// указать уникальный токен для идентификации клиента и восстановления 
// истории переписки. Если токен указан не будет система создаст нового 
// клиента.    
String token = getTokenFromCustomClientStorage();

Builder builder = new Builder(context, key, application);
builder.addCapabilities(capabilities);
builder.addToken(token);
builder.addUrl(url);

Livetex livetex = new builder.build();

// Обработчик инициализации SDK реализуется разработчиком.
CustomInitHandler initHandler = new CustomInitHandler(livetex);
// Обработчик оповещений от сервера реализуется разработчиком.
CustomNotificationHandler notificationHandler = new CustomNotificationHandler(livetex);

livetex.init(initHandler, notificationHandler);

Пример инициализации iOS SDK в основном потоке приложения.

LTMobileSDKInitializationParams *params = [LTMobileSDKInitializationParams new];

// URL сервиса аутентификации, получен на втором шаге данного гайда.
params.livetexUrl = @"http://authentication-service-sdk-production-1.livetex.ru";

// Ключ SDK для аутентификации кодовой базы клиент, получен на втором шаге данного гайда.
params.sdkKey = @"NEVER_SHOW_THIS_KEY_TO_STRANGERS";


// Идентификатор приложения клиента - это идентификатор сайта, который можно 
// получить в личном кабинете.
params.applicationId = @"10001350";

LTMobileSDK *sdk = [[LTMobileSDK alloc] initWithParams:params];

// Инициализация кастомного обработчика оповещений.
LTCustomNotificationDelegate *delegate = [LTCustomNotificationDelegate new];
sdk.delegate = delegate;

// Инициализация SDK.
[sdk runWithSuccess:^(NSString *token) {

    // Запрос диалога с любым оператором.
    [sdk requestWithSuccess:^(LTDialogState *state) {
        //...
    } failure:^(NSException *chatExeption) {
        //...
    }];

} failure:^(NSException *exception) {
    // ...
}];

Пример инициализации Windows Phone SDK в основном потоке приложения.

// Ключ разработчика Livetex SDK.
string key = "NEVER_SHOW_THIS_KEY_TO_STRANGERS";

// Идентификатор приложения.
string applicationID = "10001350";

// URL сервиса аутентификации.
string authServerUri = "http://authentication-service-sdk-production-1.livetex.ru"


var factory = new LiveTexClientFactory(key, applicationID, new Uri(authServerUri));
LiveTexClient livetexClient = await factory.CreateAsync(Token, Capabilities.Chat, Capabilities.FilesReceive);
CustomNotificationHandler handler = CustomNotificationHandler(livetexClient);

Token = liveTexClient.GetToken();

livetexClient.SubscribeToEvents(handler);

Task<DialogState> request = client.RequestDialogAsync();
DialogState state = await request;

Описанный выше пример позволяет реализовать следующий сценарий:

  1. Пользователь инициализирует SDK (вызов init).
  2. При успешной инициализации SDK выполняется соответствующий обработчик (вызов onSuccess).
  3. Тело обработчика успешной инициализации запрашивает диалог с оператором (вызов request).
  4. Обработчик оповещений дожидается события назначения оператора для диалога (вызов updateDialogState).
  5. Если оператор для диалога назначен отправляем сообщение (вызов sendTextMessage).
  6. Сообщения принимаемые от оператора логируются (вызов receiveTextMessage).