Modifications apportées au code JavaScript dans les macros RoomOS
Nous avons mis à jour les machines qui exécutent les macros sur RoomOS, et à la suite de ces mises à jour, certaines conventions et fonctions JavaScript ne seront plus disponibles pour les macros. En particulier, les fonctions liées à CommonJS ne sont plus disponibles. Voici quelques exemples courants de code nécessitant une réécriture :
require(), y compris :require('xapi')- a besoin d'être réécrit selon le scriptimportECMAScript standard. Par exemple,const xapi = require('xapi')remplacé parimport xapi from 'xapi'require.main
module, y compris :module.exports- doit être réécrit selon le script ECMAScript standardexportmodule.name- devrait être remplacé par_main_module_name()
Comment l'activer et le désactiver ?
Ces modifications prennent effet une fois xConfiguration Macros EvaluateTranspiledque vous passez de Trueà. False Ce paramètre existe depuis longtemps et le changement est appliqué en modifiant la valeur par défaut dans les nouvelles versions de Trueà False.
Si les macros ne fonctionnent pas à la suite de cette modification, régler explicitement la bascule (xConfiguration Macros EvaluateTranspiled: True) est une solution à court terme pour qu'elles fonctionnent comme avant. Notez toutefois qu'il ne s'agit que d'une solution temporaire : cette option disparaîtra après une période de transition.
De même, sur les anciennes versions de RoomOS, cette modification peut être testée sans mise à niveau en réglant le bouton sur. False
Remarque : Si une macro est enregistrée sur l'appareil alors que le bouton est activé Falseet que vous décidez par la suite de revenir à cette option True, il peut être nécessaire de réenregistrer ces macros dans l'éditeur de macros.
Quand ces modifications entreront-elles en vigueur ?
La valeur par défaut de la EvaluateTranspiledbascule a été modifiée pour Falsedémarrer avec RoomOS en mai 2025 (11,28), ce qui signifie que les appareils changeront par défaut en cas de mise à niveau. Dans la même version, l'étape de transpilation lors de l'enregistrement de macros via XAPI est désactivée par défaut. Si la transpilation est requise via XAPI, l'option de commande transpile doit être explicitement définie sur true.
À partir de RoomOS en juillet 2025 (11h30), un diagnostic sera affiché lorsque le commutateur sera réglé sur. True Il fonctionnera toujours comme avant.
À l'avenir, la bascule sera complètement supprimée et l'appareil se comportera comme s'il était réglé sur. False Notre objectif est de déployer ce changement dans RoomOS en novembre 2026 (27.0).
Tous les clients qui, malgré tous nos efforts pour les notifier et les informer des modifications, voient leurs macros échouer alors que les modifications sont définitivement en place dans RoomOS peuvent toujours utiliser la mise à jour logicielle différée (jusqu'à) 6 mois fournie via Control Hub pour les appareils enregistrés dans le cloud afin de retarder la modification.
Pourquoi est-ce nécessaire ? Détails techniques
Ce changement est principalement dû au fait que nous avons mis à jour notre moteur JavaScript pour utiliser QuickJS, qui sert d'environnement d'exécution JavaScript moderne et actualisé pour les systèmes embarqués. Par la suite, comme cela n'est plus nécessaire avec un moteur JavaScript moderne, nous allons supprimer la prise en charge de la transpilation du JavaScript. La suppression de l'étape supplémentaire qui consiste à transpiler tout le code réduit le temps de chargement lors du déploiement et de l'exécution du code, tout en simplifiant la plateforme.
Le commutateur du moteur JavaScript est contrôlé par xConfiguration Macros QuickJSEngine: Off Ce changement a été déployé dans RoomOS en décembre 2023 (11.11), et nous prévoyons de supprimer ce bouton de configuration dans les mêmes délais que. OnEvaluateTranspiled
Nous apportons ces modifications pour garantir que RoomOS fonctionne au maximum et pour vous aider à étendre le déploiement des extensions JavaScript de manière efficace et sécurisée.
Pour en savoir plus sur les macros, rendez-vous sur roomos.cisco.com.