Classe NowChatService - iOS

  • Versão de lançamento: Washingtondc
  • Atualizado 1 de fev. de 2024
  • 6 min. de leitura
  • A classe NowChatService fornece recursos de bate-papo Virtual e Atendente.

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

    Tabela 1. Propriedades
    Nome Descrição
    configuração Definições de configuração fornecidas quando o serviço foi inicializado.

    Tipo de dados: NowServiceConfiguration

    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

    NowChatService - init(configuration: NowServiceConfiguration, delegado: NowChatServiceDelegate?, coreServiceProvider: NowCoreServiceProviding? = nil)

    Inicializa uma nova instância NowChatService.

    Tabela 2. Parâmetros
    Nome Tipo Descrição
    configuração NowServiceConfiguration Informações de configuração necessárias para inicializar corretamente o serviço.
    delegado NowChat​Delegado de serviço​ Opcional. Objeto de 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

    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)

    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 do bate-papo se torna visível. Para obter mais detalhes, consulte a aplicação de amostra associada e o Mobile SDK guia do desenvolvedor - iOS.

    Tabela 3. Parâmetros
    Nome Tipo Descrição
    tema Objeto NowChatThemeable Informações de tema para a IU de bate-papo criar.
    Tabela 4. Retorna
    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:
    • serviço de bate-papoinválido
    • coreServiceInvalid
    • usuárioConvidadoNãoPermitido
    • credenciaisinválidas
    • semSessão
    • desconhecido
    • servidor sem suporte

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

    func makeChatScreen() -> UIViewController? {
      var chatService: NowChatService?
      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
      }
    }

    NowChatService - desligamento ()

    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.fazerChatService().

    Tabela 5. Parâmetros
    Nome Tipo Descrição
    Nenhum
    Tabela 6. Retorna
    Tipo Descrição
    Nenhum

    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: [Cadeia de caracteres: Qualquer]?)

    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: [Cadeia de caracteres: Qualquer]? = nil, _ conclusão: @escaping (Resultado<Void, NowChatServiceError> )).
    Tabela 7. Parâmetros
    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.

    Tabela 8. Retorna
    Tipo Descrição
    vazio ou cadeia de caracteres Sucesso: vazio

    Erro: NowChatServiceError

    Possíveis erros:
    • serviço de bate-papoinválido
    • coreServiceInvalid
    • usuárioConvidadoNãoPermitido
    • credenciaisinválidas
    • semSessão
    • desconhecido
    • servidor sem suporte

    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 essa 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: [Cadeia de caracteres: Qualquer]? = nil, _ conclusão: @escaping (Resultado<Void, NowChatServiceError> ))

    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.

    Tabela 9. Parâmetros
    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.

    conclusão Objeto Bloco de conclusão a ser executado após o início da sessão de bate-papo.
    Tabela 10. Retorna
    Tipo Descrição
    vazio ou cadeia de caracteres
    Valores de retorno para o bloco de conclusão:
    • Sucesso: vazio
    • Erro: NowChatServiceError
    Possíveis erros:
    • serviço de bate-papoinválido
    • coreServiceInvalid
    • usuárioConvidadoNãoPermitido
    • credenciaisinválidas
    • semSessão
    • desconhecido
    • servidor sem suporte

    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)

    Assina o ouvinte de contagem de mensagens não lidas.

    Tabela 11. Parâmetros
    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) -> Void) 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 12. Retorna
    Tipo Descrição
    Nenhum

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

    Cancela a assinatura do recebimento do ouvinte de contagem de mensagens não lidas.

    Tabela 13. Parâmetros
    Nome Tipo Descrição
    Nenhum
    Tabela 14. Retorna
    Tipo Descrição
    Nenhum

    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
    }