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:
A continuación, activamos la opción Advanced Behavior & Events y presionamos el ícono de vista previa:
La ventana de edición de código quedará disponible como resultado de los pasos anteriores:
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.
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
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.
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.
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
.
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.
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
.
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.
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
.
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
.
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:
- Hacer que el campo
tax
sea visible:show field tax
- Activar el campo
name
del multivaluebeneficiaries
:show field beneficiaries:name
- Esconder el campo
record
:hide field record
- Deshabilitar el campo
income
del multivaluebeneficiaries
: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>
.
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
).
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>
.
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):
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 #
- 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.