Skip to main content

Обработчики

Общее

SDK позволяет настроить собственное поведение для следующих действий:

  • отправка сообщения (onClickSendMessage)
  • нажатие на кнопку в сообщении - (chatButtonsActions)
  • старт нового чата (onStartVisitorChat)

Если требуется изменить поведение, можно переопределить обработчик и при необходимости вызвать стандартное действие внутри него:

ChatView(
...
onClickSendMessage = { message ->
ChatHDE.sendMessage(message)
println("Сообщение отправлено")
}
)

Кнопки

Для хранения данных кнопки используется класс ChatButton, состоящий из:

  • text - текст, отображаемый на кнопке
  • type - тип кнопки
  • value - значение кнопки (например, URL или идентификатор)
  • hideButtons - скрывать ли набор кнопок сообщения после нажатия

Стандартный набор типов кнопок:

  • ButtonTypes.TEXT - текстовая кнопка. При нажатии отправляет сообщение с текстом кнопки от имени пользователя
  • ButtonTypes.URL - кнопка-ссылка. При нажатии открывает браузер с адресом из value
  • ButtonTypes.hash - по умолчанию не установлен обработчик, предполагается переопределение обработчика для нее со стороны приложения
ChatButton(
text = "Example",
type = ButtonTypes.URL,
value = "https://example.com"
)

Можно реализовать собственную обработку нажатия кнопки определенного типа:

val chatButtonsActions = remember { ChatButtonActions() }
chatButtonsActions.on(ButtonTypes.HASH) {btn ->
when (btn.value) {
"ID_143" -> { println("Выбран заказ №143") }
"ID_252" -> { println("Выбран заказ №252") }
}
}
...
ChatView(
...
chatButtonsActions = chatButtonsActions
)

Файлы

Для передачи информации о файле используется класс FileData.File:

  • name - название файла, отображается в сообщении
  • link - URL ссылка на файл

Пример:

FileData.Text().apply {
name = "Text Document"
link = "https://example.com/text-document.html"
}

Изображения

Для передачи информации об изображениях используется класс FileData.Image:

  • name - название изображения, передается сервером, но не отображается в сообщении
  • link - URL ссылка на изображение
  • thumb - URL ссылка на сжатое изображение для превью

Пример:

FileData.Image(
thumb = "https://example.com/image123/preview"
).apply {
name = "image123"
link = "https://example.com/image123/full"
}