Skip to main content

События 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")
}
}
}