Logo

Lenguaje de scripting para eventos adicionales

Lenguaje de scripting para eventos adicionales #

En el apartado correspondiente de este manual se describen la sintaxis y las funciones disponibles en el lenguaje de scripting. Entre otras cosas, este recurso permite programar la ejecución de distintos tipos de eventos en un paso de funnel del tipo page. Antes de comenzar, se recomienda repasar las secciones Variables, Comentarios, Operadores aritméticos, Comparadores, Declaración de funciones, Estructuras de control, Estructuras de datos, Funciones matemáticas, Funciones para texto y Otras funciones.

Editor de código #

Para acceder al editor de código, se debe editar el paso del funnel de tipo page donde se desee ejecutar eventos adicionales. Como primer paso, ingresamos a la sección Layout Settings:

Acceder al editor de código

A continuación, activamos la opción Advanced Behavior & Events y presionamos el ícono de vista previa:

Vista previa del editor de código

La ventana de edición de código quedará disponible como resultado de los pasos anteriores:

Editor de código

En las secciones siguientes se explican las distintas alternativas para aprovechar esta funcionalidad de Prisma Campaigns.

Funciones #

Set - With #

Esta función permite establecer el valor de un campo con una constante, un valor de otro campo, el resultado de una función o una operación. Este campo puede tomarse a través de un paso de captura de datos en la página, o puede ser parte del modelo de datos sin participar de esta operación. Si el campo en cuestión interviene en la captura de datos, el valor que se defina en el código aparecerá automáticamente al ejecutar el paso.

La sintaxis general para utilizar este recurso es set field <fieldID> with <expr> y las variantes de <expr> se detallan a continuación.

  1. Set - With con una constante

En este caso, <expr> representa un valor definido. Por ejemplo, para establecer el valor del campo balance en 450:

set field balance with 450
  1. Set - With con el valor de otro campo

Bajo este escenario, se puede emplear el valor existente en un campo para asignarle el mismo a otro. Si se desea almacenar en el campo balance el mismo valor presente en taxes, se puede hacer lo siguiente:

set field balance with field taxes

Es importante destacar que el campo taxes no tiene que pertenecer necesariamente a un data capture o multivalue dentro de page, sino que puede ser cualquiera que se encuentre en el modelo de datos general o de campaña.

  1. Set - With con el resultado de una función

Para ilustrar esta alternativa, se utilizan dos funciones arbitrarias multiplyBy10(value) y divideBy10(value) que se definen a continuación:

function multiplyBy10(value) do
  return value * 10
end

function divideBy10(value) do
  return value / 10
end

Estas funciones pueden emplearse para establecer los valores de dos campos cualesquiera interest y taxes como se indica debajo:

set field interest with multiplyBy10(500)
set field taxes with divideBy10(field extra)

Luego de ejecutar estas dos líneas de código, interest será igual a 5000 mientras que taxes será igual al resultado de dividir el valor del campo extra por 10.

  1. Set - With con el resultado de una operación

Esta opción permite establecer el valor de un campo utilizando cualquier operación válida definida en el lenguaje de scripting. Por ejemplo, para darle un valor a balance que sea igual al presente en taxes más 500:

set field balance with field taxes + 500

Esta alternativa puede considerarse en cierto modo como una combinación de las dos primeras en el sentido que hace posible establecer el valor de un campo empleando el de otro y una constante.

Set - From #

Set - From itera la ejecución de la función de forma constante mientras se esté realizando un paso del funnel de tipo page. Si se desea definir un campo en base a otro que pertenece a un data capture o multivalue en la página, utilizar Set - From permite detectar los cambios que se hagan en estos de manera inmediata. La sintaxis es la misma que en el caso Set - With utilizando from en vez de with.

  1. Set - From con el valor de otro campo incluido en un data capture en la página:
set field balance from field preBalance * 500

En este caso, balance tomará el valor existente en preBalance multiplicado por 500. Cuando preBalance sea modificado en un data capture dentro de la página, balance reflejará dichos cambios en tiempo real.

  1. Set - From a un campo de un multivalue activo:
set field beneficiaries:name from "Jeff"

El ejemplo de arriba muestra cómo asignar el valor Jeff al campo name del multivalue beneficiaries.

  1. Set - From a un campo de un multivalue activo con el valor de otro campo del mismo control:
set field beneficiaries:balance from field beneficiaries:extra * 10

