Click Scripts: activar solicitudes HTTP personalizadas cuando cambia una geovalla

Los Scripts de Clic para geocercas te permiten activar solicitudes HTTP personalizadas cada vez que un operador crea, modifica o elimina una geocerca.

Cuando un usuario modifica una geocerca, un Script de Clic para geocercas puede acceder a los datos de esa geocerca y ver el tipo de acción que se realizó. Con esta información, puedes crear solicitudes HTTP GET o POST, reenviando la información en un formato personalizado compuesto dentro del script, lo que te permite integrar tu aplicación con tus propios servicios web. Además, una modificación de geocerca se realiza solo si el script se ejecuta con éxito para asegurarse de que los datos se reenvíen de manera precisa y completa, según lo definido por el script.

Conocimientos Requeridos

Para utilizar con éxito las solicitudes HTTP, se asume que sabes cómo configurar y usar servicios web, o al menos tienes un servicio web existente donde se conoce el formato de los datos que puede recibir e interpretar correctamente.

Habilitar Scripts de Clic

Para poder crear Scripts de Clic, necesitas habilitar el privilegio _EditClickScript. Para hacer esto, sigue estos pasos:

1. Accede a los privilegios y características de la aplicación.

2. En la sección ScriptApp, marca todos los privilegios.

mceclip0.png

3. Inicia sesión en tu Aplicación.

4. Desde el Menú Principal, ve a Admin > Roles.

5. En la ventana de Roles, haz clic en el rol para el cual deseas habilitar Scripts de Clic.

En 2. Privilegios, habilita los privilegios de ScriptApps de la misma manera que lo hiciste para la aplicación.

Crear un Script de Clic

1. Para agregar un script de clic, ve al Menú Principal > Admin > Desarrollo > App Builder. Esto te mostrará una lista de tus Apps.

2. Haz clic en un +App para crear una nueva.

3. Establece un nombre y una descripción opcional, selecciona el usuario _Administrator, y haz clic en Guardar.

mceclip2.png

4. Haz clic en el botón + Click Script

mceclip3.png

5. Establece un nombre para tu nuevo script, selecciona Geofence, y haz clic en Editar.

mceclip4.png

Aquí debes especificar un nombre para el nuevo Script de Clic. Elige el tipo “Geofence”. La opción “Habilitado” determina si el script se ejecutará en modificaciones reales de geocercas. El botón “Editar” te llevará a la ventana del “Editor de Scripts”.

mceclip5.png

El script autogenerado a la izquierda está ahí para mostrar la forma básica de manejar diferentes operaciones de geocercas. A la derecha, puedes ver los objetos y métodos disponibles en los Scripts de Clic para geocercas:

  • geofence almacena información de geocercas - geofence.name es el nombre de la geocerca, etc. (apunta el cursor a un elemento particular en el árbol de objetos para obtener más información).
  • click.operation almacena la información sobre la acción realizada.
  • http.GET(url,query) y http.POST(url,body) son métodos utilizados para ejecutar solicitudes http. Después de invocar uno de estos, los datos de respuesta se pueden leer desde http.statusCode, http.statusMessage y http.response.
  • log(x) se puede usar para registrar datos del script con fines de prueba.

Ejemplo de Uso

