---
sourceDocument: Referência de API do Xanadu
sourceDocumentLink: https://servicenow-prod.fluidtopics.net/r/pt-BR/xanadu/api-reference

 Release :

    - xanadu

ft:locale :

    - pt-BR

ft:publication_title :

    - Referência de API do Xanadu

ft:clusterId :

    - crapiref

bundleId :

    - crapiref

workflow :

    - Creator


---

# Implementar bate-papo virtual e Atendente

# Implementar bate-papo virtual e Atendente {#ariaid-title1}

* Versão de lançamento: Xanadu
* 
* Atualizado 1 de ago. de 2024
* 
* ![](https://www.servicenow.com/docs/portal-asset/ico-clock) 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](https://servicenow-prod.fluidtopics.net/pPC7Dv35uvRrlNf1Xqs1AA#NowChatServiceiOSAPI "A classe NowChatService fornece recursos de bate-papo Virtual e Atendente.") para criar a interface do usuário de bate-papo. Depois que a IU for criada, você deverá iniciar a sessão de bate-papo e, em seguida, 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 [fornecedor Combine](https://developer.apple.com/documentation/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](https://www.servicenow.com/docs/access?context=virtual-agent-landing-page&version=xanadu&pubname=xanadu-conversational-interfaces&ft:locale=en-US).

## Passando variáveis de contexto para o bate-papo Atendente e Virtual Agent {#mobsdk-ios-imp-chat__section_vzg_wqj_k1c}

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: \[String: Any\]?)](pPC7Dv35uvRrlNf1Xqs1AA#NChatServ-startChat "Inicia uma sessão de bate-papo.") ou [NowChatService - startChat(contextData: \[String: Qualquer\]? = nulo, _ conclusão: @escaping (Resultado\<Void, NowChatServiceError\> ))](pPC7Dv35uvRrlNf1Xqs1AA#NChatServ-startChat_O "Inicia uma sessão de bate-papo e executa um bloco de conclusão após o início da sessão de bate-papo."). Para obter informações adicionais sobre variáveis de contexto de bate-papo, consulte [Live agent chat context variables](https://www.servicenow.com/docs/access?context=live-agent-chat-context-vars&version=xanadu&pubname=xanadu-conversational-interfaces&ft:locale=en-US).  

    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 a 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](https://servicenow-prod.fluidtopics.net/m5ujYdvcfS9C8UgOlQ1aPQ#NowChatColoringiOSProtocol "O protocolo NowChatColoring define cores padrão para os elementos na IU de bate-papo Atendente e Virtual Agent."). Por padrão, a IU de bate-papo usa o tema NowUIColor para todos os elementos de IU do NowSDK. Consulte [Protocolo NowChatThemeable - iOS](https://servicenow-prod.fluidtopics.net/PVIiI_5clLOHaq5maBQIbw "O protocolo NowWebThemeable fornece propriedades que permitem substituir as cores usadas em páginas da Web hospedadas em sua instância ServiceNow em uma exibição da Web nativa.") para obter exemplos de snippets de código sobre como aplicar um tema à IU de bate-papo.

