Kontextvariablen werden an übergeben Servicemitarbeiter Und Virtual Agent Chat

  • Freigeben Version: Zurich
  • Aktualisiert 31. Juli 2025
  • 2 Minuten Lesedauer
  • Sie können Chat-Kontextvariablen beim Starten einer Chatsitzung übergeben, indem Sie übergeben contextDataParameter.

    Sie können diesen Wert mit übergeben NowChatService – startChat(contextData: [Zeichenfolge: Beliebig]? = Nil, _ Abschluss: @Escaping (Result<Void, NowChatServiceError>) -> ungültig) Funktionen.

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

    Darüber hinaus können Sie optional auch übergeben NowChatConfigurationParameter beim Starten einer Chatsitzung, um das Verhalten von NowChat zu ändern.

    • closePrompt: Aufforderungstext, der vor dem Verlassen eines Chatfensters angezeigt wird. Sie definieren diesen Aufforderungstext anhand der folgenden Parameter:
      • header: Nullfähiger Zeichenfolgenwert, der im Header der Eingabeaufforderung angezeigt wird.
      • message: Zeichenfolgenwert, der im Haupttext der Eingabeaufforderung angezeigt wird.
      • acceptButtonTitle: Zeichenfolgenwert, der auf der primären Schaltfläche des Prompts angezeigt wird. Diese Schaltfläche schließt das Chat-Fenster.
      • declineButtonTitle: Zeichenfolgenwert, der auf der sekundären Schaltfläche des Prompts angezeigt wird. Mit dieser Schaltfläche wird der Prompt geschlossen, ohne das Chatfenster zu schließen.
    • disabledFeatures: Liste der zu deaktivierenden NowChat-Funktionen. Weitere Informationen finden Sie unter NowChatConfiguration.Feature Aufzählungsklasse für die Liste der Funktionen, die Sie deaktivieren können.
    • conversationOptions: Liste der Konversationsoptionen, die auf NowChat angewendet werden sollen. Weitere Informationen finden Sie unter NowChatConvestation.ConversationOption Aufzählungsklasse für die Liste der Optionen, die Sie anwenden können.
    • uiConfiguration: UIConfiguration-Wert, der zum Konfigurieren von UI-Komponenten in NowChat verwendet wird.
    Das folgende Codebeispiel zeigt, wie diese Methode aufgerufen wird:
    // Close Button Type
    func closeButtonText(title: String?) -> NowChatConfiguration.CloseButtonType? {
      guard let title else { return nil }
      return .text(title)
    }  
      
    func closeButtonImage(name imageName: String?) -> NowChatConfiguration.CloseButtonType? {
      guard let imageName,
      let buttonImage = UIImage(named: imageName) else { return nil }
      return .image(buttonImage)	
    }
    
    
    // Create the chat UI
    func makeChatScreen() -> UIViewController? {
      guard let chatService = chatService else { return nil }
      let closePrompt = NowChatConfiguration.ClosePrompt(header: "Close Window",
        message: "Are you sure you want to close the chat window?",
        acceptButtonTitle: "Yes",
        declineButtonTitle: "No")     
    
      let attachmentUploadButton = NowChatConfiguration.AttachmentUploadButton(isVisible: false) // default isVisible = true         
    
      let chatConfiguration = NowChatConfiguration(closePrompt: closePrompt,
        disabledFeatures: [.startNewConversation],
        conversationOptions: [.forceNewConversation, .endConversationOnExit],
        uiConfiguration: NowChatConfiguration.UIConfiguration(closeButton: closeButtonImage(name: "arrow.left"), attachmentUploadButton: attachmentUploadButton))
    
      let result = chatService.makeChatUI(theme: CarrascoChatTheme(chatColors: ChatColors()), chatConfiguration: chatConfiguration)
             
      switch result {
        case .success(let chatViewController): 
          return chatViewController
        case .failure(let error):
          debugPrint("Chat screen creation failed with error: \(error)")
          return nil
      }
    } 
    
    // Start the chat session
    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()
        }
      }
     }
    
    // Initialize the chat service
    private 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()
      }
    }