Перейти к основному содержимому
Версия: 5.8.2

Пользовательские сценарии (flow)

Являются способом расширенной настройки интерфейса и позволяют точечно настроить необходимый экран и его элементы.

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

Например, кнопка с иконкой используется в нескольких местах, но таким способом можно поменять её фон только в конкретном месте.

Пример настройки:

// Создание компонентов дизайн системы
let components = ChatComponents()

// Создание темы из компонентов
let theme = ChatTheme(components: components)

// Получение настроек экрана чата
let chatFlow = theme.flows.chatFlow
chatFlow.incomeMessages.showAvatar = true
chatFlow.outcomeMessages.showAvatar = false

// Получение настроек экрана поиска
let searchFlow = theme.flows.searchFlow
searchFlow.searchMessageStyle.matchTextStyle.color = .red

В SDK можно настроить два пользовательских сценария (экрана). Оба наследуют общие свойства:

  • backgroundColor: UIColor — цвет фона экрана.
  • navigationBarStyle: NavigationBarStyle — стиль навигационной панели.

Чат

Экран чата является основным экраном SDK и содержит в себе его основные компоненты: список сообщений и панель ввода.

Отображение входа (загрузки данных, необходимых для работы):

Загрузка чата

Отображение пустого чата:

Пустой чат

Отображение ошибки при получении данных:

Отображение ошибки

Отображение сообщений:

Отображение сообщений

Поиск сообщений

Экран поиска — вспомогательный экран, необходимый для поиска сообщений в чате и их отображения.

Он открывается по нажатию на иконку поиска в панели навигации (отображение включается в ChatConfig) и включает несколько состояний:

Отображение при открытии:

Поиск сообщений

Отображение пустых результатов поиска:

Результаты не найдены

Отображение результатов поиска:

Результаты поиска

Примеры настройки SearchFlow

let searchFlow = theme.flows.searchFlow

// Цвет выделения совпадений в результатах поиска
searchFlow.searchMessageStyle.matchTextStyle.color = UIColor(named: "BrandColor") ?? .systemOrange

// Шрифт выделения
searchFlow.searchMessageStyle.matchTextStyle.font = .systemFont(ofSize: 14, weight: .bold)

// Навигационная панель экрана поиска
searchFlow.navigationBarStyle.apply { nav in
nav.titleTextStyle.color = .white
nav.backgroundColor = UIColor(named: "BrandColor") ?? .systemBlue
nav.backButtonColor = .white
}

// Кнопка «Отмена» в поисковой строке
searchFlow.navigationBarStyle.searchBarStyle.cancelButtonStyle.tintColor = .white

// Текст при отсутствии результатов
searchFlow.notFoundTextStyle = ChatTextStyle(
font: .systemFont(ofSize: 15),
color: .secondaryLabel
)

// Фон экрана поиска
searchFlow.backgroundColor = .systemBackground

Полный перечень экранов (User Flow в Figma)

На странице User Flow в Figma представлены все возможные состояния интерфейса чата. Ниже перечислены основные экраны и их соответствие элементам SDK:

Запуск и загрузка

Запуск чатаПустая история
Экран (Figma)ОписаниеНастройка SDK
StartingИнициализация чата, FaceID, спиннерloadingChatStyle, loadingIndicatorStyle
Empty HistoryПустой чат без сообщенийchatPlaceholderStyle
Load PrehistoryЗагрузка истории сообщенийloadingIndicatorStyle

Ошибки

Ошибка первого подключения
Экран (Figma)ОписаниеНастройка SDK
Error first connectionОшибка первого подключения (с кнопкой повтора)errorPlaceholderStyle
Error connectionПотеря связи в процессе работыerrorPlaceholderStyle
Error Load PrehistoryОшибка загрузки историиerrorPlaceholderStyle, ToastAlertStyle

Сообщения

Бот с кнопками выбора
Экран (Figma)ОписаниеНастройка SDK
First MessageПервое сообщение в чатеchatFlow.outcomeMessages
Bot AskСообщение от бота с кнопкамиchatFlow.systemMessages, QuickReplyStyle
Agents is DownОператор недоступен (Snooze)ScheduleChatMessageStyle

Фото и файлы

Экран (Figma)ОписаниеНастройка SDK
Send Photo MessageОтправка фото в чатImageChatMessageStyle
View PhotoПолноэкранный просмотр фотоВстроенный просмотрщик
Photo Panopticum SizeРазмеры фото в лентеImageChatMessageStyle
Photo Send StateСостояния отправки фотоProgressViewStyle, статусы в ChatMessageStyle
File Send StateСостояния отправки файлаFileChatMessageStyle, ProgressViewStyle

Голосовые сообщения

Запись голосового сообщения
Экран (Figma)ОписаниеНастройка SDK
Voice RecordingЗапись голосового сообщенияChatInputVoiceStyle
Voice Recorded DoneЗапись завершенаChatInputVoiceStyle
Listen Voice RecordПрослушивание записиAudioPlayerStyle
Voice Message Send StateОтправка голосового сообщенияAudioChatMessageStyle
Voice Message Transcribe to TextРасшифровка голоса в текстAudioChatMessageStyle

Контекстные меню

Контекстное меню сообщения
Экран (Figma)ОписаниеНастройка SDK
Self Message Context menuКонтекстное меню своего сообщения (копировать, цитировать, удалить)menuCopyImage, menuQuoteImage в ChatImages
Agent Message Context menuКонтекстное меню сообщения оператораАналогично
Self Photo / Doc Context menuМеню для фото и документовАналогично
Agent Photo / Doc Context menuМеню для фото/файлов оператораАналогично

Цитирование

Экран (Figma)ОписаниеНастройка SDK
Self Cite Text / Photo / Doc InputВвод цитаты на своё сообщениеChatInputQuoteStyle
Agent Cite Text / Photo InputВвод цитаты на сообщение оператораChatInputQuoteStyle
Cite all kindsОтображение цитат всех типов в лентеQuoteStyle

Навигация и скролл

Экран (Figma)ОписаниеНастройка SDK
Fast travel to new messageКнопка перехода к новым сообщениямScrollToMessageButtonStyle
Client is DownКлиент внизу спискаScrollToMessageButtonStyle.alwaysShow

Оценка и опросы

Оценка треда
Экран (Figma)ОписаниеНастройка SDK
Thread Rating AskЗапрос оценки тредаSurveyChatMessageStyle
Thread Rating in ActionПроцесс оценкиSurveyChatMessageStyle, ChatSurveyIcon
End RatingЗавершение оценкиSurveyChatMessageStyle