Funciones adicionales para usar en variables dinámicas

En acciones avanzadas, puede utilizar funciones personalizadas además de funciones basadas en MathJS:

Funciones de cadena

indexOf (pajar, aguja)

Si la cadena "aguja" se encuentra en la cadena o lista "pajar", la función devuelve su posición (basada en cero), de lo contrario se evalúa a -1.

Ejemplos:
 indexOf("ABCD", "A") //returns 0
 indexOf("ABCD", "CD") //returns 2
 indexOf("ABCD", "E") //returns -1
 indexOf(["a","b","c"], "a") //returns 0
 indexOf(["a","b","c"], "bc") //returns -1

getIndexValue(pajar, índice)

Si el número "índice" es menor que la lista "pajar", la función devuelve el valor situado en la posición "índice", en caso contrario, dará error.

Ejemplos:
 getIndexValue(["a","b","c"], 0) //returns a
 getIndexValue(["a","b","c"], 1) //returns b

substr (cadena, inicio [, longitud])

Esta función devuelve una subcadena de la cadena original, comenzando desde la posición de inicio basada en cero. Si se especifica la longitud, devuelve esa cantidad de caracteres y, de lo contrario, devuelve el resto de la cadena.

Ejemplos:
 substr("ABCD", 1) //returns "BCD"
 substr("ABCD", 2, 1) //returns "C"
 substr("ABCD", 5) //returns ""

rebanada (cadena, inicio [, final])

Esta función devuelve una subcadena de la cadena original, comenzando desde la posición de inicio basada en cero. Si se proporciona una posición final, devuelve todos los caracteres hasta, pero sin incluir, el carácter en esa posición. De lo contrario, devuelve el resto de la cadena.

Las posiciones negativas para el inicio o el final se cuentan desde el lado derecho de la cadena.

Ejemplos:
 slice("ABCD", 1) //returns "BCD"
 slice("ABCD", 0, 2) //returns "AB"
 slice("ABCD", 1, -1) //returns "BC"
 slice("ABCD", 2, 1) //returns ""

superior (cuerda)

Esta función devuelve la cadena proporcionada, convertida a mayúsculas.

Ejemplo:
upper("aBcD") //returns "ABCD"

inferior (cuerda)

Esta función devuelve la cadena proporcionada, convertida a minúsculas.

Ejemplo:
lower("aBcD") //returns "abcd"

longitud (cuerda)

Esta función devuelve la longitud de la cadena.

Ejemplos:
 length("") //returns 0
 length("ABCD") //returns 4

Funciones lógicas

igual (valor1, valor2)

Esta función devuelve verdadero si valor1 y valor2 son el mismo valor y tipo, o en caso contrario, falso. Sintaxis alternativa para `valor1 === valor2`. (`value1 == value2` es una comparación más débil)

Ejemplos:
 equal(2, 1) //returns false
 equal(1, 1) //returns true
 equal(1, "1") //returns false (different types)

ifElse (condición, valueIfTrue, valueIfFalse)

Esta función comprueba la condición proporcionada. Si la condición es verdadera (o veraz), devuelve valueIfTrue; de lo contrario, devuelve valueIfFalse.

Ejemplos:
 ifElse(equal(1, 5), "equal", "not equal") //returns "not equal"
 ifElse(equal(2, 2), "equal", "not equal") //returns "equal"

Funciones Regex

match(valor, patrón[, banderas, groupIndex])

matchAll(valor, patrón, matchIndex[, banderas])

Estas funciones realizan la correspondencia de expresiones regulares y comprueban si el "valor" proporcionado coincide con el "patrón" de expresión regular proporcionado. 

