< Todos los temas
Imprimir

Configuración del SDK para Android

El SDK de Android tiene varias dependencias. Puedes consultar los niveles de dependencia directamente en Maven . Ten en cuenta que la última versión se publica en Maven con retraso .

Algoritmo para instalar la biblioteca Chat2Desk en su proyecto

  1. Edite el archivo build.gradle en la raíz de su proyecto para agregarlo mavenCentral()a la lista de repositorios:

    allprojects {
        repositories {
            jcenter()
            mavenCentral() //add this line
        }
    }
  2. Añade Chat2Desk a la sección de dependencias de build.gladle . Pega la versión actual del registro de cambios :

    dependencies {
        ...
        // Paste the actual version from the changelog
        implementation 'com.chat2desk:chat2desk_sdk:${Version}'
    }
  3. Agregue compatibilidad con Java 8 a su proyecto en el archivo build.gradle :

    android {
        ... //other configs
        compileOptions {
            sourceCompatibility JavaVersion.VERSION_1_8
            targetCompatibility JavaVersion.VERSION_1_8
        }
    }
  4. Si apunta a dispositivos Android con API por debajo de 26, debe usar el complemento Gradle de Android versión 4.0 o posterior y habilitar la desugaring de la biblioteca principal .

Inicializando el SDK

La aplicación de Android requiere los siguientes permisos:
<uses-permission android:name="android.permission.INTERNET"/>

Si necesita interactuar con MediaStore o archivos multimedia en el almacenamiento compartido, debe usar uno o más permisos de almacenamiento:

<uses-permission android:name="android.permission.READ_MEDIA_IMAGES"/>
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO"/>
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO"/>

Luego crea una instancia del cliente Chat2Desk, del tipo IChat2Desk, e inicialízala:

val settings = Settings(
    authToken = WIDGET_TOKEN,
    baseHost = BASE_HOST,
    wsHost = WS_HOST,
    storageHost = STORAGE_HOST
)
val chat2desk: IChat2Desk = Chat2Desk.create(settings, context)

WIDGET_TOKEN, BASE_HOST, WS_HOST, STORAGE_HOSTdebe tomarse de la página Configuración > Widget + Chat en línea  para un canal conectado específico.

Eliminación del SDK

Utilice el método IChat2Desk.closeantes de eliminar la instancia IChat2Desk para evitar pérdidas de memoria.

Conectando y desconectando

Utilice el método IChat2Desk.startpara conectarse y IChat2Desk.stopdesconectarse del servicio.

Puede rastrear el estado de la conexión a través de la propiedad connectionStatus: Flow<ConnectionState>.

Consulte este ejemplo de código para comprender cómo funciona:

class SomeClass(private val chat2desk: IChat2Desk) {
    private val coroutineScope = CoroutineScope(Dispatchers.Main)
    
    init {
        coroutineScope.launch {
            chat2desk.connectionStatus.collect {
                println(it)
            }
        }
    }
    public suspend fun start() {
        chat2desk.start()
    }

    public suspend fun stop() {
        chat2desk.stop()
    }
}

Recibir mensajes

Para trabajar con mensajes, la biblioteca debe estar conectada al servicio Chat2Desk.

Todos los mensajes entrantes y salientes se almacenan en caché dentro de la biblioteca de forma predeterminada y se puede acceder a ellos sin conexión.

Para obtener una lista de mensajes, debe utilizar la propiedadmessages: Flow<List<Message>>

chat2desk.messages.collect { messages ->
    println(messages)
}

Descargando mensajes del servidor

Para trabajar con mensajes, la biblioteca debe estar conectada al servicio Chat2Desk.

IMPORTANTE : El SDK descarga un máximo de 100 mensajes del servidor a la vez

  1. chat2desk.fetchMessages() – Obtener una lista de los mensajes más recientes. Descarga 100 mensajes.
  2. chat2desk.fetchNewMessages() Permite obtener una lista de mensajes nuevos. En este caso, el SDK descarga del servidor solo los mensajes enviados después del último mensaje recibido por el dispositivo.
  3. chat2desk.fetchMessage(loadMore = true)Permite obtener una lista de mensajes antiguos. En este caso, el SDK descarga del servidor los mensajes enviados antes del primer mensaje que ya está en el dispositivo, pero no más de 100 a la vez .

Buscar mensajes

Hay dos maneras de buscar mensajes: texto completo y búsqueda por operador. Ambos métodos permiten buscar mensajes por propiedad Message.text y devolver una lista de mensajes List[Message].

Búsqueda de texto completo

