Modifiche al codice JavaScript nelle macro RoomOS

Abbiamo aggiornato il meccanismo che esegue le macro su RoomOS e, come risultato di questi aggiornamenti, alcune convenzioni e funzioni JavaScript non saranno più disponibili per le macro. In particolare, le funzioni relative a CommonJS non sono più disponibili. Alcuni esempi comuni di codice che necessitano di riscrittura sono:

  1. require(), tra cui:
    • require('xapi') - deve essere riscritto nell'importazione standard ECMAScript . Ad esempio, const xapi = require('xapi') modificato per importare xapi da 'xapi'
    • require.main
  2. modulo, tra cui:
    • module.exports - deve essere riscritto nell'esportazione standard ECMAScript
    • module.name - dovrebbe essere sostituito con _main_module_name()

Come viene attivato e disattivato?

Queste modifiche diventano effettive una volta che xConfiguration Macros EvaluateTranspiled viene attivato da True a False. Questa impostazione è presente da molto tempo e la modifica viene implementata modificando il valore predefinito nelle nuove versioni da True a False.

Se le macro si interrompono su questa modifica, l'impostazione esplicita del tasto di ripristino (xConfiguration Macros EvaluateTranspiled: True) è una correzione a breve termine per farle funzionare come prima. Si noti, tuttavia, che questa è solo una soluzione temporanea: questo interruttore scomparirà dopo un periodo di transizione.

Allo stesso modo, nelle versioni precedenti di RoomOS questa modifica può essere testata senza eseguire l'aggiornamento impostando il tasto di attivazione su False.

Nota: se una macro viene salvata sul dispositivo mentre il tasto di attivazione è False e successivamente si decide di TURN il tasto di riattivazione su True, potrebbe essere necessario salvare nuovamente tali macro nell'editor di macro.

Quando entreranno in vigore queste modifiche?

Il valore predefinito del toggle EvaluateTranspiled è stato modificato in False a partire da RoomOS May 2025 (11.28), il che significa che i dispositivi cambieranno per impostazione predefinita quando vengono aggiornati. Nella stessa versione la fase di transpilazione durante il salvataggio delle macro tramite XAPI è disattivata per impostazione predefinita. Se la transpilazione è richiesta tramite XAPI, l'opzione del comando transpile deve essere impostata esplicitamente su true.

A partire da RoomOS luglio 2025 (11.30) verrà visualizzata una diagnostica quando l'interruttore è impostato su True. Funzionerà ancora come prima.

Andando avanti il toggle verrà rimosso del tutto e il dispositivo si comporterà come se fosse impostato su False. Puntiamo a implementare questa modifica nel novembre 2025. Questa data può cambiare man mano che vediamo quanti dei nostri clienti sono in grado di aggiornare le loro macro, ma la sequenza temporale viene misurata in mesi, non in anni. Le date esatte saranno pubblicate qui e nelle note di rilascio delle relative versioni di RoomOS.

Tutti i clienti che, nonostante i nostri sforzi nel tentativo di notificare e informare sulle modifiche, vedono le loro macro fallire quando le modifiche sono permanentemente presenti in RoomOS possono comunque utilizzare l'aggiornamento software ritardato (fino a) 6 mesi fornito tramite Control Hub per i dispositivi registrati nel cloud per ritardare la modifica.

Perché è necessario? Dettagli tecnici

Il driver principale di questo cambiamento è che abbiamo aggiornato il nostro motore JavaScript per utilizzare QuickJS, che funge da runtime JavaScript moderno e aggiornato per i sistemi embedded. Successivamente, poiché non è più necessario con un moderno motore JavaScript, stiamo rimuovendo il supporto per la traspilazione di JavaScript. La rimozione del passaggio aggiuntivo di traspilazione di tutto il codice riduce il tempo di caricamento durante la distribuzione e l'esecuzione del codice, oltre a ridurre la complessità della piattaforma.

L'opzione del motore JavaScript è controllata da xConfiguration Macros QuickJSEngine: Disattivato modificato in On. Questa modifica è stata implementata in RoomOS dicembre 2023 (11.11) e prevediamo di rimuovere questo interruttore di configurazione sulla stessa sequenza temporale di EvaluateTranspiled.

Stiamo apportando queste modifiche per garantire che RoomOS funzioni al massimo e che possiamo aiutarti a scalare la distribuzione delle estensioni JavaScript in modo efficiente e sicuro.

Maggiori informazioni sulle macro su roomos.cisco.com.