El argumento opcional flags es una cadena de banderas de expresión regular de una sola letra que permite un comportamiento avanzado (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#advanced_searching_with_flags). El uso más común para un argumento de bandera es pasar "i" para una coincidencia insensible a mayúsculas y minúsculas.

Aquí hay dos funciones relacionadas:

  • Ta función match busca una única coincidencia y admite un uso avanzado con grupos de captura numéricos, utilizando el último argumento para seleccionar el grupo de captura deseado (0 es toda la coincidencia, 1 es el primer grupo de captura, y así sucesivamente).
  • La versión matchAll admite múltiples coincidencias, utilizando el argumento matchIndex para seleccionar la coincidencia deseada. (0 es la primera coincidencia, 1 es la segunda coincidencia, y así sucesivamente).

En ambos casos, si hay coincidencia el resultado será el contenido de la cadena, o cuando se utilice como cuerpo de una variable booleana dinámica, será true si hay coincidencia o false si no la hay.

Ejemplos:
// Basic usage
match("abc", "b.") // returns "bc" (or true as a Dynamic Boolean Variable)
match("abc", "c.") // returns no match (or false as a Dynamic Boolean Variable)

// Advanced usage

// Case-insensitive
match("aBc", "b.", "i") // returns "Bc", since casing was ignored with the "i" flag

// Capture Groups
match("acd bce", "b(c.)", "", 1); // returns "ce" - the whole match was "bce", but the first capture group is (c.)

// Multiple matches
matchAll("acd bce", "c.", 1); // returns "ce" - "c." matches both "cd" and "ce", the last argument (and usage of matchAll) selected the second one.

Funciones de fecha

formatDate(fecha[, formatoCadena])

Toma una fecha numérica y la convierte a un formato legible para el ser humano.  Esto es útil para mostrar una fecha a un agente después de haberle hecho alguna manipulación numérica.

El valor de date  está en milisegundos desde el 1 de enero de 1970.

El formato formatString  acepta sustituciones estándar Unicode .

Nota: La cadena resultante estará en la zona horaria del agente, por lo que puede ser útil incluir la zona horaria en la cadena de formato.
Ejemplos:
// Default formatting
formatDate(946684800000)                                      // 01/01/2000 12:00:00 am (+00:00)
 
// Custom formatting
formatDate(946684800000, "eeee, MMMM do yyyy, h:mm:ss a (z)")     // Saturday, January 1st 2000, 12:00:00 am (GMT)
formatDate(946684800000, "eeee, MMMM do yyyy, h:mm:ss a (xxxxx)") // Saturday, January 1st 2000, 12:00:00 am (+00:00)

formatDateISO(fecha)

Toma una fecha numérica y la convierte en una cadena de fecha formateada, en formato ISO 8601. Esto resulta útil cuando se trabaja con componentes de fecha o se envía la fecha a una llamada API. 

El valor de date está en milisegundos desde el 1 de enero de 1970.

Nota: La cadena resultante estará en la zona horaria del agente.

Ejemplos: 
formatDateISO(946684800000)                    // 1999-12-31T19:00:00-05:00

dateToMilliseconds(fecha)

Toma una cadena de fecha, y la convierte en un número de milisegundos desde el 1 de enero de 1970, para su manipulación numérica.

Se espera que la fecha proporcionada esté en el formato por defecto utilizado por las variables de script.

Ejemplos:
dateToMilliseconds("01/01/2000 12:00:00 am (+00:00)"); // 946684800000

formatDate(dateToMilliseconds({{Scripter.Customer Call Start Time}}) + 5 * 60 * 1000) // Five minutes (multiplied by 60 sec/minute and 1000 ms/sec to convert to ms) after the customer was connected

formatDuration(duración)

Convierte una duración numérica, en milisegundos, a un formato legible por humanos.  

Ejemplo:
formatDuration(5 * 1000 * 60 + 55); // "00:05:55"

durationToMilliseconds(durationCadena)

Convierte una cadena de duración en un valor numérico.

Ejemplo:
durationToMilliseconds({{Scripter.Customer Call Duration}}) // How long has the customer been connected

formatDuration(5 * 1000 * 60 - durationToMilliseconds({{Scripter.Customer Call Duration}})) // Countdown until the customer has been on the line for five minutes