Обработчики
Общее
SDK позволяет настроить собственное поведение для следующих действий:
- отправка сообщения (
onClickSendMessage) - нажатие на кнопку в сообщении - (
chatButtonsActions) - старт нового чата (
onStartVisitorChat)
Если требуется изменить поведение, можно переопределить обработчик и при необходимости вызвать стандартное действие внутри него:
ChatView(
...
onClickSendMessage = { message ->
ChatHDE.sendMessage(message)
println("Сообщение отправлено")
}
)
Кнопки
Для хранения данных кнопки используется класс ChatButton, состоящий из:
text- текст, отображаемый на кнопкеtype- тип кнопкиvalue- значение кнопки (например, URL или идентификатор)hideButtons- скрывать ли набор кнопок сообщения после нажатия
Стандартный набор типов кнопок:
ButtonTypes.TEXT- текстовая кнопка. При нажатии отправляет сообщение с текстом кнопки от имени пользователяButtonTypes.URL- кнопка-ссылка. При нажатии открывает браузер с адресом изvalueButtonTypes.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"
}