Hacer clic en Scripts: crear nuevos mensajes usando notificaciones

El uso de notificadores en scripts de clic hace posible crear nuevos mensajes desde un script que se comporta igual que los mensajes enviados desde un activo. Los scripts de clic de notificador son scripts que se activan cuando un evento comienza o termina. Los scripts de clic de RouteMessage son un nuevo tipo poderoso de script que se ejecuta cada vez que un activo envía un mensaje. En estos scripts, puedes usar el objeto message para crear nuevos mensajes para el activo que activó el script o para un activo diferente.

Ejemplos

Modificando los mensajes del historial de seguimiento del activo añadiendo información de geocercas

Este ejemplo muestra cómo guardar geocercas visitadas en el historial de seguimiento.

1. Puedes usar la regla de evento Dentro de Geocerca disponible en la plantilla Basic One, o crear una nueva regla de evento con una expresión de geocerca como esta:

MFS_geofence_expression.png

2. En Admin > Mapeadores de Dispositivos, mapea la entrada Text1 a CustomString

Screenshot 2024-10-09 at 10.23.50.png

3. Crea un notificador haciendo clic en script en Menú Principal > Admin > Desarrollo > Constructor de Apps > + App

Screenshot 2024-10-09 at 10.24.55.png

4. Ahora especifica un nombre para tu nueva app y ve a 2. Scripts de Clic > + Script de Clic

5. Selecciona el Tipo > tipo Notificador

Screenshot 2024-10-09 at 10.51.08.png

6. Haz clic en Editar y copia-pega el siguiente script:

// El objeto mensaje primero necesita estar conectado al
// usuario objetivo por id. Dado que queremos crear un nuevo
// mensaje para el mismo usuario, podemos obtener el id del
// objeto usuario:
message.connect(user.id);
// Al llamar a connect, también hemos cargado los datos más recientes
// para el usuario en el objeto mensaje.
 
// Para asegurar que el mensaje que estamos creando
// sea visible después del mensaje que activó este script,
// moveremos su marca de tiempo utc por 1 segundo de esta manera:
var t = user.trackPoint.utcTimestamp.getTime() + 1000;
message.trackPoint.setUtcTimestamp(new Date(t));
 
// Ahora establecemos el valor de la variable CustomString
// del mensaje que estamos creando.
// Nota: para que esto funcione, la variable especificada debe estar mapeada
// en un mapeador de dispositivos utilizado por el usuario objetivo.
// El nuevo valor vendrá de la regla de evento.
// Usando context.resolve podemos resolver cualquier expresión
// que pueda ser utilizada en la sección Notifier de la regla.
// Aquí, eso es '[GEOFENCE_NAME]'.
message.fields.set(
  'CustomString',
  context.resolve('[GEOFENCE_NAME]')
);
 
// Llamar a esto activará el procesamiento real del
// mensaje modificado en el script.
message.process();

7. Ejecute el script desde el editor para asegurarse de que funciona. Tenga en cuenta que en una ejecución desde el editor, la expresión especificada en context.resolve no se resuelve, sino que se utiliza tal cual.
8. Luego guarde el script.

Pruebas

Con esta configuración, cuando un mensaje de un activo activa la regla Dentro de Geocerca, se generará inmediatamente otro mensaje para él, que contendrá el nombre de la geocerca como el valor de la variable CustomString. Esta variable efectivamente denota el “nombre de la última geocerca visitada.”

Screenshot 2024-10-09 at 12.13.17.png

Variable del Conductor

Puede guardar la información del conductor para rastrear el historial de manera similar al ejemplo anterior, con los siguientes cambios:

- En lugar de una regla Dentro de Geocerca, use una Regla de Evento de ID de Conductor

- Use el mismo script, solo que con [GEOFENCE_NAME] reemplazado por [DRIVER_NAME].

Esto hará que la variable CustomString contenga el nombre del último conductor.

Evitar dependencias circulares

Un mensaje creado por el script X no debe terminar activando X nuevamente. Eso resultará en el siguiente texto de error en la ventana de terminal.