Implementar bate-papo virtual e Atendente

  • Versão de lançamento: Washingtondc
  • Atualizado 1 de fev. de 2024
  • 2 min. de leitura
  • O Mobile SDK permite que você implemente facilmente os serviços de bate-papo Virtual e Atendente em seu aplicativo iOS.

    Você usa a API NowChatService para criar a interface do usuário do bate-papo. Depois que a IU for criada, você deverá iniciar a sessão de bate-papo e iniciar o serviço de bate-papo. Semelhante a outros serviços do recurso Mobile SDK, a API NowChatService fornece duas implementações para alguns de seus métodos, incluindo o método startChat(). Uma implementação retorna um publicador Combine e a outra chama um manipulador de conclusão com os resultados de retorno.

    A seguir está um snippet da aplicação de exemplo que mostra como inicializar e iniciar uma IU e uma sessão de bate-papo.

    // Create the chat UI
    func makeChatScreen() -> UIViewController? {
      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
      }
    }
        
    // 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()
      }
    }

    Antes de aproveitar a funcionalidade de bate-papo em sua aplicação, você deve configurar Virtual Agent em sua instância ServiceNow. Para obter detalhes, consulte Virtual Agent.

    Passando variáveis de contexto para o bate-papo Atendente e Virtual Agent

    Você pode passar variáveis de contexto de bate-papo ao iniciar uma sessão de bate-papo passando o parâmetro contextData ] nas funções NowChatService - startChat(contextData: [Cadeia de caracteres: Qualquer]?) ou NowChatService - startChat(contextData: [Cadeia de caracteres: Qualquer]? = nil, _ conclusão: @escaping (Resultado<Void, NowChatServiceError> )). Para obter informações adicionais sobre variáveis de contexto de bate-papo, consulte Live agent chat context variables.

    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()
        }
      }
    }

    Tema da interface do usuário do bate-papo

    Você pode personalizar as cores da IU de bate-papo Atendente e Virtual Agent passando um objeto de tema na chamada makeChatUI(). Para obter uma lista de todos os elementos que você pode personalizar, consulte Protocolo NowChatColoring - iOS. Por padrão, a IU de bate-papo usa o tema NowUIColor para todos os elementos de IU do NowSDK. Consulte Protocolo NowChatThemeable - iOS para obter exemplos de snippets de código sobre como aplicar um tema à IU de bate-papo.