Source: https://rox.chat/kb/pt/mobile/sdk/android-additional-features.html

> Este artigo contém recursos do Rox.Chat Mobile SDK para Android que não estão disponíveis por padrão. Para conectá-los, entre em contato com suporte técnico.

# Recursos adicionais do Rox.Chat Mobile SDK para Android

Este artigo contém recursos do Rox.Chat Mobile SDK para Android que não estão disponíveis por padrão. Para conectá-los, entre em contato com [suporte técnico](mailto:support@rox.chat).

!!! Note "N.B."
    Este artigo é um complemento do [manual principal](https://rox.chat/kb/pt/mobile/sdk/android-sdk-handbook.html) sobre o Rox.Chat Mobile SDK para Android.

## Classe `Rox` { #rox-chat }

### Método de classe `newFAQBuilder`() { #new-faq-builder }

Método necessário para obter um objeto [`FAQBuilder`](#faq-builder), que, por sua vez, é necessário para criar uma instância da classe [`FAQ`](#faq).

Não aceita parâmetros.

Retorna uma instância da classe [`FAQBuilder`](#faq-builder), que é necessária para manipular o bloco de FAQ.

Não lança exceções.

Não requer que outros métodos sejam chamados antes.

## Classe `FAQBuilder` { #faq-builder }

Uma classe cuja instância é usada para obter uma instância da classe [`FAQ`](#faq). Uma instância da classe é obtida usando o método [`newFAQBuilder()`](#new-faq-builder) da classe [`Rox`](#rox-chat).

### Método de classe `setAccountName(String accountName)` { #set-account-name }

O método é necessário para definir o nome da conta no sistema Rox.Chat ao criar um bloco de perguntas frequentes.

O parâmetro `accountName` é o nome da conta do cliente no sistema Rox.Chat. Normalmente, é um servidor de URL (por exemplo, <https://demo.rox.chat>), mas também pode ser um nome de conta de uma única palavra (por exemplo, `"demo"`), se o servidor estiver no domínio `rox.chat`. O tipo de parâmetro é `String`.

Retorna a mesma instância da classe [`FAQBuilder`](#faq-builder), mas com o nome da conta definido.

Não lança exceções.

Requer uma instância obtida anteriormente da classe [`FAQBuilder`](#faq-builder). É necessária uma chamada de método para obter uma instância da classe [`FAQ`](#faq).

### Método de classe `build()` { #faqbuilder-build }

Um método que é chamado na conclusão dos métodos acima para obter uma instância de [`FAQ`](#faq).

Não aceita parâmetros.

Retorna um objeto [`FAQ`](#faq) com os parâmetros definidos usando o restante dos métodos de instância da classe.

Lança uma IllegalArgumentException se nenhum nome de conta tiver sido definido (consulte o método [`setAccountName(String accountName)`](#set-account-name)),

Requer uma instância obtida anteriormente da classe [`FAQBuilder`](#faq-builder) e uma chamada subsequente aos métodos [`setAccountName(String accountName)`](#set-account-name).

---

## Interface de `FAQ` { #faq }

Uma interface que permite a manipulação do bloco FAQ. Ela é implementada por entidades internas do SDK.

Uma instância da classe [`FAQ`](#faq) é obtida usando os métodos da classe [`FAQBuilder`](#faq-builder).

### Método `resume()`

Quando uma instância da classe [`FAQ`](#faq) é criada, seu bloco de FAQ correspondente fica em um estado suspenso. Esse método é necessário para iniciar a atividade da rede.

Não aceita parâmetros.

Não retorna nada.

Lança uma `IllegalStateException` se o objeto do bloco de FAQ tiver sido desativado (consulte o método [`destroy()`](#faq-destroy)).

Lança uma `RuntimeException` se o método tiver sido chamado de um thread diferente daquele em que o objeto de classe foi criado.

Não requer que nenhum outro método seja chamado antes. Necessário para que o serviço funcione plenamente no contexto do aplicativo.

A velocidade de execução do método depende da velocidade de recebimento da resposta do servidor.

### Método `pause()`

Um método que é usado para suspender a atividade de rede do bloco de perguntas frequentes. Se a sessão já estiver em um estado suspenso, o método não executará nenhuma ação.

Não aceita parâmetros.

Não retorna nada.

Lança uma `RuntimeException` se o método tiver sido chamado de uma thread diferente daquela em que o objeto de classe foi criado.

Não requer que nenhum outro método seja chamado antes. O bloco FAQ não deve estar em um estado desativado para que o método seja chamado.

### Método `destroy()` { #faq-destroy }

Um método que é usado para desativar o bloco de perguntas frequentes e a instância da classe. Quando esse método é chamado, nenhum método relacionado ao bloco de FAQ pode ser usado.

Não aceita parâmetros.

Não retorna nada.

Lança uma `RuntimeException` se o método tiver sido chamado de uma thread diferente daquela em que o objeto de classe foi criado.

Não requer que nenhum outro método seja chamado antes.

### Método `getStructure`(int rootId, getStructureCallback callback) { #get-structure }

Método usado para obter um objeto da classe [`FAQStructure`](#faq-structure) por meio de [`GetStructureCallback`](#get-structure-callback). Se a consulta falhar, a estrutura resultante será nula.

Parâmetro `rootId` - ID do nó que será a raiz da árvore (estrutura) do bloco de perguntas frequentes. O tipo é Int.

O parâmetro callback é um objeto que implementa a interface [`GetStructureCallback`](#get-structure-callback).

Não retorna nada.

Lança uma `RuntimeException` se o método tiver sido chamado de uma thread diferente daquela em que o objeto de classe foi criado.

Não requer que nenhum outro método seja chamado antes.

### Método `getCategory`(int id, getCategoryCallback callback) { #get-category }

Método usado para recuperar um objeto da classe [`FAQCategory`](#faq-category) por meio de [`GetCategoryCallback`](#get-category-callback). Se a consulta falhar, a categoria recuperada será `nula`.

ID do parâmetro - ID da categoria do bloco de perguntas frequentes. O tipo é `Int`.

O parâmetro `callback` é um objeto que implementa a interface [`GetCategoryCallback`](#get-category-callback).

Não retorna nada.

Lança uma `RuntimeException` se o método tiver sido chamado de uma thread diferente daquela em que o objeto de classe foi criado.

Não requer que nenhum outro método seja chamado antes.

### Método getItem(String id, getItemCallback callback) { #get-item }

Método usado para recuperar um objeto da classe [`FAQItem`](#faq-item) por meio de [`GetItemCallback`](#get-item-callback). Se a solicitação falhar, a página recuperada será `nula`.

ID do parâmetro - ID da página do bloco de perguntas frequentes. Tipo - `String`.

O parâmetro callback é um objeto que implementa a interface [`GetItemCallback`](#get-item-callback).

Não retorna nada.

Lança uma `RuntimeException` se o método tiver sido chamado de uma thread diferente daquela em que o objeto de classe foi criado.

Não requer que nenhum outro método seja chamado antes.

---

## Interface `FAQCategory` { #faq-category }

A representação da categoria do bloco de FAQ. Fornece métodos para recuperar informações sobre a categoria.

Os objetos [`FAQCategory`](#faq-category) podem ser recuperados por meio de uma classe que implementa a interface [`GetCategoryCallback`](#get-category-callback).

### Método `getId`()

Não recebe parâmetros.

Retorna o identificador da categoria. O tipo é `Int`.

Não lança nenhuma exceção.

Não requer que nenhum outro método seja chamado antes.

### Método `getTitle`()

Não recebe parâmetros.

Retorna o título da categoria. O tipo é `String`.

Não lança nenhuma exceção.

Não requer que nenhum outro método seja chamado antes.

### Método `getItems`()

A categoria contém as páginas do bloco de perguntas frequentes.

Não recebe nenhum parâmetro.

Retorna as páginas pertencentes à categoria. O tipo é `List<FAQItem>`.

Não lança nenhuma exceção.

Não requer que nenhum outro método seja chamado antes.

### Método `getSubcategories`() { #get-subcategories }

Uma categoria contém subcategorias. Por conveniência, esse método retorna informações de subcategoria sem suas páginas e subcategorias.

Não aceita parâmetros.

Retorna informações sobre subcategorias pertencentes a uma categoria. O tipo é `List<FAQCategoryInfo>`.

Não lança nenhuma exceção.

Não requer que nenhum outro método seja chamado antes.

---

## Interface `FAQCategoryInfo` { #faq-category-info }

Representação das informações de categoria do bloco de FAQ. Fornece métodos para recuperar o identificador e o título da categoria.

Os objetos [`FAQCategoryInfo`](#faq-category-info) podem ser recuperados usando o método [`getSubcategories()`](#get-subcategories).

### Método `getId`()

Não recebe parâmetros.

Retorna o identificador da categoria. O tipo é `Int`.

Não lança nenhuma exceção.

Não requer que nenhum outro método seja chamado antes.

### Método `getTitle`()

Não recebe parâmetros.

Retorna o título da categoria. O tipo é String.

Não lança nenhuma exceção.

Não requer que nenhum outro método seja chamado antes.

---

## Interface `FAQItem` { #faq-item }

Representação da página do bloco FAQ. Fornece métodos para recuperar informações sobre a página.

Os objetos [`FAQItem`](#faq-item) podem ser recuperados por meio de uma classe que implementa a interface [`GetItemCallback`](#get-item-callback).

### Método `getId`()

Não recebe parâmetros.

Retorna o identificador da página. O tipo é `String`.

Não lança nenhuma exceção.

Não requer que nenhum outro método seja chamado antes.

### Método `getTitle`()

Não recebe parâmetros.

Retorna o título da página. O tipo é `String`.

Não lança nenhuma exceção.

Não requer que nenhum outro método seja chamado antes.

### Método `getCategories`()

Uma página pode pertencer a várias categorias.

Não recebe nenhum parâmetro.

Retorna os identificadores das categorias às quais a página pertence. O tipo é `List`.

Não lança nenhuma exceção.

Não requer que nenhum outro método seja chamado antes.

### Método `getTags`()

A página tem um conjunto de tags.

Não recebe nenhum parâmetro.

Retorna uma lista de tags com as quais a página está marcada. O tipo é `List`.

No lança nenhuma exceção.

Não requer que nenhum outro método seja chamado antes.

### Método `getContent`()

Não recebe parâmetros.

Retorna o conteúdo da página. O tipo é `String`.

Não lança nenhuma exceção.

Não requer que nenhum outro método seja chamado antes.

### Método `getLikeCount`()

A página contém o número de marcas de `"Curtir"`.

Não recebe parâmetros.

Retorna o número de marcas de "Curtir" da página. O tipo é `Int`.

Não lança exceções.

Não requer que nenhum outro método seja chamado antes.

### Método `getDislikeCount`()

A página contém o número de marcas de "Não gostei" da página.

Não recebe parâmetros.

Retorna o número de marcas de antipatia da página. O tipo é `Int`.

Não lança nenhuma exceção.

Não requer que nenhum outro método seja chamado antes.

---

## Interface `FAQStructure` { #faq-structure }

Representação da árvore (estrutura) do bloco de FAQ. Fornece métodos para recuperar informações sobre a árvore do bloco de FAQ.

Os objetos [`FAQStructure`](#faq-structure) podem ser recuperados por meio de uma classe que implemente a interface [`GetStructureCallback`](#get-structure-callback).

### Método `getId`()

A árvore tem um elemento raiz.

Não recebe parâmetros.

Retorna o identificador do elemento raiz da árvore. O tipo é `String`.

Não lança nenhuma exceção.

Não requer que nenhum outro método seja chamado antes.

### Método `getTitle`()

Não recebe parâmetros.

Retorna o título da raiz. O tipo é `String`.

Não lança nenhuma exceção.

Não requer que nenhum outro método seja chamado antes.

### Método `getType`() { #faq-structure-get-type }

A raiz da árvore pode ser uma categoria ou uma página.

Não recebe nenhum parâmetro.

Retorna o tipo do elemento raiz. O tipo é [`FAQType`](#faq-type).

Não lança nenhuma exceção.

Não requer que nenhum outro método seja chamado antes.

### Método `getChildren`()

Não recebe parâmetros.

Retorna as subárvores cujas raízes são descendentes diretas da raiz da árvore (estrutura). O tipo é List<FAQStructure>.

Não lança nenhuma exceção.

Não requer que nenhum outro método seja chamado antes.

---

## Tipo enumerado `FAQType` { #faq-type }

Tipos possíveis da raiz da árvore de blocos de FAQ (consulte o método [`getType()`](#faq-structure-get-type) da interface [`FAQStructure`](#faq-structure)).

### Caso `ITEM`

A raiz da árvore é uma página.

### Caso `CATEGORY`

A raiz da árvore é uma categoria.

### Caso `UNKNOWN`

A raiz da árvore tem um tipo desconhecido para esta versão do SDK.

---

## Tipo enumerado `UserRate` { #user-rate }

A página pode ser avaliada pelo usuário.

### Case `like`

O usuário gostou da página.

### Case `dislike`

O usuário não gostou da página.

### Case `noRate`

A página não foi avaliada pelo usuário.

---

## Tipo enumerado `FAQAccessError` { #faq-access-error }

O valor do tipo corresponde a erros que podem ser lançados por alguns métodos do protocolo [`FAQ`](#faq).

### Case `invalidThread`

Ocorre quando um método foi chamado de um thread diferente do thread no qual a instância do bloco de FAQ foi criada.

### Caso `invalidFaq`

Ocorre quando os métodos de uma instância inválida de [`FAQ`](#faq) são tentados (por exemplo, após o método [`destroy()`](#faq-destroy) ter sido chamado).

---

## Tipo enumerado `FAQBuilderError`

Os valores de tipo correspondem a possíveis erros que podem ocorrer ao chamar o método [`build()`](#faqbuilder-build) da classe [`FAQBuilder`](#faq-builder).

### Case `nilAccountName`

Ocorre quando nenhum valor de nome de conta foi passado ao criar o bloco de FAQ.

---

## Tipo enumerado `FAQGetCallbackError` { #faq-get-callback-error }

Possíveis erros que podem ser lançados pelos métodos do protocolo [`FAQ`](#faq).

### Caso `ERROR`

Erro encontrado.

---

## Tipo enumerado `FAQItemSource` { #faq-item-source }

A possível fonte do artigo. O artigo pode vir de uma pesquisa ou de uma estrutura ou categoria.

### Caso `search`

O artigo é solicitado a partir de uma pesquisa.

### Caso `tree`

O artigo é solicitado a partir de uma estrutura ou categoria.

---

## Interface `GetStructureCallback` { #get-structure-callback }

Uma interface cujos métodos são implementados por alguma classe de aplicativo.

Um objeto sujeito à interface pode ser passado no parâmetro callback do método [`getStructure(int rootId, getStructureCallback callback)`](#get-structure) da interface [`FAQ`](#faq).

### Método `receive` (FAQStructure structure)

O método é chamado quando se obtém a árvore (estrutura) das categorias de blocos de FAQ usando o método [`getStructure(int rootId, getStructureCallback callback)`](#get-structure) da interface [`FAQ`](#faq).

O parâmetro structure é a árvore (estrutura) das categorias de blocos de FAQ. O tipo é [`FAQStructure`](#faq-structure).

Não retorna nada.

Não lança exceções.

Não requer que nenhum outro método seja chamado antes.

O método será chamado depois que o método [`getStructure(int rootId, getStructureCallback callback)`](#get-structure) for concluído.

---

## Interface `GetCategoryCallback` { #get-category-callback }

Uma interface cujos métodos são implementados por alguma classe de aplicativo.

Um objeto sujeito à interface pode ser passado no parâmetro callback do método [`getCategory(int id, getCategoryCallback callback)`](#get-category) da interface [`FAQ`](#faq).

### Método `receive`(FAQCategory category)

O método é chamado quando a categoria do bloco de FAQ é recuperada pelo método [`getCategory(int id, getCategoryCallback callback)`](#get-category) da interface [`FAQ`](#faq).

O parâmetro category é a categoria do bloco de FAQ. O tipo é [`FAQCategory`](#faq-category).

Não retorna nada.

Não lança exceções.

Não requer que nenhum outro método seja chamado antes.

O método será chamado depois que o método [`getCategory(int id, getCategoryCallback callback)`](#get-category) for concluído.

---

## Interface `GetItemCallback` { #get-item-callback}

Uma interface cujos métodos são implementados por alguma classe de aplicativo.

Um objeto sujeito à interface pode ser passado no parâmetro callback do método [`getItem(String id, getItemCallback callback)`](#get-item) da interface [`FAQ`](#faq).

### Método `receive` (FAQItem item)

O método é chamado quando a página do bloco de FAQ é recuperada pelo método [`getItem(String id, getItemCallback callback)`](#get-item) da interface [`FAQ`](#faq).

O parâmetro item é a página do bloco de FAQ. O tipo é [`FAQItem`](#faq-item).

Não retorna nada.

Não lança exceções.

Não requer que nenhum outro método seja chamado antes.

O método será chamado depois que o método [`getItem(String id, getItemCallback callback)`](#get-item) for concluído.

---

## Tipo enumerado `RootType` { #root-type }

Tipos possíveis da raiz da árvore de blocos de FAQ (consulte o método [`getType()`](#faq-structure-get-type) do protocolo [`FAQStructure`](#faq-structure)).

### `Item` de caso

A raiz da árvore é uma página.

### `Categoria` do caso

A raiz da árvore é uma categoria.

### `Unknown` do caso

A raiz da árvore tem um tipo desconhecido para esta versão do SDK.

---

## Classe `SessionBuilder` { #session-builder }

### Método `setPrechatFields`(String prechatFields)

Um método que pode ser usado para definir campos com informações adicionais que ficarão visíveis para o operador.

O parâmetro prechatFields são campos com informações adicionais no formato JSON. O tipo de parâmetro é `String`.

Retorna a mesma instância da classe [`SessionBuilder`](#session-builder), mas com os campos definidos.

Não lança exceções.

Requer uma instância obtida anteriormente da classe [`SessionBuilder`](#session-builder). A chamada do método não é necessária para obter uma instância da classe [`RoxSession`](#rox-session).

### Método `setMultivistorSection`(String multivisitorSection)

Método que pode ser usado para definir configurações para receber notificações por push do serviço Rox.Chat quando várias sessões estiverem sendo executadas no mesmo dispositivo.

O tipo de parâmetro `multivisitorSection` é `String`.

Retorna a mesma instância da classe [`SessionBuilder`](https://rox.chat/kb/pt/mobile/sdk/android-sdk-handbook.html#session-builder), mas com o campo definido.

Para obter uma instância da classe [`RoxSession`](https://rox.chat/kb/pt/mobile/sdk/android-sdk-handbook.html#rox-session), a chamada do método é opcional.

### Método `setOnlineStatusRequestFrequencyInMillis`(long requestFrequency)

Um método para especificar a frequência das solicitações ao servidor em milissegundos.

O parâmetro `requestFrequency` é `long`.

Retorna a mesma instância da classe [`SessionBuilder`](https://rox.chat/kb/pt/mobile/sdk/android-sdk-handbook.html#session-builder), mas com o valor da opção correspondente definido manualmente.

---

## Protocolo `RoxSession` { #rox-session }

### Método `changeLocation`(String location)

Esse método é usado para alterar o nome de um local em uma sessão existente. Chamar o método é mais ou menos análogo ao resultado da criação de uma nova sessão com parâmetros semelhantes, mas com um nome de local diferente.

O parâmetro location é o nome do local para o qual o valor da sessão atual deve ser alterado. O tipo é `String`.

Pode gerar erros como `AccessError`.

A sessão não deve estar em estado suspenso ou desativado para chamar o método (consulte os métodos [`resume()`](https://rox.chat/kb/pt/mobile/sdk/android-sdk-handbook.html#resume), [`pause()`](https://rox.chat/kb/pt/mobile/sdk/android-sdk-handbook.html#pause) e [`destroy()`](https://rox.chat/kb/pt/mobile/sdk/android-sdk-handbook.html#destroy)).

---

## Interface `Message`

### Método `getSticker`()

Retorna um objeto do tipo [`Sticker`](#sticker).

Não lança exceções.

### Método `canVisitorReact`()

O método retorna true se o visitante puder reagir à mensagem; caso contrário, retorna false.

Não lança exceções.

### Método `canVisitorChangeReaction`()

Esse método retornará verdadeiro se o visitante puder alterar a resposta deixada para a mensagem; caso contrário, retornará falso.

Não lança exceções.

### Método `getReaction`()

O método retorna a reação do visitante às mensagens. O tipo de retorno é [`MessageReaction`](#message-reaction).

---

## Interface `Sticker` { #sticker }

### Método `getStickerId`()

Retorna o ID de um adesivo do tipo `int`.

---

## Tipo enumerado `MessageReaction` { #message-reaction }

### Caso `LIKE`

O visitante gostou da mensagem do operador.

### Case `DISLIK`E`

O visitante não gostou da mensagem do operador.

---

### Tipo enumerado `AttachmentState` { #attachment-state }

### Case `externalChecks`

O arquivo é verificado pelo servidor.

---

## Interface `MessageStream` { #message-stream }

### Método `rateOperator`(int id, String note, int rate, RateOperatorCallback rateOperatorCallback)

Use esse método para enviar a taxa do operador do visitante atual com um comentário.

O parâmetro id é a ID do operador cuja avaliação deve ser enviada para o serviço Rox.Chat. O tipo é `String`.

Parâmetro `note` - comentário para a avaliação do operador, que deve ser enviado ao serviço **Rox.Chat**. O tamanho máximo é de 2000 caracteres. Tipo - opcional `String`.

Parâmetro `byRating` - a classificação do operador a ser enviada ao serviço **Rox.Chat**. A classificação deve ser um número inteiro de 1 a 5 (se você especificar o contrário, o método não executará nenhuma ação). O tipo é `Int`.

O parâmetro `completionHandler` é um objeto `RateOperatorCallback`.

Pode gerar erros como `AccessError`.

!!! Warning "Warning!"
    A implementação do mecanismo de avaliação do operador no chat é deixada para os desenvolvedores do aplicativo móvel!

### Método `respondSentryCall(String id)`

Esse método pode ser usado para transferir o chat para o operador de plantão.

O parâmetro `id` é o ID da mensagem a ser transferida para o operador de plantão. O tipo é `String`.

Pode gerar erros como `AccessError`.

### Método `searchMessages(String query, SearchMessagesCallback callback)` { #search-messages }

O método é usado para pesquisar uma mensagem no histórico por meio de consulta.

Ele pode gerar erros do tipo `AccessError`.

O parâmetro `query` é a consulta a ser pesquisada. O tipo é `String`.

O parâmetro `callback` é um objeto que implementa os métodos do protocolo [`SearchMessagesCallback`](https://rox.chat/kb/pt/mobile/sdk/android-sdk-handbook.html#search-messages-callback). O tipo é `SearchMessagesCallback`.

### Método `setPrechatFields(String prechatFields)`

Envia campos adicionais para o servidor.

Pode gerar erros como `AccessError`.

Parâmetro `prechatFields` - campos adicionais. O tipo é `String`.

### Método `setSurveyListener(SurveyListener surveyListener)` { #set-survey-listener }

Use esse método para definir o objeto [`SurveyListener`](#survey-listener).

O parâmetro `surveyListener` é um objeto que implementa a interface [`SurveyListener`](#survey-listener).

### Método `setGreetingMessageListener(GreetingMessageListener listener)` { #set-greeting-message-listener }

Use esse método para definir uma mensagem de saudação.

O parâmetro `listener` é um objeto que implementa a interface [`GreetingMessageListener`](#greeting-message-listener).

### Método `send(String message, String data, DataMessageCallback dataMessageCallback)`

O método é usado para enviar a mensagem de um visitante para o serviço **Rox.Chat**.

O parâmetro `message` é a mensagem a ser enviada. O tipo é `String`.

O comprimento máximo da mensagem é de 32.000 caracteres. Mensagens mais longas serão cortadas pelo servidor quando forem recebidas.

O parâmetro `data` é usado para enviar um dicionário arbitrário com parâmetros de mensagem para o servidor (se a versão do servidor oferecer suporte a essa funcionalidade). As chaves do dicionário devem ser do tipo `String`, os valores - de qualquer tipo "padrão".

O parâmetro `dataMessageCallback` é um objeto [`DataMessageCallback`](https://rox.chat/kb/pt/mobile/sdk/android-sdk-handbook.html#data-message-callback) ou `null`.

Retorna uma ID gerada aleatoriamente para essa mensagem, que pode ser usada para identificar essa mensagem específica na lógica do aplicativo. O tipo é `String`.

Pode gerar erros do tipo `AccessError`.

Se os objetos [`MessageTracker`](https://rox.chat/kb/pt/mobile/sdk/android-sdk-handbook.html#message-tracker) e [`MessageListener`](https://rox.chat/kb/pt/mobile/sdk/android-sdk-handbook.html#message-listener) existirem, o envio de uma mensagem invocará o método [`added(newMessage, previousMessage)`](https://rox.chat/kb/pt/mobile/sdk/android-sdk-handbook.html#message-added) do protocolo [`MessageListener`](https://rox.chat/kb/pt/mobile/sdk/android-sdk-handbook.html#message-listener) com uma nova mensagem com status [`SENDING`](https://rox.chat/kb/pt/mobile/sdk/android-sdk-handbook.html#sending) do tipo enumerado [`MessageSendStatus`](https://rox.chat/kb/pt/mobile/sdk/android-sdk-handbook.html#message-send-status).

### Método `sendFiles(List<UploadedFile> uploadedFiles, SendFilesCallback sendFilesCallback)` { #send-uploaded-files-callback }

Um método para enviar arquivos carregados para o servidor **Rox.Chat**. O tipo é `UploadedFile`.

Parâmetro `uploadedFiles` - lista de arquivos a serem enviados.

Parâmetro `sendFilesCallback` - objeto que implementa métodos da interface [`SendFilesCallback`](#send-files-callback). O tipo é `SendFilesCallback`.

### Método `send(String surveyAnswer, SurveyAnswerCallback callback)` { #send-survey-answer }

Use esse método para enviar a resposta à pergunta atual recebida pelo método [`SurveyListener.on(nextQuestion, SurveyQuestion)`](#on-next-question).

O parâmetro `surveyAnswer` é a resposta, para uma pergunta do tipo `'stars'`, a resposta será um número inteiro entre 1 e 5 que define a pontuação do operador. Para uma pergunta do tipo `'radio'`, a resposta é o índice do item na matriz `options` a partir de 1. Para uma pergunta do tipo `'comment'`, a resposta é uma string que representa o comentário do usuário. O tipo é `String`.

Pode gerar erros do tipo `AccessError`.

O parâmetro `callback` é um objeto que implementa os métodos do protocolo [`SurveyAnswerCallback`](#survey-answer-callback). O tipo é `SurveyAnswerCallback`.

### Método `uploadFilesToServer(File file, String name, String mimeType, UploadFileToServerCallback uploadFileToServerCallback)` { #upload-files-to-server-file-filename-mime-type-callback }

O parâmetro `file` é o próprio arquivo no formato `File`.

O parâmetro `name` é o nome do arquivo. O tipo é `String`.

Parâmetro `mimeType` - tipo MIME do arquivo transferido. O tipo é `String`.

O parâmetro `uploadFileToServerCallback` é um objeto que implementa os métodos do protocolo [`UploadFileToServerCallback`](#upload-file-to-server-callback). O tipo é `UploadFileToServerCallback`.

### Método `deleteUploadedFiles(String fileGuid, DeleteUploadedFileCallback deleteUploadedFileCallback)` { #delete-uploaded-files-file-guid-callback }

Um método para excluir arquivos do servidor **Rox.Chat**.

O parâmetro `fileGuid` é o ID do arquivo a ser excluído. O tipo é `String`.

O parâmetro `deleteUploadedFileCallback` é um objeto que implementa os métodos do protocolo [`DeleteUploadedFileCallback`](#delete-uploaded-file-callback). O tipo é `DeleteUploadedFileCallback`.

### Método `sendSticker(int stickerId, SendStickerCallback sendStickerCallback)` { #send-sticker }

Use esse método para enviar um adesivo para uma sala de bate-papo.

O parâmetro `stickerId` é o ID do adesivo a ser enviado para o serviço **Rox.Chat**. O tipo é `int`.

Parâmetro `sendStickerCallback` - objeto que implementa a interface [`SendStickerCallback`](#send-sticker-callback). O tipo é `SendStickerCallback`.

### Método `reactMessage(Message message, MessageReaction reaction, MessageReactionCallback callback)`

O método é usado para enviar a reação do usuário a uma mensagem.

Ele pode gerar erros como `AccessError`.

O parâmetro `message` é a mensagem a ser respondida. O tipo é `Message`.

O parâmetro `reaction` é a reação do usuário. O tipo é [`MessageReaction`](#message-reaction).

O parâmetro `callback` é um objeto que implementa os métodos do protocolo `MessageReactionCallback`. O tipo é `MessageReactionCallback`.

### Método `updateWidgetStatus(String data)`

O método é usado para atualizar o status do widget.

Ele pode gerar erros como `AccessError`.

Parâmetro `data` - string no formato `JSON` com o novo status do widget. O tipo é `String`.

### Método `closeSurvey(SurveyCloseCallback callback)` { #close-survey }

Use esse método para fechar um questionário.

Ele pode gerar erros como `AccessError`.

O parâmetro `completionHandler` é um objeto que implementa os métodos do protocolo [`SurveyCloseCallback`](#survey-close-callback). O tipo é opcional.

### Método `clearChatHistory()`

O método é chamado quando o usuário limpa o histórico.

---

## Protocolo `Operator`

### Método `getInfo()`

O método permite que você obtenha informações adicionais sobre um operador específico.

Retorna informações adicionais sobre um operador específico. O tipo é opcional `String`.

---

## Protocolo `SendFilesCallback` { #send-files-callback }

Um objeto de protocolo pode ser passado no parâmetro `callback` do método [`send(uploadedFiles, callback)`](#send-uploaded-files-callback) do protocolo [`MessageStream`](https://rox.chat/kb/pt/mobile/sdk/android-sdk-handbook.html#message-stream).

### Método `onSuccess(Message.Id messageId)`

O método é chamado quando os arquivos são enviados com sucesso usando o método [`send(uploadedFiles:completionHandler:)`](#send-uploaded-files-callback) do protocolo [`MessageStream`](https://rox.chat/kb/pt/mobile/sdk/android-sdk-handbook.html#message-stream).

O parâmetro `messageid` é o ID da mensagem correspondente. O tipo é `Message.Id`.

### Método `onFailure(Message.Id messageId, SendFileError sendFilesError)` { #send-files-callback-on-failure-message-id-error }

Chamado quando o envio de arquivos falha usando o método [`send(uploadedFiles, callback)`](#send-uploaded-files-callback) do protocolo [`MessageStream`](https://rox.chat/kb/pt/mobile/sdk/android-sdk-handbook.html#message-stream).

O parâmetro `messageid` é o ID da mensagem correspondente. O tipo é `String`.

Parâmetro `sendFilesError` - o erro que impediu o envio bem-sucedido do arquivo. Tipo - [`SendFilesError`](#send-files-error).

---

## Tipo enumerado `SendFilesError` { #send-files-error }

Possíveis erros que podem ser passados para o parâmetro `error` do método [`onFailure(messageID, sendFilesError)`](#send-files-callback-on-failure-message-id-error) do protocolo [`SendFilesCallback`](#send-files-callback).

### Caso `CONNECTION_TIMEOUT`

O tempo limite da conexão foi excedido.

### Case `FILE_NOT_FOUND`

O arquivo não foi encontrado.

### Case `FILE_TYPE_NOT_ALLOWED`

O tipo de arquivo não foi resolvido.

### Case `FILE_SIZE_EXCEEDED`

O tamanho permitido do arquivo foi excedido.

### Case `FILE_SIZE_TOO_SMALL`

O arquivo que está sendo enviado é muito pequeno.

### Caso `MAX_FILES_COUNT_PER_CHAT_EXCEEDED`

Número máximo de arquivos para o bate-papo.

### Case `MAX_FILES_COUNT_PER_MESSAGE`

Número máximo de arquivos para uma mensagem.

### Case `UPLOADED_FILE_NOT_FOUND`

Não há suporte para o envio de arquivos no corpo da solicitação.

### Caso `FILE_NAME_INCORRECT`

Nome de arquivo incorreto.

### Caso `FILE_IS_EMPTY`

O arquivo está vazio.

### Case `UNAUTHORIZED`

Erro de autenticação do visitante no servidor.

### Case `UNKNOWN`

Erro desconhecido.

---

## Protocolo `DeleteUploadedFileCallback` { #delete-uploaded-file-callback }

Um objeto que obedece ao protocolo pode ser passado no parâmetro `callback` do método [`deleteUploadedFiles(fileGuid, completionHandler)`](#delete-uploaded-files-file-guid-callback) do protocolo [`MessageStream`](https://rox.chat/kb/pt/mobile/sdk/android-sdk-handbook.html#message-stream).

### Método `onSuccess()`

O método é chamado quando um arquivo é excluído com êxito usando o método [`deleteUploadedFiles(fileGuid, callback)`](#delete-uploaded-files-file-guid-callback) protocolo [`MessageStream`](https://rox.chat/kb/pt/mobile/sdk/android-sdk-handbook.html#message-stream).

### Método `onFailure(DeleteUploadedFileError error)` { #delete-uploaded-file-callback-on-failure-error }

Chamado quando a exclusão do arquivo falha usando o método [`deleteUploadedFiles(fileGuid, callback)`](#delete-uploaded-files-file-guid-callback) do protocolo [`MessageStream`](https://rox.chat/kb/pt/mobile/sdk/android-sdk-handbook.html#message-stream).

O parâmetro `error` é o erro que impediu que o arquivo fosse enviado com êxito. Tipo - [`DeleteUploadedFileError`](#delete-uploaded-file-error).

---

## Tipo enumerado `DeleteUploadedFileError` { #delete-uploaded-file-error }

Possíveis erros que podem ser passados para o parâmetro `error` do método [`onFailure(error)`](#delete-uploaded-file-callback-on-failure-error) do protocolo [`DeleteUploadedFileCallback`](#delete-uploaded-file-callback).

### Case `FILE_NOT_FOUND`

Arquivo não encontrado.

### Case `FILE_HAS_BEEN_SENT`

O arquivo foi enviado.

### Case `UNKNOWN`

Erro desconhecido.

---

## Protocolo `SendStickerCallback` { #send-sticker-callback }

Um objeto de protocolo pode ser passado no parâmetro `callback` do método `send(message, callback)` do protocolo [`MessageStream`](https://rox.chat/kb/pt/mobile/sdk/android-sdk-handbook.html#message-stream).

### Método `onSuccess()`

O método é chamado quando um adesivo é enviado com sucesso usando o método [`sendSticker(withId, callback)`](#send-sticker) do protocolo [`MessageStream`](https://rox.chat/kb/pt/mobile/sdk/android-sdk-handbook.html#message-stream).

### Método `onFailure(error:)` { #send-sticker-callback-on-failure-error }

Chamado quando o envio de um adesivo falha usando o método [`sendSticker(withId, callback)`](#send-sticker) do protocolo [`MessageStream`](https://rox.chat/kb/pt/mobile/sdk/android-sdk-handbook.html#message-stream).

O parâmetro `error` é o erro que impediu que o arquivo fosse enviado com êxito. Tipo - [`SendStickerError`](#send-sticker-error).

---

## Tipo enumerado `SendStickerError` { #send-sticker-error }

Possíveis erros que podem ser passados para o parâmetro `error` do método [`onFailure(error:)`](#send-sticker-callback-on-failure-error) do protocolo [`SendStickerCallback`](#send-sticker-callback).

### Case `NO_CHAT`

Nenhum chat encontrado.

### Case `NO_STICKER_ID`

Nenhum ID de adesivo foi definido.

---

## Interface `Survey`

### Método `getConfig()`

Use esse método para obter a configuração da pesquisa.

Não aceita parâmetros.

Retorna uma instância da classe `Config`.

Não lança exceções.

Não requer que nenhum outro método seja chamado antes.

### Método `getCurrentQuestionInfo()`

Use esse método para obter informações sobre a pergunta atual.

Não aceita nenhum parâmetro.

Retorna uma instância da classe `CurrentQuestionInfo`.

Não lança exceções.

Não requer que nenhum outro método seja chamado antes.

### Método `getId()`

Use esse método para obter o `id` de uma pesquisa.

Não recebe nenhum parâmetro.

Retorna o ID da pesquisa. Tipo `String`.

Não gera exceções.

Não requer que nenhum outro método seja chamado antes.

---

## Interface `SurveyAnswerCallback` { #survey-answer-callback }

Um objeto que implementa a interface pode ser passado no parâmetro `callback` do método [`sendSurveyAnswer(String surveyAnswer, SurveyAnswerCallback callback)`](#send-survey-answer) do protocolo [`MessageStream`](#message-stream).

### Método `onSuccess()`

O método é chamado no sucesso do método [`sendSurveyAnswer(String surveyAnswer, SurveyAnswerCallback callback)`](#send-survey-answer) do protocolo [`MessageStream`](#message-stream).

Não aceita parâmetros.

Não retorna nada.

Não lança exceções.

Não requer que nenhum outro método seja chamado antes.

### Método `onFailure(RoxError<SurveyAnswerError> RoxError)` { #on-failure-survey-answer-callback }

O método é chamado quando o método [`sendSurveyAnswer(String surveyAnswer, SurveyAnswerCallback callback)`](#send-survey-answer) do protocolo [`MessageStream`](#message-stream) falha.

O parâmetro RoxError é o erro que ocorreu. O tipo é RoxError<SurveyAnswerCallback>.

Não retorna nada.

Não lança exceções.

Não requer que nenhum outro método seja chamado primeiro.

---

## Interface `SurveyCloseCallback` { #survey-close-callback }

Um objeto que implementa a interface pode ser passado no parâmetro `callback` do método [`closeSurvey(SurveyCloseCallback callback)`](#close-survey) do protocolo [`MessageStream`](#message-stream).

### Método `onSuccess()`

O método é chamado quando o método [`closeSurvey(SurveyCloseCallback callback callback)`](#close-survey) do protocolo [`MessageStream`](#message-stream) é bem-sucedido.

Não aceita parâmetros.

Não retorna nada.

Não lança exceções.

Não requer que nenhum outro método seja chamado antes.

### Método `onFailure(RoxError<SurveyAnswerError> RoxError)` { #on-failure-survey-close-callback }

O método é chamado quando o método `[closeSurvey(SurveyCloseCallback callback)`](#close-survey) do protocolo [`MessageStream`](#message-stream) falha.

O parâmetro `RoxError` é o erro que ocorreu. O tipo é `RoxError<SurveyCloseError>`.

Não retorna nada.

Não lança exceções.

Não requer que nenhum outro método seja chamado primeiro.

---

## Interface `SurveyListener` { #survey-listener }

Um objeto que implementa a interface pode ser passado no parâmetro `SurveyListener` do método [`setSurveyListener(SurveyListener surveyListener)`](#set-survey-listener) do protocolo [`MessageStream`](#message-stream).

### Método `onSurvey(Survey survey survey survey)` { #on-survey-survey-listener }

Esse método é chamado quando uma nova pesquisa vem do servidor.

O parâmetro `survey` é o objeto de pesquisa.

Ele não retorna nada.

Não lança exceções.

Não requer que nenhum outro método seja chamado antes.

### Método `onNextQuestion(Survey.Question question)` { #on-next-question }

Esse método é chamado em dois casos: quando uma pesquisa é recebida imediatamente após a chamada de [`onSurvey(Survey survey survey)`](#on-survey-survey-listener) e quando uma pergunta anterior é respondida com êxito.

O parâmetro `question` é a pergunta atual.

Ele não retorna nada.

Não lança exceções.

Não requer que nenhum outro método seja chamado antes.

### Método `onSurveyCanceled()` { #on-survey-canceled }

Esse método é chamado quando a pesquisa é fechada no servidor.

Não aceita nenhum parâmetro.

Não retorna nada.

Não lança nenhuma exceção.

Não requer que nenhum outro método seja chamado antes.

---

## Interface `UploadedFile` { #uploaded-file }

A interface é uma abstração que representa um único arquivo que é carregado para o servidor **Rox.Chat**.

A interface é implementada por entidades internas do SDK, cujos objetos podem ser recuperados em chamadas de método para a interface [`MessageListener`](https://rox.chat/kb/pt/mobile/sdk/android-sdk-handbook.html#message-listener).

Os objetos `UploadedFile` são imutáveis. As alterações em qualquer um de seus campos criam um novo objeto.

### Método `getSize()`

Um método que pode ser usado para obter o tamanho de um arquivo anexo.

Não recebe parâmetros.

Retorna o tamanho do arquivo de anexo em bytes. O tipo é `long`.

Não gera exceções.

Não requer que nenhum outro método seja chamado antes.

### Método `getGuid()`

Um método que pode ser usado para obter o `guid` de um arquivo anexo.

Não recebe nenhum parâmetro.

Retorna o valor em forma de texto. O tipo é `String`.

Não gera exceções.

Não requer que nenhum outro método seja chamado antes.

### Método `getFileName()`

Um método que pode ser usado para obter o nome de um arquivo anexo.

Não recebe nenhum parâmetro.

Retorna o nome do arquivo de anexo em formato de texto. O tipo é `String`.

Não gera exceções.

Não requer que nenhum outro método seja chamado antes.

### Método `getContentType()`

Um método que pode ser usado para obter o tipo MIME de um anexo.

Não recebe parâmetros.

Retorna o tipo MIME do anexo em forma de texto. O tipo é `String`.

Não gera exceções.

Não requer que nenhum outro método seja chamado antes.

### Método `getVisitorId()`

Um método que pode ser usado para obter o ID do remetente do arquivo.

Não recebe nenhum parâmetro.

Retorna o valor em forma de texto. O tipo é `String`.

Não lança exceções.

Não requer que nenhum outro método seja chamado antes.

### Método `getClientContentType()`

Um método que pode ser usado para obter o tipo MIME de um anexo.

Não recebe parâmetros.

Retorna o tipo MIME do anexo em forma de texto. O tipo é "String".

Não gera exceções.

Não requer que nenhum outro método seja chamado antes.

---

## Interface `UploadFileToServerCallback` { #upload-file-to-server-callback }

Uma interface cujos métodos são implementados por alguma classe de aplicativo.

Um objeto sujeito à interface pode ser passado no parâmetro `uploadFileToServerCallback` do método [`uploadFilesToServer(File file, String name, String mimeType, UploadFileToServerCallback uploadFileToServerCallback)`](#upload-files-to-server-file-filename-mime-type-callback) da interface [`MessageStream`](#message-stream).

### Método `onSuccess(Message.Id id id, UploadedFile uploadedFile)`

O método é chamado quando um arquivo é carregado com êxito usando o método [`uploadFilesToServer(File file file, String name, String mimeType, UploadFileToServerCallback uploadFileToServerCallback)`](#upload-files-to-server-file-filename-mime-type-callback) da interface [`MessageStream`](#message-stream).

O parâmetro `id` é o ID da mensagem correspondente. O tipo é `Message.Id`.

O parâmetro `uploadedFile` é o arquivo carregado no servidor. O tipo é `UploadedFile`.

Não retorna nada.

Não lança exceções.

Não requer que nenhum outro método seja chamado antes.

O método será chamado depois que o método [`uploadFilesToServer(File file file, String name, String mimeType, UploadFileToServerCallback uploadFileToServerCallback)`](#upload-files-to-server-file-filename-mime-type-callback) for concluído.

### Método `onFailure(Message.Id id id, RoxError<SendFilesCallback.SendFileError> error)`

Chamado quando o envio de um arquivo falha usando o método [`uploadFilesToServer(File file, String name, String mimeType, UploadFileToServerCallback uploadFileToServerCallback)`](#upload-files-to-server-file-filename-mime-type-callback) da interface [`MessageStream`](#message-stream).

O parâmetro `id` é o ID da mensagem correspondente. O tipo é `Message.Id`.

O parâmetro `error` - o erro que impediu o envio bem-sucedido do arquivo. O tipo é `<SendFilesCallback.SendFileError>`.

Não retorna nada.

Não lança exceções.

Não requer que nenhum outro método seja chamado antes.

O método será chamado depois que o método [`uploadFilesToServer(File file file, String name, String mimeType, UploadFileToServerCallback uploadFileToServerCallback)`](#upload-files-to-server-file-filename-mime-type-callback) for concluído.

---

## Tipo enumerado `SurveyAnswerError`

Possíveis erros que podem ser passados para o parâmetro `RoxError` do método [`onFailure(RoxError<SurveyAnswerError> RoxError)`](#on-failure-survey-answer-callback) do protocolo [`SurveyAnswerCallback`](#survey-answer-callback).

### Case `INCORRECT_RADIO_VALUE`

Ocorre quando uma resposta inválida para uma pergunta do tipo `'radio'` foi passada.


### Caso `INCORRECT_STARS_VALUE`

Ocorre quando uma resposta inválida foi passada para uma pergunta do tipo `'stars'`.


### Caso `INCORRECT_SURVEY_ID`

Ocorre quando um ID de pesquisa inválido foi passado ao tentar enviar uma resposta a uma pergunta.


### Caso `MAX_COMMENT_LENGTH_EXCEEDED`

Ocorre quando foi enviada uma resposta a uma pergunta do tipo ``comentário`` que excede o comprimento máximo permitido.


### Caso `NO_CURRENT_SURVEY`

Ocorre quando se tenta enviar uma resposta a uma pergunta quando a enquete atual no servidor já foi encerrada ou ainda não foi iniciada.


### Caso `SURVEY_DISABLED`

Ocorre quando se tenta enviar uma resposta a uma pergunta quando a opção de enquete está desativada nesse servidor.


### Caso `UNKOWN`

Ocorre quando o erro recebido não pode ser tratado pela versão atual da `RoxClientLibrary`.

---

### Tipo enumerado `SurveyCloseError`

Possíveis erros que podem ser passados para o parâmetro `RoxError` do método [`onFailure(RoxError<SurveyCloseError> RoxError)`](#on-failure-survey-close-callback) do protocolo [`SurveyCloseCallback`](#survey-close-callback).

### Caso `INCORRECT_SURVEY_ID`

Ocorre quando um ID de pesquisa inválido foi passado ao tentar fechar uma pesquisa.

### Caso `NO_CURRENT_SURVEY`

Ocorre quando se tenta fechar uma pesquisa quando a pesquisa atual no servidor já foi fechada ou ainda não foi iniciada.

### Caso `SURVEY_DISABLED`

Ocorre quando se tenta fechar uma enquete quando a opção de enquete está desativada nesse servidor.

### Caso `UNKNOWN`

Ocorre quando o erro recebido não pode ser tratado pela versão atual da `RoxClientLibrary`.

---

## Interface `GreetingMessageListener` { #greeting-message-listener }

A interface é uma abstração que representa uma mensagem de saudação.

Um objeto que implementa a interface pode ser passado no parâmetro `listener` do método [`setGreetingMessageListener(GreetingMessageListener listener)`](#set-greeting-message-listener) do protocolo [`MessageStream`](#message-stream).

### Método `greetingMessage(String message)`

O método é chamado quando uma mensagem de saudação é recebida antes que as mensagens de bate-papo sejam recebidas.

O parâmetro `message` é a mensagem de saudação. O tipo é `String`.

Não retorna nada.

Não lança exceções.

Não requer que nenhum outro método seja chamado antes.

---

## Interface `Question` { #question }

### Método `getType()` { #get-type-question }

Use esse método para obter o tipo da pergunta fornecida.

Não aceita parâmetros.

Retorna o tipo da pergunta. Tipo `Type`.

Não lança exceções.

Não requer que nenhum outro método seja chamado antes.

### Método `getText()`

Use esse método para obter o texto de uma pergunta.

Não aceita parâmetros.

Retorna o texto da pergunta. Tipo `String`.

Não lança exceções.

Não requer que nenhum outro método seja chamado antes.

### Método `getOptions()`

Use esse método para obter opções de resposta para uma pergunta.

Não aceita parâmetros.

Retorna uma lista de opções do tipo `List<String>` ou `null` se o tipo de pergunta não for `'radio'`.

Não gera exceções.

Não requer que nenhum outro método seja chamado antes.

---
