Обработчики
Общее
SDK позволяет настроить собственное поведение для следующих действий:
- отправка сообщения (
clickSendAction) - нажатие на файл в сообщении - (
clickFileAction) - нажатие на изображение в сообщении - (
clickImageAction) - нажатие на кнопку в сообщении - (
clickChatButtonAction) - нажатие на кнопку с неизветсным типом в сообщении - (
clickChatButtonCustomTypesAction)
Пример:
ChatHDE.shared.clickSendAction = {text in
print("Message: \(text)")
Task {
await ChatHDE.shared.sendMessage(VisitorMessage(text: text))
}
}
Кнопки
Для хранения данных кнопки используется класс ChatButton, состоящий из:
text- текст, отображаемый на кнопкеtype- тип кнопкиvalue- значение кнопки (например, URL или идентификатор)hideButtons- скрывать ли набор кнопок сообщения после нажатия
Стандартный набор типов кнопок:
ButtonTypes.text- текстовая кнопка. При нажатии отправляет сообщение с текстом кнопки от имени пользователяButtonTypes.url- кнопка-ссылка. При нажатии открывает браузер с адресом изvalueButtonTypes.hash- по умолчанию не установлен обработчик, предполагается переопределение обработчика для нее со стороны приложения
ChatButton(
text: "Example",
type: ButtonTypes.url,
value: "https://example.com"
)
Тип кнопки задаётся строкой. Можно использовать произвольные значения и реализовать собственную обработку:
ChatHDE.shared.clickChatButtonAction.on(ButtonTypes.hash) {button in
switch button.value {
case "ID_143": print("Выбран заказ №143")
case "ID_252": print("Выбран заказ №252")
default: break
}
}
Файлы
Для передачи информации о файле используются классы FileDataText и FileDataImage:
name- название файла, отображается в сообщенииlink- URL ссылка на файл
Пример:
FileDataText(
name: "Text Document",
link: "https://example.com/text-document.html"
)
Изображения
Для передачи информации об изображениях используется класс FileData.Image:
name- название изображения, передается сервером, но не отображается в сообщенииlink- URL ссылка на изображениеthumb- URL ссылка на сжатое изображение для превью
Пример:
FileDataImage(
name: "image123",
link: "https://example.com/image123/full",
thumb: "https://example.com/image123/preview"
)