RoomOS 巨集中 JavaScript 程式碼的變更

我們已經更新了在 RoomOS 上運行巨集的機器,並且由於這些更新,某些 JavaScript 約定和函數將不再可用於巨集。 特別是, 與 CommonJS 相關的功能不再可用。 需要重寫的代碼的一些常見範例包括:

  1. require(),包括:
    • require ('xapi') - 需要重寫為標準 ECMAScript 匯入。 例如, const xapi = require ('xapi') 更改為 從'xapi'導入 xapi
    • 要求.main
  2. 模組,包括:
    • module.exports - 需要重寫為標準 ECMAScript 匯出
    • module.name - 應替換為 _main_module_name()

這是如何打開和關閉的?

一旦 xConfiguration 巨集「轉譯 評估」從 True 切換False,這些變更就會生效。 此設置已存在很長時間,通過將新版本中的預設值從 True 更改為 False,可以推出更改。

如果宏在此更改中中斷,則顯式設置切換開關 (xConfiguration 宏評估轉譯:True) 是使它們像以前一樣工作的短期修復。 但請注意,這隻是一個臨時解決方案:此切換 將在過渡期后消失

同樣,在較舊的 RoomOS 版本上,通過將切換開關 設置為 False,可以在不升級的情況下測試此更改。

注意:如果在切換 為 False 時將巨集保存在設備上 ,並且您後來決定將切換 TURN 切換回 True,則可能需要在巨集編輯器中重新保存這些宏。

這些更改何時生效?

從 RoomOS May 2025 (11.28)開始,「 評估轉譯 」切換開關的預設值已更改為 False ,這意味著裝置在升級時將預設 切換。 在同一版本中,默認情況下,通過 XAPI 保存宏時的轉譯步驟處於關閉狀態。 如果需要通過 XAPI 進行轉譯,則必須將轉譯命令選項顯式設置為 true。

RoomOS July 2025 (11.30) 開始,當切換設定為 True 時,診斷訊息將顯示亮起。 它仍然可以像以前一樣工作。

展望未來,切換開關將被完全刪除,設備的行為就像設置為 False 一樣。 我們的目標是在 2025 年 11 月推出此更改。 當我們看到有多少客戶能夠更新其宏時,此日期可能會更改,但時間線以月而不是年為單位。 確切日期將在此處以及相關 RoomOS 版本的發行說明中發布。

儘管我們盡最大努力通知和通知更改,但當更改永久存在於 RoomOS 中時,任何客戶看到其宏失敗,仍可以使用通過 Control Hub 為雲註冊設備提供的 (最多) 6 個月的延遲軟體更新來延遲更改。

為什麼有必要這樣做? 技術細節

此更改的主要驅動力是我們已經更新了 JavaScript 引擎以使用 QuickJS,它充當嵌入式系統的現代、更新的 JavaScript 運行時。 在那之後,由於現代 JavaScript 引擎不再需要它,我們現在刪除了對 JavaScript 轉譯的支援。 刪除轉譯所有代碼的額外步驟可減少部署和執行代碼時的載入時間,並降低平臺的複雜性。

JavaScript 引擎開關由 xConfiguration Macros QuickJSEngine:Off 變更為 On。 此更改已在 RoomOS 十二月 2023 (11.11)中推出,我們計劃與 EvaluateTranspiled 在同一時間軸上移除此配置切換開關。

我們進行這些更改是為了確保 RoomOS 發揮最大效能,並且我們可以説明您以高效且安全的方式擴展 JavaScript 擴展的部署。

在 roomos.cisco.com 閱讀有關宏的更多資訊。