NowChatService-Klasse – iOS
Die NowChatService -Klasse bietet virtuelle Chat- und Service Desk-Mitarbeiter -Chatfunktionen.
Mit dieser Klasse können Sie Chat-Services starten und stoppen, Chat-Sitzungen starten, eine Chat-Benutzeroberfläche erstellen und ungelesene Nachrichten abonnieren bzw. abbestellen.
| Name | Beschreibung |
|---|---|
| konfigurieren | Konfigurationseinstellungen, die bei der Initialisierung des Service angegeben wurden. Datentyp: NowServiceConfiguration |
| instanceVersion | Version der zugeordneten Instanz ServiceNow, z. B. Utah oder Quebec. Datentyp: Zeichenfolge |
| networkService | Netzwerkservice, der diesem Chat-Service zugeordnet ist. Datentyp: NetworkService |
| Sitzungstyp | Typ der Sitzung. Mögliche Werte:
Datentyp: SessionType |
NowChatService – init(configuration: NowServiceConfiguration, delegierter: NowChatServiceDelegate?, coreServiceProvider: NowCoreServiceProvider? = nil)
Initialisiert eine neue NowChatService-Instanz.
| Name | Typ | Beschreibung |
|---|---|---|
| konfigurieren | NowServiceConfiguration | Konfigurationsinformationen, die für die ordnungsgemäße Initialisierung des Service erforderlich sind. |
| Delegierter | Now Chat Service Delegierter | Optional. NowChat Callback-Delegierter-Objekt, das das NowChatServiceDelegate-Protokoll implementiert. Standard: nil |
| coreServiceProvider | NowCoreServiceProvider | Optional. Objekt, das das NowCoreServiceProvider-Protokoll implementiert. Bietet Zugriff auf NowChat-Services. Standard: nil |
Das folgende Codebeispiel zeigt, wie diese Funktion aufgerufen wird.
guard let coreService = NowSDK.core() else {
// Error with NowServiceError.sdkNotConfigured
return
}
guard
let instanceUrl = URL(string: "http://sample.service-now.com"),
let serviceConfig = NowSDK.makeServiceConfiguration(for: instanceUrl) else {
// Could not create service –
// NowServiceError.serviceConfigurationInvalid
return
}
let chatService = NowChatService(configuration: serviceConfig, delegate: delegate, coreServiceProvider: coreService)
NowChatService – makeChatUI(theme: NowChatThemeable)
Erstellt einen UIViewController, der die Chat-Benutzeroberfläche hostet.
Obwohl diese Funktion die Chat-UI erstellt, müssen Sie die Chat-Sitzung dennoch initiieren, indem Sie die Funktion startChat() aufrufen. Sie sollten diesen Anruf tätigen, sobald die Chat-UI sichtbar wird. Weitere Informationen finden Sie in der zugehörigen Beispielanwendung und im Entwicklerleitfaden Mobile SDK – iOS.
| Name | Typ | Beschreibung |
|---|---|---|
| Thema | NowChatThemeable-Objekt | Themeninformationen für die zu erstellende Chat-UI. |
| Typ | Beschreibung |
|---|---|
| Objekt | Erfolg: UIViewController-Objekt, das die Konfigurationsinformationen des UI-Ansichts-Controllers enthält. Fehler: NowChatServiceError-Objekt. Mögliche Fehler:
|
Das folgende Codebeispiel zeigt, wie diese Funktion aufgerufen wird.
func makeChatScreen() -> UIViewController? {
var chatService: NowChatService?
guard let chatService = chatService else { return nil }
let result = chatService.makeChatUI(theme: CarrascoChatTheme(baseTheme: CarrascoTheme()))
switch result {
case .success(let chatViewController):
return chatViewController
case .failure(let error):
debugPrint("Chat screen creation failed with error: \(error)")
return nil
}
}
NowChatService – closed()
Fährt den Chat-Service herunter, einschließlich aller aktiven Chat-Sitzungen.
Nach dem Aufruf dieser Funktion ist der zugeordnete NowChatService inaktiv und kann nicht wiederverwendet werden. Um eine weitere Chatsitzung einzurichten, erstellen Sie eine neue NowChatService- Instanz, indem Sie die NowChat.makeChatService()- Funktion aufrufen.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| Keine |
Das folgende Codebeispiel zeigt, wie diese Funktion aufgerufen wird.
private func resetChat() {
chatService?.shutdown()
chatService = nil
initializeChatService()
viewState = makeViewState()
}
func initializeChatService() {
NowChat.makeChatService(instanceUrl: instanceUrl, delegate: self) { [weak self] result in
guard let self = self else { return }
switch result {
case .success(let service):
self.chatService = service
case .failure(let error):
debugPrint("Creating the chat service failed with error: \(error)")
}
self.viewState = self.makeViewState()
}
func makeViewState() -> ViewState {
ViewState(chatEnabled: chatService != nil,
menuItems: menuItems)
}
NowChatService – startChat(contextData: [String: Any]?)
Startet eine Chat-Sitzung.
| Name | Typ | Beschreibung |
|---|---|---|
| contextData | [Zeichenfolge: Beliebig]? | Optional. Dictionary mit Chat-Kontextvariablen, die an die Chat-Sitzung übergeben werden. Weitere Informationen zu Chat-Kontextvariablen finden Sie unter Live agent chat context variables. |
| Typ | Beschreibung |
|---|---|
| Leere oder Zeichenfolge | Erfolg: ungültig Fehler: NowChatServiceError Mögliche Fehler:
|
Das folgende Codebeispiel zeigt, wie diese Funktion aufgerufen wird, ohne Kontextvariablen zu übergeben.
chatService.startChat { [weak self] result in
if case .failure(let error) = result {
debugPrint("Chat session initialization failed with error: \(error)")
self?.resetChat()
}
}
Das folgende Codebeispiel zeigt, wie diese Funktion mit übergebenen Kontextvariablen aufgerufen wird.
chatService.startChat { [weak self] result in
let contextData = ["sys_id": "123456789", "table_name": "wm_task", "active": true] as [String: Any]
chatService.startChat(contextData: contextData) { [weak self] result in
if case .failure(let error) = result {
debugPrint("Chat session initialization failed with error: \(error)")
self?.resetChat()
}
}
}
NowChatService – startChat(contextData: [String: Any]? = nil, _ abgeschlossen: @escaping (Result<Void, NowChatServiceError> ))
Startet eine Chatsitzung und führt einen Abschlussblock aus, nachdem die Chatsitzung gestartet wurde.
| Name | Typ | Beschreibung |
|---|---|---|
| contextData | [Zeichenfolge: Beliebig]? | Optional. Dictionary mit Chat-Kontextvariablen, die an die Chat-Sitzung übergeben werden. Weitere Informationen zu Chat-Kontextvariablen finden Sie unter Live agent chat context variables. |
| Abschluss | Objekt | Abschlussblock, der nach dem Start der Chat-Sitzung ausgeführt werden soll. |
| Typ | Beschreibung |
|---|---|
| Leere oder Zeichenfolge | Rückgabewerte für den Abschlussblock:
Mögliche Fehler:
|
Das folgende Codebeispiel zeigt, wie diese Funktion ohne Kontextdaten aufgerufen wird.
func startChat() {
guard let chatService = chatService else {
debugPrint("Chat service is invalid")
viewState = makeViewState()
return
}
chatService.startChat { [weak self] result in
if case .failure(let error) = result {
debugPrint("Chat session initialization failed with error: \(error)")
self?.resetChat()
}
}
}
func makeViewState() -> ViewState {
ViewState(chatEnabled: chatService != nil,
menuItems: menuItems)
}
Das folgende Codebeispiel zeigt, wie diese Funktion mit Kontextdaten aufgerufen wird.
func startChat() {
guard let chatService = chatService else {
debugPrint("Chat service is invalid")
viewState = makeViewState()
return
}
let contextData = ["sys_id": "123456789", "table_name": "wm_task", "active": true] as [String: Any]
chatService.startChat(contextData: contextData) { [weak self] result in
if case .failure(let error) = result {
debugPrint("Chat session initialization failed with error: \(error)")
self?.resetChat()
}
}
}
func makeViewState() -> ViewState {
ViewState(chatEnabled: chatService != nil,
menuItems: menuItems)
}
NowChatService –subscribeToUnreadMessageCount(pollingInterval: TimeInterval, abgeschlossen: @escaping (Int) -> Void)
Abonniert den Listener für die Anzahl ungelesener Nachrichten.
| Name | Typ | Beschreibung |
|---|---|---|
| Abfrageintervall | Zeitintervall | Häufigkeit, mit der der Webservice nach der Anzahl der ungelesenen Chatnachrichten abgefragt werden soll. Einheit: Sekunden |
| Abschluss | @escaping (Int) -> Ungültig) | Abschluss-Handler, der aufgerufen werden soll, um die Anzahl der ungelesenen Chatnachrichten zu melden. Int: Anzahl der ungelesenen Chatnachrichten. |
| Typ | Beschreibung |
|---|---|
| Keine |
Das folgende Codebeispiel zeigt, wie diese Funktion aufgerufen wird.
…
if viewModel.isPolling {
viewModel.unsubscribeFromUnreadMessageCount()
viewState.pollingInterval = ""
} else {
viewModel.subscribeToUnreadMessageCount(pollingInterval: timeInterval)
}
…
func subscribeToUnreadMessageCount(pollingInterval: TimeInterval) {
chatService.subscribeToUnreadMessageCount(pollingInterval: pollingInterval) { [weak self] count in
self?.unreadMessageCount = count
}
isPolling = true
}
NowChatService – unsubscribeFromUnreadMessageCount()
Meldet sich vom Empfang des Listeners für die Anzahl ungelesener Nachrichten ab.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| Keine |
Das folgende Codebeispiel zeigt, wie diese Funktion aufgerufen wird.
…
if viewModel.isPolling {
viewModel.unsubscribeFromUnreadMessageCount()
viewState.pollingInterval = ""
} else {
viewModel.subscribeToUnreadMessageCount(pollingInterval: timeInterval)
}
…
func unsubscribeFromUnreadMessageCount() {
chatService.unsubscribeFromUnreadMessageCount()
isPolling = false
unreadMessageCount = 0
}