Классы Чата

Все классы актуальны для версии 4.7.0.

Иерархия сообщений

Сообщение описывается двумя пересекающимися иерархиями: по типу содержимого (UsedeskMessage) и по отправителю (UsedeskMessageOwner). Конкретный класс сообщения реализует по одному интерфейсу из каждой.

sealed interface UsedeskMessage {
    val id: String
    val createdAt: Calendar

    sealed interface Text : UsedeskMessage {
        val text: String
        val convertedText: String
    }

    sealed interface File : UsedeskMessage {
        val file: UsedeskFile
    }
}

sealed interface UsedeskMessageOwner {
    sealed interface Agent : UsedeskMessageOwner {
        val name: String
        val avatar: String
    }

    sealed interface Client : UsedeskMessageOwner {
        val status: Status
        val localId: String

        enum class Status {
            SENDING,
            SUCCESSFULLY_SENT,
            SEND_FAILED
        }
    }
}


Класс конфигурации Чата — UsedeskChatConfiguration : Parcelable
Название Тип Описание
urlChat String Адрес сервера чата
urlChatApi String Адрес API чата
companyId String Идентификатор компании
channelId String Идентификатор канала
messagesPageSize Int Количество сообщений в одной странице загрузки
clientId String Идентификатор клиента
clientToken String? Токен клиента
clientEmail String? Email клиента
clientName String? Имя клиента
clientNote String? Заметка о клиенте
clientPhoneNumber Long? Телефон клиента
clientAdditionalId String? Дополнительный идентификатор клиента
clientInitMessage String? Первое сообщение, отправляемое при инициализации чата
clientAvatar String? Аватар клиента
cacheMessagesWithFile Boolean Кэшировать ли неотправленные сообщения с файлами
additionalFields Map<Long, String> Дополнительные поля
additionalNestedFields List<Map<Long, String>> Дополнительные вложенные поля


Класс текстового сообщения агента — UsedeskMessageAgentText : UsedeskMessage.Text, UsedeskMessageOwner.Agent
Название Тип Описание
id String Идентификатор сообщения
createdAt Calendar Время создания
text String Исходный текст сообщения
convertedText String Текст, подготовленный к отображению
name String Имя агента
avatar String Ссылка на аватар агента
buttons List<Button> Кнопки в сообщении
fieldsInfo List<FieldInfo> Поля формы в сообщении
rating UsedeskRating? Оценка сообщения. null, если сообщение оценивать нельзя

UsedeskMessageAgentText.Button

Название Тип Описание
name String Подпись кнопки
url String Ссылка
type String Тип кнопки

UsedeskMessageAgentText.FieldInfo

Название Тип Описание
id String Идентификатор поля
name String Название поля
required Boolean Обязательно ли к заполнению


Класс оценки — UsedeskRating

Добавлено в версии 4.7.0

Приходит с сервера вместе с сообщением агента, на клиенте не конструируется. Идентификатор выбранного варианта передаётся в метод sendRating.

Название Тип Описание
appearance Appearance Вид оценки
options List<Option> Варианты оценки в порядке отображения
selectedId String? Идентификатор уже выставленной оценки. null — сообщение ещё не оценено

UsedeskRating.Option

Название Тип Описание
id String Идентификатор варианта. Именно его передают в sendRating
label String Подпись варианта
data String Значение, которое уходит на сервер. По умолчанию равно id
reaction Reaction? LIKE или DISLIKE для реакций, null для остальных вариантов

UsedeskRating.Appearance

Значение Описание
REACTIONS Оценка двумя реакциями: лайк и дизлайк
STARS Оценка звёздами — по одной на каждый вариант из options

UsedeskRating.Option.Reaction

Значение Описание
LIKE Положительная реакция
DISLIKE Отрицательная реакция


Сообщения агента с файлом

Классы UsedeskMessageAgentFile, UsedeskMessageAgentImage, UsedeskMessageAgentVideo и UsedeskMessageAgentAudio реализуют UsedeskMessage.File, UsedeskMessageOwner.Agent и имеют одинаковый набор полей.