Escenario básico: queremos enviar la información sobre cada geocerca actualizada o eliminada a un servicio web.

  1. Configure un servicio web para recibir solicitudes post. En este ejemplo, se espera que el cuerpo de la solicitud contenga una representación JSON de un objeto que contenga la información sobre la acción realizada y la geocerca en la que se realizó, similar a esto:
     
    {
      "operation":"Add",
      "geofence":
        {
          "name":"circularGeofence1",
          "type":"CircularGeofence",
          "center":
            {
              "longitude":1.234,
              "latitude":5.678,
              "altitude":0
            },
            "vertices":null,
            "radius":90.123
         }
    }
  2. Vaya a “Admin” ? “Click Scripts”, y agregue un nuevo Click Script, nombrándolo, por ejemplo, “ForwardGeofenceData”. Déjelo habilitado y haga clic en “Edit” para ingresar al editor de scripts.
  3. Elimine el script predeterminado y reemplácelo con:

     
    var body = '{"operation":"'+click.operation+'","geofence":'+geofence+'}';
    http.POST('ADDRESS_OF_YOUR_SERVICE', body);

    En la primera línea, formatea el cuerpo en el formato descrito. Tenga en cuenta que el objeto geofence se convierte automáticamente en una representación JSON cuando se usa de esta manera.
    En la segunda línea, ADDRESS_OF_YOUR_SERVICE debe ser la dirección del servicio web que ha configurado.

  4. Haga clic en “Probar Script” para ejecutar una prueba del script. Tenga en cuenta que esto enviará la solicitud real, por lo que tendrá que manejar y limpiar los datos de prueba manualmente. Además, para ejecutar una prueba con éxito, debe seleccionar una geocerca existente en el panel de Geocerca. Esa será la geocerca para la que se ejecutará la prueba, es decir, los datos de esa geocerca estarán disponibles para el script.
    Finalmente, tenga en cuenta que la ejecución de la prueba simula la situación en la que se realizó un tipo de operación seleccionado en la geocerca seleccionada, pero no altera la geocerca de ninguna manera.

  5. Si la ejecución fue exitosa, el panel de salida del editor contendrá solo la marca de tiempo. Si falla, contendrá el texto del error. Si utiliza la función log() en cualquier parte del script, también contendrá los datos que ha registrado con fines de prueba. También puede verificar la respuesta HTTP y el estado de la última solicitud exitosa en los campos apropiados en el editor de scripts.
  6. Acepte y guarde el script. Tenga en cuenta que si modificó el script después de la última ejecución de prueba, se le pedirá que ejecute el script una vez más al guardar. Esto no asegura que el script siempre se ejecute con éxito, pero ayuda a prevenir guardar scripts con errores de sintaxis evidentes.
  7. Intente agregar, editar o eliminar una geocerca. Si la operación fue exitosa, el servicio web debería haber recibido la solicitud.

Opciones avanzadas

Aquí hay sugerencias sobre algunas otras cosas que podrías hacer:

  • Es posible que desees formatear los datos en un formato diferente. Podrías hacer esto utilizando opciones de formato de cadenas de JavaScript y accediendo directamente a los campos de la geocerca, como usar geofence.center.longitude para obtener la longitud del punto central de una geocerca circular. En ese caso, asegúrate de manejar la posibilidad de que una geocerca no sea circular, en cuyo caso la propiedad geofence.center es null, y el uso de geofence.center.longitude haría que el script falle, impidiendo la adición o modificación de todos los tipos de geocercas excepto las circulares.
  • Puedes configurar el servicio y el script para trabajar en múltiples pasos, y/o hacer que la ejecución del script sea dinámica basada en el cuerpo de la respuesta recibida del servicio. Esto se realizaría mediante una combinación de solicitudes http.GET / http.POST y leyendo e interpretando el cuerpo de la cadena http.response. Asegúrate, sin embargo, de que el script esté siempre sincronizado con precisión con el servicio, ya que un script fallido impediría la modificación de la geocerca.

Habilitar el registro en tiempo de ejecución

Puedes habilitar la función log y el registro de errores de Click Scripts en tiempo de ejecución editando el archivo NLog.config en la carpeta IIS bajo la carpeta de instalación del servidor GpsGate (si no estás alojando tu propio servidor, puedes contactar al soporte para acceder a los archivos).
Bajo <targets>, deberías agregar una nueva entrada de destino como esta:

 
<target name="TARGET_NAME" xsi:type="File" fileName="FILE_NAME" layout="${longdate} | ${message}"/>

donde TARGET_NAME es un nombre único para el destino del archivo y FILE_NAME es el nombre del archivo de registro que deseas crear con una ruta completa al archivo.
Bajo <rules>, agrega una entrada como esta:

 
<logger name="NAME_OF_CLICK_SCRIPT" minlevel="Info" writeTo="TARGET_NAME"/>

Dónde NAME_OF_CLICK_SCRIPT es el nombre del script de clic que deseas registrar en el archivo, y TARGET_NAME es el nombre único del destino que agregaste anteriormente.
Los errores y datos registrados a través del método log en ese Click Script se escribirán en el archivo especificado.