En este caso, el campo balance del multivalue beneficiaries activo tomará el valor de extra multiplicado por 10.

Set - Visible When #

Esta función permite definir la visibilidad de un campo de un data capture o multivalue dentro de la página cuando se cumple una determinada condición. La sintaxis a utilizar es set field <fieldID> visible when <expr> donde <fieldID> representa el nombre del campo en cuestión.

  1. Set - Visible When a un campo de un data capture según una condición:
set field balance visible when field type == "account"

En este ejemplo, balance será visible si type es igual a account.

  1. Set - Visible When a un campo de un data capture según el resultado de una función:
function setVisibleSum (value1, value2) do
  sum = value1 + value2
  if sum > 200 then
    return true
  end
end

set field revenue visible when fn(field income, 150)

Cuando la suma del valor presente en income y 150 sea superior a 200, revenue será visible como lo indica la función definida con el nombre setVisibleSum.

  1. Set - Visible When a un campo de un multivalue activo con el valor de otro campo del mismo control:
set field beneficiaries:phoneNumber visible when field beneficiaries:contact == "Phone"

En este caso, el campo phoneNumber de beneficiaries estará activo si contact toma el valor Phone.

Show/Hide #

En caso de que se precise establecer visibilidad de un campo de data capture o multivalue de forma imperativa, el lenguaje de scripting provee las alternativas ilustradas en los ejemplos que aparecen a continuación:

  1. Hacer que el campo tax sea visible: show field tax
  2. Activar el campo name del multivalue beneficiaries: show field beneficiaries:name
  3. Esconder el campo record: hide field record
  4. Deshabilitar el campo income del multivalue beneficiaries: hide field beneficiaries:income

When - Change #

Esta función hace posible ejecutar acciones al detectar cambios en un campo de data capture o multivalue y extraer en una variable el valor actual del campo. La sintaxis general es la siguiente:

when field <fieldID> change as <variable> do
  <expr>
end

donde <variable> es la variable a la que se le asignará el valor actual del campo <fieldID>.

  1. When - Change al detectar cambios en campo de data capture:
when field revenue change as revenueValue do
  if revenueValue > 500 and field taxes > 200 then
    show field beneficiaries
  end
end

Cuando se realicen cambios en el campo revenue, en primer lugar se guardará el nuevo valor en revenueValue. A continuación, se activará beneficiaries si se cumplen las condiciones establecidas (revenueValue > 500 y taxes > 200).

  1. When - Change detectando cambios en campo de multivalue activo:
when field project:revenue change as revenueValue do
  if revenueValue > 500 and field project:taxes > 200 then
    show field project:income
  end
end

Este ejemplo es similar al anterior, solamente que involucra el campo revenue del multivalue denominado project.

When - Validate #

Esta función permite ejecutar validaciones de los valores ingresados en campos de data capture o en un multivalue. La sintaxis para utilizarla se detalla a continuación:

when field <fieldID> validate as <variable> do
  <expr>
end

donde <variable> representa la variable a la que se le asignará el valor actual del campo <fieldID>.

  1. When - Validate para ejecutar la validación de un campo de data capture:
when field monthly_payment validate as mcost do
  if mcost > field total_income then
    return "Monthly Payment should not be greater than " + field total_income
  end
end

En este caso, la validación se visualizará como se muestra en la siguiente imagen si el valor del campo monthly_payment supera el valor de total_income (200 en el ejemplo actual):

Ejecución de una validación

  1. When - Validate para validar un campo de un multivalue activo:
when field beneficiaries:percentage validate as perc do
  if perc > 50 then
    return "Percentage should not exceed 50%"
  end
end

Dado el código de arriba, la validación se disparará si el valor del campo percentage de beneficiaries es mayor a 50.

Ejemplos Avanzados #

  1. Validación de un campo asociado a distintos elementos de un multivalue:
when field beneficiaries validate as beneficiaries do
  c = alen(beneficiaries)
  i = 0
  total = 0
  while i < c do
    beneficiary = aget(beneficiaries,i)
    total = total + get(beneficiary,"percentage") # ex: {percentage: 40, name: 'john'}
    i = i+1
  end
  if total > 100 then
    return "The sum of percentages of all beneficiaries can't exceed 100"
  end
end

En este ejemplo, para cada elemento del multivalue beneficiaries se obtendrá el valor del campo percentage. Si la suma total entre todos los valores de este campo excede a 100, se ejecutará la validación.