Skip to main content

Обработчики

Общее

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 - кнопка-ссылка. При нажатии открывает браузер с адресом из value
  • ButtonTypes.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"
)