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:
2. En Admin > Mapeadores de Dispositivos, mapea la entrada Text1 a CustomString
3. Crea un notificador haciendo clic en script en Menú Principal > Admin > Desarrollo > Constructor de Apps > + App
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
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.”
- Utilice el simulador de activos para probar si obtiene los resultados deseados.
- Puede ver los resultados directamente en la ventana de terminal por ejemplo.
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.