El SDK de Android tiene varias dependencias. Puedes verificar los niveles de dependencias directamente en Maven. Ten en cuenta que la última versión aparece en Maven con un retraso.

Algoritmo para instalar la biblioteca Chat2Desk en tu proyecto.

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

    allprojects {
        repositories {
            jcenter()
            mavenCentral() //add this line
        }
    }

  2. Agregue Chat2Desk a la sección de dependencias build.gladle. Inserte la versión actual del registro de cambios:

    dependencies {
        ...
        // Paste the actual version from the changelog
        implementation 'com.chat2desk:chat2desk_sdk:${Version}'
    }

  3. Agrega compatibilidad con Java 8 a tu proyecto en el archivo build.gradle:

    android {
        ... //other configs
        compileOptions {
            sourceCompatibility JavaVersion.VERSION_1_8
            targetCompatibility JavaVersion.VERSION_1_8
        }
    }

  4. Si te diriges a dispositivos Android con una API inferior a 26, deberás usar la versión 4.0 o posterior del complemento de Android para Gradle y habilitar la eliminación de azúcar de la biblioteca principal.

Inicialización del SDK

La aplicación para 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 varios 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"/>

A continuación, cree una instancia de un cliente de Chat2Desk, como IChat2Desk, e inicialícela:

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_HOST debe obtener el > Widget + Chat en vivo desde la página Configuración para un canal conectado específico.

Quitar el SDK

Utilice el método antes de eliminar una instancia para evitar pérdidas de memoria.IChat2Desk.closeIChat2Desk 

Conexión y desconexión

Utilice el método para conectarse y desconectarse del servicio.IChat2Desk.startIChat2Desk.stop

Puede realizar un seguimiento del estado de su 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()
    }
}

Recepción de 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 usar el comando messages: Flow<List<Message>>

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

Carga de mensajes desde el servidor

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

IMPORTANTE: KFOR carga un máximo de 100

  1. chat2desk.fetchMessages() – Obtén una lista de mensajes recientes. Sube 100 mensajes.
  2. chat2desk.fetchNewMessages() Le permite obtener una lista de mensajes nuevos. Sin embargo, el SDK solo descarga mensajes del servidor que se enviaron después del último mensaje recibido por el dispositivo.
  3. chat2desk.fetchMessage(loadMore = true) Le permite obtener una lista de mensajes antiguos. En este caso, el SDK descarga mensajes del servidor que se enviaron antes del primer mensaje que ya está en el dispositivo, pero no más de 100 a la vez.

Buscar mensajes

Hay dos formas de buscar mensajes: texto completo y búsqueda a través de operadores. Ambos métodos le permiten buscar mensajes por propiedad y devolver una lista de mensajes. Message.text List[Message]

Búsqueda de texto completo

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

  • Las palabras de la consulta se convierten en tokens mediante el tokenizador de acuerdo con las siguientes reglas:
  • Los tokens solo pueden constar de caracteres ASCII y el complemento Latin-1 (idiomas occidentales). Todos los demás caracteres se consideran espacios.
  • Las palabras separadas por un guión (-) se separan en dos tokens. Por ejemplo, el texto completo se divide en texto completo y texto.
  • Los tokens no son sensibles a los signos diacríticos ni a las mayúsculas y minúsculas.

Puede buscar una palabra o frase completa, o limitar los resultados con los siguientes caracteres:

  • Excluya los resultados de una palabra prefijándola con un símbolo “-“. Por ejemplo, ficción-ciencia incluye todos los resultados de búsqueda de la palabra ficción y excluye aquellos que contienen la palabra ciencia.
  • Puede especificar prefijos colocando el * al final de la palabra. Por ejemplo, fict* incluirá todos los resultados de búsqueda de ficción y ficticio. El SDK aún no admite búsquedas de sufijos.

Búsqueda a través de 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.

Operador

Descripción

BEGINSWITH

Expresa true si la expresión de cadena izquierda comienza con la expresión de cadena derecha. Esto es similar a contains, pero solo coincide si la expresión de cadena derecha está al principio de la expresión de cadena izquierda.

CONTAINS

Expresa true si la expresión de cadena derecha aparece en cualquier parte de la expresión de cadena izquierda.

ENDSWITH

Expresa true si la expresión de cadena izquierda termina con una expresión de cadena derecha. Esto es similar a contains, pero solo coincide si la expresión de cadena izquierda está al final de la expresión de cadena derecha.

LIKE

Expresa true si la expresión de cadena izquierda coincide con el comodín de la expresión de cadena derecha. Una expresión de cadena comodín es una cadena que utiliza caracteres regulares con dos caracteres especiales comodín:

  • * corresponde a cero o más de cualquier carácter;
  • ¿comodín? coincide con cualquier carácter.

Por ejemplo, la cadena comodín “d?g” coincide con las palabras “dog”, “dig” y “dug”, pero no con “ding”, “dg” o “a dog”.

EQUAL

Expresa true si la cadena izquierda es lexicográficamente igual a la derecha.

NOTEQUAL

Expresa true si la cadena izquierda no es lexicográficamente igual a la cadena derecha.

Envío de mensajes

Para trabajar con mensajes, necesita que la biblioteca esté conectada al servicio Chat2Desk.

  • Enviar un mensaje: sendMessage(txt: String)

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

    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. De forma predeterminada, hay dos campos disponibles y . namephone

chat2desk.sendClientParams(name, phone)

El servicio también envía 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 operador: Flow<Operator?>

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

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

Demo

Demostración del SDK de Kotlin: muestra la funcionalidad básica del SDK.

Was this article helpful?
YesNo

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Close Search Window