---
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


---

# Classe NowChatService - iOS

# Classe NowChatService - iOS {#ariaid-title1}

* Versão de lançamento: Xanadu
* 
* Atualizado 1 de ago. de 2024
* 
* ![](https://www.servicenow.com/docs/portal-asset/ico-clock) 6 min. de leitura

A classe NowChatService fornece recursos de bate-papo Virtual e Atendente.

Usando esta classe, você pode iniciar e interromper serviços de bate-papo, iniciar sessões de bate-papo, criar uma interface do usuário de bate-papo e assinar/cancelar assinatura de mensagens não lidas.
{#NowChatServiceiOSAPI__entry__2}

| Nome | Descrição |
|-|-|
| configuração | Definições de configuração fornecidas quando o serviço foi inicializado. Tipo de dados: [NowServiceConfiguration](https://servicenow-prod.fluidtopics.net/flpam5S9jLear5y_v4eXdA#NowServiceConfigurationiOSStruct "A estrutura NowServiceConfiguration define informações de configuração para um serviço da feição.") |
| instanceVersion | Versão da instância ServiceNow associada, como Utah ou Quebec. Tipo de dados: cadeia de caracteres |
| serviço de rede | Serviço de rede associado a este serviço de bate-papo. Tipo de dados: NetworkService |
| Tipo de sessão | Tipo de sessão. Valores possíveis: * autenticado * convidado * representado * desconhecido Tipo de dados: SessionType |
[Tabela 1. Propriedades]

## NowChatService - init(configuration: NowServiceConfiguration, delegado: NowChatServiceDelegate?, coreServiceProvider: NowCoreServiceProviding? = nil) {#ariaid-title2}

Inicializa uma nova instância NowChatService.
{#NChatServ-init_O_S_S__table_jgv_vqp_npb__entry__3}

| Nome | Tipo | Descrição |
|-|-|-|
| configuração | [NowServiceConfiguration](https://servicenow-prod.fluidtopics.net/flpam5S9jLear5y_v4eXdA#NowServiceConfigurationiOSStruct "A estrutura NowServiceConfiguration define informações de configuração para um serviço da feição.") | Informações de configuração necessárias para inicializar corretamente o serviço. |
| delegado | Now​Chat​Delegado​de serviço​ | Opcional. Objeto delegado de retorno de chamada do NowChat que implementa o protocolo NowChatServiceDelegate. Padrão: nulo |
| coreServiceProvider | NowCoreServiceProviding | Opcional. Objeto que implementa o protocolo NowCoreServiceProviding. Fornece acesso aos serviços do NowChat. Padrão: nulo |
[Tabela 2. Parâmetros]

{#NChatServ-init_O_S_S__table_jgv_vqp_npb}  
O exemplo de código a seguir mostra como chamar esta função.

    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) -\> Resultado\<UIViewController, NowChatServiceError\> ) {#ariaid-title3}

Cria um `UIViewController` que hospeda a interface do usuário do bate-papo.
Embora esta função crie a IU de bate-papo, você ainda deve iniciar a sessão de bate-papo chamando a função startChat(). Você deve fazer esta chamada conforme a IU de bate-papo se torna visível. Para obter mais detalhes, consulte a aplicação de exemplo associada e o [Mobile SDK Guia do desenvolvedor - iOS](https://servicenow-prod.fluidtopics.net/cHPmWhcaqUfs05BcwQe4hA "O ServiceNow Mobile SDK permite que você aproveite a funcionalidade e os recursos da plataforma ServiceNow em seus aplicativos iOS para celular autônomos.").
{#NChatServ-makeChatUI_O__table_lkt_lvj_npb__entry__3}

| Nome | Tipo | Descrição |
|-|-|-|
| tema | Objeto NowChatThemeable | Informações de tema para a IU de bate-papo criar. |
| chatOpções | [NowChatOptions?](https://servicenow-prod.fluidtopics.net/p23NtP2J5t1VXyb18mHdHw#NowChatOptionsiOS "A classe NowChatOptions permite que você configure opções, como mostrar um aviso antes de fechar uma janela de bate-papo ou desabilitar recursos ao usar o bate-papo, em uma sessão de bate-papo.") | Opcional. Opções a serem aplicadas à sessão de bate-papo. |
[Tabela 3. Parâmetros]

{#NChatServ-makeChatUI_O__table_lkt_lvj_npb} {#NChatServ-makeChatUI_O__table_mkt_lvj_npb__entry__2}

| Tipo | Descrição |
|-|-|
| Objeto | Sucesso: objeto UIViewController que contém as informações de configuração do controlador de exibição de IU. Falha: objeto NowChatServiceError. Possíveis erros: * chatServiceInvalid * coreServiceInvalid * usuárioConvidadoNãoPermitido * credenciaisinválidas * sem sessão * desconhecido * servidor sem suporte |
[Tabela 4. Retorna]

{#NChatServ-makeChatUI_O__table_mkt_lvj_npb}  
O exemplo de código a seguir mostra como chamar essa função.

    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 - desligamento () {#ariaid-title4}

Encerra o serviço de bate-papo, incluindo todas as sessões de bate-papo ativas.
Depois de chamar esta função, o `NowChatService` associado fica inativo e não pode ser reutilizado. Para estabelecer outra sessão de bate-papo, crie uma nova instância `NowChatService` chamando a função NowChat.makeChatService().
{#NChatServ-shutdown__table_zm2_tfk_npb__entry__3}

| Nome | Tipo | Descrição |
|-|-|-|
| Nenhum |   |   |
[Tabela 5. Parâmetros]

{#NChatServ-shutdown__table_zm2_tfk_npb} {#NChatServ-shutdown__table_an2_tfk_npb__entry__2}

| Tipo | Descrição |
|-|-|
| Nenhum(a) |   |
[Tabela 6. Retorna]

{#NChatServ-shutdown__table_an2_tfk_npb}  
O exemplo de código a seguir mostra como chamar esta função.

    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\]?) {#ariaid-title5}

Inicia uma sessão de bate-papo.
Nota:  
Se você quiser executar uma tarefa de conclusão após o início da sessão de bate-papo, use a função [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.").
{#NChatServ-startChat__table_myg_12k_npb__entry__3}

| Nome | Tipo | Descrição |
|-|-|-|
| Dadoscontexto | \[Cadeia de caracteres: Qualquer\]? | Opcional. Dicionário que contém variáveis de contexto de bate-papo que são passadas para a 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). |
[Tabela 7. Parâmetros]

{#NChatServ-startChat__table_myg_12k_npb} {#NChatServ-startChat__table_nyg_12k_npb__entry__2}

| Tipo | Descrição |
|-|-|
| vazio ou cadeia de caracteres | Sucesso: vazio Erro: NowChatServiceError Possíveis erros: * chatServiceInvalid * coreServiceInvalid * usuárioConvidadoNãoPermitido * credenciaisinválidas * sem sessão * desconhecido * servidor sem suporte |
[Tabela 8. Retorna]

{#NChatServ-startChat__table_nyg_12k_npb}  
O exemplo de código a seguir mostra como chamar essa função sem passar variáveis de contexto.

    chatService.startChat { [weak self] result in
      if case .failure(let error) = result {
        debugPrint("Chat session initialization failed with error: \(error)")
        self?.resetChat()
      }
    }

O exemplo de código a seguir mostra como chamar esta função com a passagem de variáveis de contexto.

    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: Qualquer\]? = nulo, _ conclusão: @escaping (Resultado\<Void, NowChatServiceError\> )) {#ariaid-title6}

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.
{#NChatServ-startChat_O__table_tk1_bbk_npb__entry__3}

| Nome | Tipo | Descrição |
|-|-|-|
| Dadoscontexto | \[Cadeia de caracteres: Qualquer\]? | Opcional. Dicionário que contém variáveis de contexto de bate-papo que são passadas para a 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). |
| conclusão | Objeto | Bloco de conclusão a ser executado após o início da sessão de bate-papo. |
[Tabela 9. Parâmetros]

{#NChatServ-startChat_O__table_tk1_bbk_npb} {#NChatServ-startChat_O__table_uk1_bbk_npb__entry__2}

| Tipo | Descrição |
|-|-|
| vazio ou cadeia de caracteres | Retornar valores para o bloco de conclusão: * Sucesso: vazio * Erro: NowChatServiceError Possíveis erros: * chatServiceInvalid * coreServiceInvalid * usuárioConvidadoNãoPermitido * credenciaisinválidas * sem sessão * desconhecido * servidor sem suporte {#NChatServ-startChat_O__ul_e1n_lpj_k1c} |
[Tabela 10. Retorna]

{#NChatServ-startChat_O__table_uk1_bbk_npb}  
O exemplo de código a seguir mostra como chamar essa função sem dados de contexto.

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

O exemplo de código a seguir mostra como chamar esta função com dados de contexto.

    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, conclusão: @escaping (Int) -\> Void) {#ariaid-title7}

Assina o ouvinte de contagem de mensagens não lidas.
{#NChatServ-subToUnreadMsgCount_S__table_pv1_3ln_1qb__entry__3}

| Nome | Tipo | Descrição |
|-|-|-|
| Intervalo de pesquisa | Intervalo de tempo | Frequência na qual pesquisar o serviço Web para a contagem de mensagens de bate-papo não lidas. Unidade: segundos |
| conclusão | @escaping (Int) -\> Vazio) | Manipulador de conclusão a ser chamado para relatar a contagem de mensagens de bate-papo não lidas. Int: número de mensagens de bate-papo não lidas. |
[Tabela 11. Parâmetros]

{#NChatServ-subToUnreadMsgCount_S__table_pv1_3ln_1qb} {#NChatServ-subToUnreadMsgCount_S__table_qv1_3ln_1qb__entry__2}

| Tipo | Descrição |
|-|-|
| Nenhum(a) |   |
[Tabela 12. Retorna]

{#NChatServ-subToUnreadMsgCount_S__table_qv1_3ln_1qb}  
O exemplo de código a seguir mostra como chamar esta função.

    ...
    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() {#ariaid-title8}

Cancela a assinatura do recebimento do ouvinte de contagem de mensagens não lidas.
{#NChatServ-unsubFromUnreadMsgCount__table_inn_ywn_1qb__entry__3}

| Nome | Tipo | Descrição |
|-|-|-|
| Nenhum |   |   |
[Tabela 13. Parâmetros]

{#NChatServ-unsubFromUnreadMsgCount__table_inn_ywn_1qb} {#NChatServ-unsubFromUnreadMsgCount__table_jnn_ywn_1qb__entry__2}

| Tipo | Descrição |
|-|-|
| Nenhum(a) |   |
[Tabela 14. Retorna]

{#NChatServ-unsubFromUnreadMsgCount__table_jnn_ywn_1qb}  
O exemplo de código a seguir mostra como chamar esta função.

    ...
    if viewModel.isPolling {
      viewModel.unsubscribeFromUnreadMessageCount()
      viewState.pollingInterval = ""
    } else {
      viewModel.subscribeToUnreadMessageCount(pollingInterval: timeInterval)
    }
    ...
    func unsubscribeFromUnreadMessageCount() {
      chatService.unsubscribeFromUnreadMessageCount()
      isPolling = false
      unreadMessageCount = 0
    }


