函數模板與變數渲染
在 DMflow 中,我們使用雙大括號 {{ }} 來進行變數的渲染與函數調用。
基礎語法提示
- 自動完成: 大多數參數輸入框支援 autocomplete,輸入
{{通常會跳出可用變數建議。 - Input 欄位: 若要在 input 欄位進行計算或函數調用,必須將整個表達式包在
{{ }}內。- 範例:
{{ '今天氣溫' + data.conversation.temperature_today + '度c' }}
- 範例:
- Textarea (多行文本): 可以在文字中自由穿插
{{ }}。- 範例:
今天氣溫 {{data.conversation.temperature_today}} 度c 明天氣溫 {{data.conversation.temperature_tomorrow}} 度c
- 範例:
各場景的應用差異
1. 觸發器 (Triggers)
- 自動拆箱 (Auto Unboxing): 若 Input 欄位中只有一個變數,系統會自動將其值「拆箱」取出。
- 範例:
["a"]會變成a。但若有兩個以上的數值則不會。
- 範例:
- 關鍵字分隔: 若 placeholder 提示使用逗號
,分隔,您在輸入關鍵字時會自動分離,不需要手動輸入逗號。
2. 閒聊角色 (Gossip Role)
閒聊角色的提示詞(Prompt)目前僅支援文字替換,暫不支援複雜的函數運算。
- 內建參數:
cur_time:同時提供日期、時間以及星期幾。user_profile:包含信箱、手機以及使用者名稱。
- 傳遞變數: 一個領域目前支援最多三個傳遞變數。
- 範例:
假設傳遞變數為
{"test": "1234"}。 提示詞寫:提示詞為 {{ test }}實際輸出:提示詞為 1234
- 範例:
假設傳遞變數為
3. 機器人流程 (Chatbot Flow)
- 常數前綴 (Constant Prefix): 除了開始與回覆節點外,其餘節點若要使用函數,必須選擇
constant前綴,且務必使用{{ }}包覆。 - 常用數據源: 變數通常以
data.user,data.sys_user,data.conversation,data.session開頭。
4. 資源節點 (Resource)
- 網址路徑替換: 除了 Domain 部分外,路徑(Path)皆可用
{{ }}取代。- O 正確:
https://app.dmflow.chat/{{ path }} - X 錯誤:
https://{{ domain }}/test
- O 正確:
- 網域限制: 為了確保穩定性,Domain 不能使用純 IP 或通用雲端伺服器網域。建議綁定自有 Domain。若系統偵測到網域無法使用,將會自動關閉該資源節點功能。
內建函數庫 (Utils)
我們提供了一系列強大的 Utils 函數供您調用:
| 函數 | 說明 |
|---|---|
Utils.generateSignature(body, secret, algo) |
生成簽章algo 支援:HMACSHA256, HMACSHA1, HMACSHA384, HMACSHA512, HMACMD5 (也可省略 HMAC 前綴)。 |
Utils.hash(text) |
雜湊計算 使用 MurmurHash 演算法,回傳值為 number (可能為負數)。 |
Utils.atob(text) |
Base64 解碼 將 Base64 編碼的文字轉回原始文字。 |
Utils.toSeconds(date) |
轉秒數 將 yyyy-MM-ddTHH:mm:ssZZZ 格式轉為 UTC 秒數。 |
Utils.randomValue(length) |
隨機字串 產生指定長度的隨機英數字串 ( A-Z, a-z, 0-9)。 |
Utils.extractTime(value, format, offset) |
時間提取value 為秒數。format 為目標格式 (如 yyyy-MM-dd)。offset 為時區 (如 +08:00)。 |
Utils.extractTime(value, format) |
時間提取 (預設時區) 使用機器人流程的預設時區進行轉換。 |
Utils.now(offset) |
取得現在時間 回傳格式為 yyyy-MM-ddTHH:mm:ssZZZ。 |
Utils.format(dateString, format) |
時間格式轉換 將 yyyy-MM-ddTHH:mm:ssZZZ 格式轉為其他指定格式。 |
Utils.encrypt(text) |
加密 使用機器人和領域建立時產生的專屬密鑰進行加密。 |
Utils.decrypt(text) |
解密 使用機器人和領域建立時產生的專屬密鑰進行解密。 |
時間格式說明
- 領域 (Domain): 時間格式統一為 ISO 8601 標準:
yyyy-MM-ddTHH:mm:ssZZZ。 - 機器人 (Bot): 內部運算主要使用 UTC 秒數。