События SDK
События чата
Для отслеживания событий чата, необходимо подписаться на поток messagingEventsStream()
Task {@MainActor in
let events = await ChatHDE.shared.messagingEventsStream()
for await event in events {
...
}
}
События чата включают в себя:
initWidget- Инициирующее сообщение, содержит информацию о чате, пользователе и др.newMessage- Новое сообщение пользователя или агентаprependMessages- Предыдущие сообщенияsetStaff- Агент был назначен (или снят) на чатstartChat- Был начат новый чат (после ввода данных пользователя в тикете и нажатия кнопки отправки)ticketCreated- Тикет был созданstartVisitorChat- Старт нового чата (после ввода данных пользователя в тикете и нажатия кнопки отправки)loadTicket- Пользователь запросил загрузку предыдущих сообщений тикетаvisitorIsTyping- Пользователь вводит текст сообщенияloadingMessage- Сообщение отправлено но еще не подтверждено сервером
Пример:
Task {@MainActor in
let events = await ChatHDE.shared.messagingEventsStream()
for await event in events {
if case .initWidget(let resp) = event {
print("Init widget")
}
}
}
Соединение с сервером
Для отслеживания состояния соединения, необходимо подписаться на свойство connectionState
Task {@MainActor in
let stream = await ChatHDE.shared.connectionState()
for await state in stream {
...
}
}
Состояния соединения включают в себя:
neverConnected- Еще ни разу не был вызван connect()disconnected- Ранее было соединение, но сейчас нетconnecting- Идет подключениеconnected- Соединение установленоerror- Ошибка подключения
Пример:
Task {@MainActor in
let stream = await ChatHDE.shared.connectionState()
for await state in stream {
if case .connected = state {
print("Connected")
}
}
}