NowChatService-Klasse – iOS

  • Freigeben Version: Xanadu
  • Aktualisiert 1. August 2024
  • 5 Minuten Lesedauer
  • Die NowChatService -Klasse stellt Virtual- und Service Desk-Mitarbeiter -Chat-Fähigkeiten bereit.

    Mit dieser Klasse können Sie Chatservices starten und anhalten, Chatsitzungen starten, eine Chatbenutzeroberflä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

    Netzwerkservice Netzwerkservice, der diesem Chatservice zugeordnet ist.

    Datentyp: NetworkService

    Sitzungstyp Typ der Sitzung.
    Mögliche Werte:
    • authentifiziert
    • Gast
    • Identität von 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 NowServiceKonfiguration Konfigurationsinformationen, die zum ordnungsgemäßen Initialisieren des Service erforderlich sind.
    Delegierter Now Chat Service Delegierter Optional. NowChat-Rückruf-Delegierten-Objekt, das das NowChatServiceDelegate-Protokoll implementiert.

    Standard: null

    coreServiceProvider NowCoreServicebereitstellung Optional. Objekt, das das NowCoreServiceProvidering-Protokoll implementiert. Bietet Zugriff auf NowChat-Services.

    Standard: null

    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, chatOptions: NowChatOptions? = nil) -> Ergebnis<UIViewController, NowChatServiceError> )

    Erstellt einen UIViewController, der die Chat-Anwenderoberfläche hostet.

    Obwohl diese Funktion die Chat-UI erstellt, müssen Sie die Chatsitzung dennoch initiieren, indem Sie die Funktion startChat() aufrufen. Sie sollten diesen Anruf tätigen, wenn die Chat-UI sichtbar wird. Weitere Informationen finden Sie in der zugehörigen Beispielanwendung und im Mobile SDK Entwicklerhandbuch – iOS.

    Tabelle : 3. Parameter
    Name Typ Beschreibung
    Thema NowChatDesignfähiges Objekt Designinformationen für die zu erstellende Chat-UI.
    chatOptionen NowChat-Optionen? Optional. Auf die Chatsitzung anzuwendende Optionen.
    Tabelle : 4. Ergebnisse
    Typ Beschreibung
    Objekt Erfolg: UIViewController-Objekt, das die Konfigurationsinformationen des UI View Controllers enthält.

    Fehler: NowChatServiceError-Objekt.

    Mögliche Fehler:
    • chatServiceInvalid
    • coreServiceInvalid
    • „guestUserNotAllowed“
    • ungültige Anmeldeinformationen
    • noSession
    • unbekannt
    • nicht unterstützterServer

    Das folgende Codebeispiel zeigt, wie diese Funktion aufgerufen wird.

    func makeChatScreen() -> UIViewController? {
      guard let chatService = chatService else { return nil }
      let closePrompt = NowChatOptions.ClosePrompt(
        header: "Close Window",
        message: "Are you sure you want to close the chat window?",
        acceptButtonTitle: "Yes",
        declineButtonTitle: "No")
    
      let disabledFeatures = [.startNewConversation]
        
      let chatOptions = NowChatOptions(closePrompt: closePrompt,
        disabledFeatures: disabledFeatures,
        forceNewConversation: true)
        
      let result = chatService.makeChatUI(theme: CarrascoChatTheme(chatColors: ChatColors()), chatOptions: chatOptions)
        
      switch result {
      case .success(let chatViewController):
        return chatViewController
      case .failure(let error):
        return nil
      }
    }

    NowChatService – Herunterfahren ()

    Beendet den Chatservice, einschließlich aller aktiven Chatsitzungen.

    Nach dem Aufrufen 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 Funktion NowChat.machenChatService() 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: [Zeichenfolge: Beliebig]?)

    Startet eine Chatsitzung.

    Hinweis:
    Wenn Sie nach dem Start der Chatsitzung eine Abschlussaufgabe ausführen möchten, verwenden Sie die Funktion NowChatService - startChat(contextData: [Zeichenfolge: Beliebig]? = nil, _ Abschluss: @escaping (Ergebnis<Void, NowChatServiceError> )).
    Tabelle : 7. Parameter
    Name Typ Beschreibung
    contextData [Zeichenfolge: Beliebig]? Optional. Wörterbuch, das Chat-Kontextvariablen enthält, die an die Chatsitzung übergeben werden.

    Weitere Informationen zu Chat-Kontextvariablen finden Sie unter Live agent chat context variables.

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

    Fehler: NowChatServiceError

    Mögliche Fehler:
    • chatServiceInvalid
    • coreServiceInvalid
    • „guestUserNotAllowed“
    • ungültige Anmeldeinformationen
    • noSession
    • unbekannt
    • nicht unterstützterServer

    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: [Zeichenfolge: Beliebig]? = nil, _ Abschluss: @escaping (Ergebnis<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. Wörterbuch, das Chat-Kontextvariablen enthält, die an die Chatsitzung übergeben werden.

    Weitere Informationen zu Chat-Kontextvariablen finden Sie unter Live agent chat context variables.

    Abschluss Objekt Abschlussblock, der nach dem Start der Chatsitzung ausgeführt werden soll.
    Tabelle : 10. Ergebnisse
    Typ Beschreibung
    ungültig oder Zeichenfolge
    Rückgabewerte für den Abschlussblock:
    • Erfolg: ungültig
    • Fehler: NowChatServiceError
    Mögliche Fehler:
    • chatServiceInvalid
    • coreServiceInvalid
    • „guestUserNotAllowed“
    • ungültige Anmeldeinformationen
    • noSession
    • unbekannt
    • nicht unterstützterServer

    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, Abschluss: @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 ungelesener Chatnachrichten abgefragt wird.

    Einheit: Sekunden

    Abschluss @escaping (Int) -> Ungültig) Aufzurufender Abschluss-Handler, um die Anzahl der ungelesenen Chat-Nachrichten 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()

    Hebt das Abonnement für den Empfang des Listeners für die Anzahl ungelesener Nachrichten auf.

    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
    }