chat2desk.fullTextSearch(query: String): List<Message>

  • Las palabras de la consulta se convierten en lexemas utilizando el tokenizador de acuerdo con las siguientes reglas:
  • Los tokens solo pueden constar de caracteres ASCII y el suplemento Latin-1 (idiomas occidentales). Todos los demás caracteres se consideran espacios.
  • Las palabras separadas por un guion (-) se dividen en dos tokens. Por ejemplo, “texto completo” se divide en “completo” y “texto”.
  • Los tokens no distinguen entre acentos y mayúsculas y minúsculas.

Puede buscar una palabra o frase completa o limitar sus resultados utilizando los siguientes caracteres:

  • Excluya los resultados de una palabra precediéndola de “-“. Por ejemplo, “ficción -ciencia” incluye todos los resultados de búsqueda de ficción y excluye los que contienen “ciencia”.
  • Puedes especificar prefijos colocando el carácter * al final de una palabra. Por ejemplo, fict* incluirá todos los resultados de búsqueda de ficción y ficticio. El SDK no admite actualmente la búsqueda por sufijos.

Búsqueda mediante operadores

chat2desk.searchByQuery(query: String, options: SearchOptions?): List<Message>

data class SearchOptions(
    /**
     * Оператор поиска
     */
    val operator: QueryStringOperator = QueryStringOperator.CONTAINS,
    /**
     * Чувствительность к регистру.
     * Только для символов ASCII и Latin-1 (западные языки)
     */
    val caseSensitivity: Boolean = false,
)

enum class QueryStringOperator {
    BEGINSWITH,
    CONTAINS,
    ENDSWITH,
    LIKE,
    EQUAL,
    NOTEQUAL
}

En la configuración de búsqueda, puede especificar el operador que se utilizará para buscar mensajes.

OperadorDescripción
BEGINSWITHSe evalúa como verdadero si la expresión de cadena izquierda comienza con la expresión de cadena derecha. Es similar a “contains”, pero solo coincide si la expresión de cadena derecha está al principio de la expresión de cadena izquierda.
CONTAINSSe evalúa como verdadero si la expresión de cadena derecha aparece en cualquier lugar de la expresión de cadena izquierda.
ENDSWITHSe evalúa como verdadero si la expresión de cadena izquierda termina con la expresión de cadena derecha. Es similar a “contains”, pero solo coincide si la expresión de cadena izquierda está al final de la expresión de cadena derecha.
LIKESe evalúa como verdadero si la expresión de cadena izquierda coincide con la expresión de cadena comodín derecha. Una expresión de cadena comodín es una cadena que utiliza caracteres regulares con dos comodines especiales:el carácter * coincide con cero o más caracteres;El carácter comodín ? coincide con cualquier carácter.Por ejemplo, una cadena con el carácter comodín “d?g” coincide con las palabras “perro”, “dig” y “dug”, pero no con “ding”, “dg” o “un perro”.
EQUALSe evalúa como verdadero si la cadena izquierda es lexicográficamente igual a la cadena derecha.
NOTEQUALSe evalúa como verdadero si la cadena izquierda no es lexicográficamente igual a la cadena derecha.

Envío de mensajes

Para trabajar con mensajes, la biblioteca debe estar conectada al servicio Chat2Desk.

  • Enviar mensaje:sendMessage(txt: String)

    chat2desk.sendMessage(txt)
     
  • Enviar mensaje con archivo adjunto: sendMessage(msg: String, attachedFile: AttachedFile)para enviar un archivo adjunto, debe crear una instancia de la clase AttachedFile y pasarla al método.

    val attachedFile = AttachedFile.fromUri(
        context,
        uri,
        originalName,
        mimeType,
        fileSize
    )
    chat2desk.sendMessage(txt, attachedFile)
  • Reenviar mensaje:resendMessage(msg: Message)

    chat2desk.resendMessage(message)

Envío de información del cliente

El   servicio permite enviar información sobre el cliente. Por defecto, hay dos campos disponibles name:phone

chat2desk.sendClientParams(name, phone)

El servicio también transfiere una lista de campos personalizados definidos en la empresa customFields: Flow<List<CustomField>>

val fields: List<CustomField>
chat2desk.customFields.collect {
  fields = it
}
chat2desk.sendClientParams(name, phone, mapOf(fields[0].id to "value"))

Otros ajustes

  • Información sobre el operador:Flow<Operator?>

    chat2desk.operator.collect {operator ->
      println(operator)
    }
  • Error de recepción de errores:Flow<Throwable?>

    chat2desk.error.collect {error ->
      println(error.message)

    }
Close Search Window