NowChatService-Klasse – iOS

  • Freigeben Version: Washingtondc
  • Aktualisiert 1. Februar 2024
  • 5 Minuten Lesedauer
  • 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.

    Tabelle : 1. Eigenschaften
    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:
    • authentifiziert
    • Gast
    • Identität angenommen
    • Unbekannt

    Datentyp: SessionType

    NowChatService – init(configuration: NowServiceConfiguration, delegierter: NowChatServiceDelegate?, coreServiceProvider: NowCoreServiceProvider? = nil)

    Initialisiert eine neue NowChatService-Instanz.

    Tabelle : 2. Parameter
    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.

    Tabelle : 3. Parameter
    Name Typ Beschreibung
    Thema NowChatThemeable-Objekt Themeninformationen für die zu erstellende Chat-UI.
    Tabelle : 4. Ergebnisse
    Typ Beschreibung
    Objekt Erfolg: UIViewController-Objekt, das die Konfigurationsinformationen des UI-Ansichts-Controllers enthält.

    Fehler: NowChatServiceError-Objekt.

    Mögliche Fehler:
    • chatServiceInvalid
    • coreServiceInvalid
    • „guestUserNotAllowed“
    • ungültigeAnmeldeinformationen
    • keineSitzung
    • Unbekannt
    • nicht unterstützter Server

    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.

    Tabelle : 5. Parameter
    Name Typ Beschreibung
    Keine
    Tabelle : 6. Ergebnisse
    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.

    Hinweis:
    Wenn Sie eine Abschlussaufgabe nach dem Start der Chatsitzung ausführen möchten, verwenden Sie die Funktion NowChatService – startChat(contextData: [String: Any]? = nil, _ abgeschlossen: @escaping (Result<Void, NowChatServiceError> )).
    Tabelle : 7. Parameter
    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.

    Tabelle : 8. Ergebnisse
    Typ Beschreibung
    Leere oder Zeichenfolge Erfolg: ungültig

    Fehler: NowChatServiceError

    Mögliche Fehler:
    • chatServiceInvalid
    • coreServiceInvalid
    • „guestUserNotAllowed“
    • ungültigeAnmeldeinformationen
    • keineSitzung
    • Unbekannt
    • nicht unterstützter Server

    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.

    Tabelle : 9. Parameter
    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.
    Tabelle : 10. Ergebnisse
    Typ Beschreibung
    Leere oder Zeichenfolge
    Rückgabewerte für den Abschlussblock:
    • Erfolg: ungültig
    • Fehler: NowChatServiceError
    Mögliche Fehler:
    • chatServiceInvalid
    • coreServiceInvalid
    • „guestUserNotAllowed“
    • ungültigeAnmeldeinformationen
    • keineSitzung
    • Unbekannt
    • nicht unterstützter Server

    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.

    Tabelle : 11. Parameter
    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.

    Tabelle : 12. Ergebnisse
    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.

    Tabelle : 13. Parameter
    Name Typ Beschreibung
    Keine
    Tabelle : 14. Ergebnisse
    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
    }