Название Тип Описание
id String Идентификатор сообщения
createdAt Calendar Время создания
file UsedeskFile Файл
name String Имя агента
avatar String Ссылка на аватар агента


Класс текстового сообщения клиента — UsedeskMessageClientText : UsedeskMessage.Text, UsedeskMessageOwner.Client
Название Тип Описание
id String Идентификатор сообщения
createdAt Calendar Время создания
text String Исходный текст сообщения
convertedText String Текст, подготовленный к отображению
status UsedeskMessageOwner.Client.Status Статус отправки
localId String Локальный идентификатор сообщения


Сообщения клиента с файлом

Классы UsedeskMessageClientFile, UsedeskMessageClientImage, UsedeskMessageClientVideo и UsedeskMessageClientAudio реализуют UsedeskMessage.File, UsedeskMessageOwner.Client и имеют одинаковый набор полей.

Название Тип Описание
id String Идентификатор сообщения
createdAt Calendar Время создания
file UsedeskFile Файл
status UsedeskMessageOwner.Client.Status Статус отправки
localId String Локальный идентификатор сообщения

UsedeskMessageOwner.Client.Status

Значение Описание
SENDING Сообщение отправляется
SUCCESSFULLY_SENT Сообщение успешно отправлено
SEND_FAILED Отправить сообщение не удалось


Класс информации о файле на устройстве — UsedeskFileInfo
Название Тип Описание
uri Uri Адрес файла на устройстве
type String MIME-тип файла
name String Имя файла


Класс информации о файле на сервере — UsedeskFile : Parcelable
Название Тип Описание
content String Ссылка на файл
type String MIME-тип файла
size String Размер файла
name String Имя файла


Класс черновика сообщения — UsedeskMessageDraft
Название Тип Описание
text String Текст черновика
files List<UsedeskFileInfo> Прикреплённые файлы


Класс формы обратной связи — UsedeskOfflineForm
Название Тип Описание
clientName String Имя клиента
clientEmail String Email клиента
topic String Тема обращения
fields List<Field> Заполненные дополнительные поля
message String Текст обращения

UsedeskOfflineForm.Field

Название Тип Описание
key String Ключ поля
title String Название поля
value String Значение поля


Класс настроек Формы Обратной Связи — UsedeskOfflineFormSettings
Название Тип Описание
noOperators Boolean Нет операторов на линии
workType WorkType Режим работы формы
callbackTitle String Заголовок формы
callbackGreeting String Приветственный текст формы
fields List<CustomField> Дополнительные поля
topics List<String> Список тем обращения
topicsTitle String Заголовок списка тем
topicsRequired Boolean Обязателен ли выбор темы

UsedeskOfflineFormSettings.CustomField

Название Тип Описание
key String Ключ поля
required Boolean Обязательно ли к заполнению
checked Boolean Включено ли поле
placeholder String Подсказка в поле

UsedeskOfflineFormSettings.WorkType

Значение Описание
NEVER Форма не показывается
CHECK_WORKING_TIMES Форма показывается в нерабочее время
ALWAYS_ENABLED_CALLBACK_WITHOUT_CHAT Всегда показывается форма, без чата
ALWAYS_ENABLED_CALLBACK_WITH_CHAT Всегда показывается форма, вместе с чатом


Класс состояния подключения — UsedeskConnectionState
Значение Описание
NONE Подключение не устанавливалось
CONNECTING Подключение устанавливается
RECONNECTING Переподключение
CONNECTED Подключение установлено
DISCONNECTED Подключение разорвано


Интерфейс слушателя событий — UsedeskActionListener
fun onModel(
    model: UsedeskChat.Model,
    newMessages: List<UsedeskMessage>,
    updatedMessages: List<UsedeskMessage>,
    removedMessages: List<UsedeskMessage>
)

fun onModelUpdated(
    oldModel: UsedeskChat.Model?,
    newModel: UsedeskChat.Model
)

fun onException(usedeskException: Exception)

Все методы имеют реализацию по умолчанию — переопределяйте только нужные.