Skip to content

JavaScript 節點

概述

JavaScript 節點(JS Node)允許在 IVR 流程中執行自定義 JavaScript 代碼,實現複雜的業務邏輯。通過此節點,開發者可以存取流程變數、進行複雜計算、調用自定義函數和操作 followData 對象。

功能說明

支援在 IVR 流程中直接編寫 JavaScript 函數,可訪問和修改流程變數、進行數據運算和邏輯控制。所有 JavaScript 代碼執行在沙盒環境中,確保安全性。

設定參數

參數說明
節點名稱(Node Name)JavaScript 節點的識別名稱
JS 函數(JS Functions)輸入自定義的 JavaScript 代碼

操作步驟

  1. 拖拉「JavaScript 節點」到 IVR 編輯區
  2. 雙擊打開配置面板
  3. 輸入 節點名稱,如「數據處理」
  4. JS 函數 編輯區輸入 JavaScript 代碼
  5. 代碼模板示例:
    javascript
    function call(callInfo) {
      // 訪問流程變數
      const array = [0, 1, 2, 3];
      // 進行循環和運算
      for (let i = array.length - 1; i > 0; i--) {
        const j = Math.floor(Math.random() * (i + 1));
        [array[i], array[j]] = [array[j], array[i]];
      }
      // 存儲結果到 followData
      for (let i = 0; i < array.length; i++) {
        var times = 'times' + '_' + i;
        callInfo.followData.put(times, array[i]);
      }
    }
  6. 點擊 確認 保存配置

使用範例

洗牌演算法實現隨機分配:

javascript
function call(callInfo) {
  // 初始化座席列表
  const agents = [1001, 1002, 1003, 1004];
  // 費舍爾-耶茨洗牌演算法
  for (let i = agents.length - 1; i > 0; i--) {
    const j = Math.floor(Math.random() * (i + 1));
    [agents[i], agents[j]] = [agents[j], agents[i]];
  }
  // 將隨機排列的座席存儲到 followData
  for (let i = 0; i < agents.length; i++) {
    callInfo.followData.put('agent_' + i, agents[i]);
  }
}

根據客戶屬性計算優先級:

javascript
function call(callInfo) {
  const customerType = callInfo.followData.get('customerType');
  const transactionAmount = callInfo.followData.get('amount');

  let priority = 5;  // 默認優先級

  if (customerType === 'VIP') {
    priority = 1;
  } else if (transactionAmount > 10000) {
    priority = 2;
  } else if (customerType === 'Regular') {
    priority = 3;
  }

  callInfo.followData.put('priority', priority);
}

注意事項

重要提醒

  • JavaScript 代碼執行在安全沙盒中,僅支援標準 JavaScript API
  • 避免無限迴圈或過於複雜的計算,以免影響 IVR 性能
  • 代碼執行超時會導致流程中斷,應設定合理的時間限制
  • 確保代碼中訪問的變數已在流程中定義

最佳實踐

  • 使用有意義的函數名稱和註解提升代碼可讀性
  • 在生產環境前充分測試複雜的 JavaScript 邏輯
  • 使用 callInfo.followData 物件進行資料傳遞,確保資料在流程中可用
  • 定期監控 JavaScript 節點的執行性能,優化低效代碼
  • 避免在 JavaScript 中存儲大量資料,以防內存溢出

操作畫面參考

Js - 操作畫面 1

承暉資訊資源中心