Usar complementos y analizadores
11 min
esta página describe cómo usar dos funciones avanzadas de brightsign author plugins de autorun personalizados y scripts de analizador estas instrucciones asumen cierto nivel de familiaridad con brightscript docid\ r7xc0 ze4u0br662li2sj esta no es una guía completa para escribir scripts personalizados para brightsign author; su propósito es proporcionar una descripción general y prácticas recomendadas para escribir esos scripts plugins los plugins le permiten agregar extensiones de script a un autorun de presentación estándar por ejemplo, puede usar plugins para cambiar valores de variables, extraer información de un archivo txt , csv , xml , o json para mostrarlo en pantalla, cambiar el contenido de una lista de reproducción o modificar cómo responde la presentación a entradas externas los plugins tienen dos beneficios principales sobre los autoruns personalizados pueden insertarse fácilmente en múltiples presentaciones, incluidas versiones nuevas y antiguas de la misma presentación no dependen de una determinada versión de autorun o firmware, lo que reduce considerablemente la complejidad asociada con la actualización de implementaciones personalizadas de brightscript plugins de autorun para designar uno o más plugins personalizados en brightsign author si usted es usuario de brightsign author plus, cargue su plugin al servidor mediante la carga de contenido (consulte contenido > scripts docid\ suidf86c1tcspmz9 4jok ) si usted es usuario de brightsign author, vaya directamente al paso 2 para agregar un plugin a la presentación adjúntelo a su presentación (consulte configuración de la presentación > plugin de script docid\ t5qazmmmwc6cw5habym6k ) si es necesario, consulte evento de mensaje del plugin docid\ uoerllt zme dnrbz4rb7 para activar cambios de estado consulte la página de github de brightsign https //github com/brightsign/brightauthor plugins para ejemplos de plugins de brightsign author y author plus estructura del plugin los scripts de plugin deben incluir una función de inicialización con la forma \<plugin name> initialize() las acciones que toman mucho tiempo no deben realizarse en la rutina de inicialización, porque las acciones en la rutina son sincrónicas en su lugar, inicie un temporizador que será capturado por el controlador de eventos del plugin poco después de que se ejecute la rutina y ejecute allí el segmento de código más largo por ejemplo, en lugar de descomprimir un archivo en la rutina de inicialización, hágalo mediante el controlador de eventos del plugin con un temporizador iniciado en la rutina a la función de inicialización se le pasan tres parámetros msgport como objeto uservariables como objeto o como objeto esta es la matriz asociativa bsp del autorun se requiere que la función de inicialización devuelva una matriz asociativa para procesar eventos, el script del plugin debe proporcionar una función processevent() que sea miembro de la matriz asociativa devuelta por la función de inicialización descrita anteriormente a la función processevent() se le pasa un único objeto de evento luego, la función devuelve un valor boolean que indica si el autorun debe continuar procesando el objeto de evento o no la función devolverá true si maneja el evento y el autorun estándar no debe continuar procesando el evento la matriz asociativa que define el objeto también debe incluir una entrada objectname que defina el nombre del objeto el siguiente es un ejemplo de un archivo de plugin de script llamado pizza brs brightscript function pizza initialize(msgport as object, uservariables as object, bsp as object) print "pizza initialize entry" print "type of msgport is ";type(msgport) print "type of uservariables is ";type(uservariables) pizzabuilder = newpizzabuilder(msgport, uservariables, bsp) return pizzabuilder end function function newpizzabuilder(msgport as object, uservariables as object, bsp as object) pizzabuilder = { } pizzabuilder msgport = msgport pizzabuilder bsp = bsp	 pizzabuilder uservariables = uservariables pizzabuilder objectname = "pizzabuilder object" pizzabuilder processevent = pizza processevent return pizzabuilder end function function pizza processevent(event as object) print "pizza processevent entry" print "type of m is ";type(m) print "type of event is ";type(event) ' swallows timer events telling the autorun not to process them if type(event)= "rotimerevent" then return true else return false endif end function recibir un mensaje de plugin el siguiente código de ejemplo muestra cómo escribir un script que recibe un comando de enviar mensaje de plugin docid\ lg8ilydnib0pl8tvxtkbo desde el autorun este código escucha un mensaje enviado al plugin llamado “pizza” y luego imprime el mensaje este ejemplo usa salida de depuración en lugar de sentencias print las sentencias print solo aparecen en la consola serial, mientras que las sentencias de depuración aparecen en el registro del sistema brightscript function pizza processevent(event as object) m bsp diagnostics printdebug("@@ pizza processevent entry") m bsp diagnostics printdebug("@@ type of m is " +type(m)) m bsp diagnostics printdebug("@@ type of event is " +type(event)) if type(event) = "roassociativearray" then if type(event\["eventtype"]) = "rostring" if event\["eventtype"] = "send plugin message" then if lcase(event\["pluginname"]) = "pizza" then 'the plugin name is case sensitive' pluginmessage$ = event\["pluginmessage"] m bsp diagnostics printdebug("@@ received pluginmessage " + pluginmessage$) return true endif endif endif endif return false end function enviar un mensaje de plugin el siguiente código de ejemplo muestra cómo escribir un script que envía una cadena de mensaje para activar un evento de mensaje de plugin docid\ afdht43lrah0tfu6hh tf brightscript print "pizza processevent entry" print "type of m is ";type(m) print "type of event is ";type(event) if type(event) = "rotimer" then pluginmessagecmd = createobject("roassociativearray") pluginmessagecmd\["eventtype"] = "event plugin message" pluginmessagecmd\["pluginname"] = "pizza" pluginmessagecmd\["pluginmessage"] = "toppings" m msgport postmessage(pluginmessagecmd) return true endif return false end function analizadores los analizadores pueden realizar muchas de las mismas funciones personalizadas que los plugins (por ejemplo, extraer información de un archivo txt , csv , xml , o json para mostrarlo en pantalla o cambiar el contenido de una lista de reproducción); sin embargo, en lugar de activarse mediante un comando o asociarse a un evento, los analizadores se asocian con una fuente de datos descargada o un archivo en la tarjeta microsd esto significa que cualquier función que se active por un evento debe escribirse como un plugin, no como un analizador un analizador no necesita trabajar exclusivamente con los datos de la fuente asociada a él una vez que el analizador comienza a ejecutarse, puede usarlo para eliminar un archivo del almacenamiento, enviar un comando udp o descargar otra fuente o archivo scripts de analizador rss los scripts de analizador le permiten manipular conjuntos de datos de fuentes rss entrantes puede crear scripts de analizador rss para una amplia variedad de funciones del sistema y de presentación puede designar un analizador para una fuente rss en brightsign author ( contenido compatible docid\ t5qazmmmwc6cw5habym6k ) el archivo del analizador debe tener una extensión brs los siguientes parámetros se pueden usar con una subrutina de analizador rss xmlfilename$ el nombre del archivo xml este valor es proporcionado por el autorun elementosporíndice un arreglo de descripciones el script debe completar este arreglo si el objeto live text está usando el “índice de elemento” para mostrar elementos de esta fuente itemsbytitle un arreglo asociativo de títulos y descripciones el script debe completar este arreglo si un objeto live text está usando el “título de elemento” para mostrar elementos de esta fuente uservariables un arreglo asociativo de user variables actuales (que son proporcionadas por el autorun) esto se proporciona en caso de que quiera analizar o modificar las user variables la siguiente pieza de código de ejemplo se puede usar para analizar texto rss xml = createobject("roxmlelement") if not xml parse(readasciifile(xmlfilename$)) then print "xml read failed" else if type(xml channel item) = "roxmllist" then index% = 0 for each itemxml in xml channel item itemsbyindex push(stri(index%) + " " + itemxml description gettext()) index% = index% + 1 next endif endif end sub scripts de analizador mrss puede usar un script para analizar fuentes que no sean mrss y proporcionar los datos en un formato que pueda ser utilizado por fuentes media rss docid\ nwu8g3cx7osnce 82u6ec en brightsign author para designar un analizador para una fuente mrss en brightsign author, vaya a configuración de la presentación > contenido compatible > fuentes de datos docid\ t5qazmmmwc6cw5habym6k el archivo del analizador debe tener una extensión brs los siguientes parámetros se pueden utilizar con una subrutina de analizador mrss filename$ el nombre del archivo de feed que se analizará este valor lo proporciona el autorun de la presentación artículos una matriz de matrices asociativas que representan elementos mrss que serán reproducidos por los estados media rss feed esta matriz está vacía al entrar en la subrutina del analizador y el script debe completarla cuando la subrutina del analizador finalice, el autorun proporcionará los datos de la matriz a los estados media rss feed para su reproducción consulte la sección especificación de la matriz de elementos a continuación para obtener una lista de parámetros de matrices asociativas metadatos una matriz asociativa que contiene elementos de metadatos opcionales pertenecientes a toda la lista de reproducción/feed especificación de la matriz de elementos el script del analizador debe agregar matrices asociativas a la matriz artículos ; cada matriz asociativa representa un único elemento multimedia que se reproducirá el orden de los elementos en la matriz especifica el orden de reproducción cada matriz asociativa consta de uno o más pares clave valor todos los valores deben ser cadenas, incluidos los valores numéricos la siguiente tabla describe los pares clave valor aceptados clave valor ejemplo notas url una url de descarga para el archivo brightsign biz/images/myfeedpic1 jpg obligatorio el elemento se ignorará si este valor no está presente mediano video | image | audio | document "video" sugerido si los valores mediano y tipo no están presentes, el valor de mediano tendrá el valor predeterminado "image" tipo video/ , audio/ , image/ , text/html, application/widget "video/ " sugerido si los valores mediano y tipo no están presentes, el valor de tipo tendrá el valor predeterminado "image/ " duración la duración de visualización en segundos "30" opcional este valor se aplica solo a imágenes y no tiene efecto en otros tipos de medios si no se especifica, este valor tendrá el valor predeterminado "15" título el valor para el campo mrss title "myfeedpic1" opcional descripción el valor para el campo mrss description "$5 99" opcional tamaño el tamaño del archivo en bytes "942061" opcional guid un valor único para el archivo "ab05caf" opcional – cuando este valor cambia, el reproductor volverá a descargar el archivo mrsscustomfields un arreglo asociativo de pares clave valor arbitrarios {key1 "custom field a", key2 "custom field b"} opcional – use este arreglo asociativo para incluir campos mrss personalizados especificación de metadatos el objeto metadatos es un arreglo asociativo vacío cuando se entra en la subrutina del analizador este arreglo asociativo puede aceptar pares clave valor opcionales que representan propiedades para todo el feed todos los valores deben ser cadenas, incluidos los valores numéricos la siguiente tabla describe los pares clave valor aceptados clave valor ejemplo notas título un título para el feed "myfeed1" ttl el tiempo de vida en minutos "5" representa cuánto tiempo se almacenará el feed (independientemente de si lo usa la presentación o no) antes de actualizarse el usuario también establecerá un intervalo de actualización al agregar el feed de datos a la presentación; si se especifica el valor ttl , la presentación utilizará el menor de los dos valores para determinar la frecuencia de actualización