觸發器
DMflow.chat聊天機器人支持LINE訊息、OpenAI的Chat、Image、Audio、SendGrid郵件、Telegram訊息、Openrouter以及Google Calendar和Google Drive整合。
觸發器的定義
每個節點都是用JSON組成,什麼是JSON(JavaScript Object Notation),你可當作是一個傳遞和儲存資料的結構。
舉例: { "key": "value" }, 我們將key取名叫"鍵",value取名叫"值"。而每個節點儲存的方式為,節點名稱除了start名稱為start外,其餘都是uuid,所以假設有個節點叫97d860d4-5a7f-49e0-804a-7ce4891076bf,如果儲存在那個節點的資料為datas,可以參考以下格式。
觸發器分為觸發流程和背景流程
觸發流程是檢查輸入的文字是否有錯誤以及可以呼叫預設的LLM(預設Gemini 2.0 flash)進行補充文字。
背景流程是當觸發流程抵達END且已經完成儲存、更新或刪除,所執行的流程。
觸發流程包含項目
IF: 根據條件(conditions)引導流程進入 true 或 false 節點。
ASSIGN: 將對話中獲取的內容儲存在特定欄位內。
RESPONSE: 根據填寫的 Prompt 生成新的對話輸出(output),並可通過 ASSIGN 節點儲存。
ERROR: 當輸入的欄位內容錯誤時,可以輸出ERROR節點,強制結束此對話。
STOREQUERY: 填寫一段對話,從中擷取 JSON,JSON 包含文字、檔案或其他訊息。根據這些訊息使用 ASSIGN 節點進行保存。
ROW_EXIST: 用於檢查過濾完畢的資料是否存在
ME: 將可以取得是哪位訪客調用這個觸發器。
IF 節點包含條件式,你可以透過條件式指向其他節點。
ASSIGN節點可以覆蓋鍵或者新增值
Response節點,只能用於表單問答,Fields為抓取欄位,Prompt為提示詞,Response為詢問用戶。若你將Response_only填寫為true,則不理會Fields的欄位,而是直接取得LLM回覆的回應。
舉例:
Fields:["姓名", "信箱"], Prompt: 請取得訪客填寫的姓名和信箱, Response: 您好,請填寫您的姓名和信箱方便我們連繫您。Response_only=false。若取得姓名和信箱則會回填到Fields內,儲存格式為以下。
Prompt: 請幫我翻譯訪客的問題, Response: 您好,請填寫訪客的問題,我將幫你翻譯成中文。Response_only=true。則會取得翻譯完的中文,儲存格式為以下。
Error節點,用於假設條件錯誤或格式錯誤會回覆訪客。Response填寫為何發生錯誤的原因即可。
StoreQuery節點,用於保存暫時的用戶資訊包含詢問。每個節點下方都有Output可以參考這個節點可以取得那些資料。跟Me節點的差別只有Me節點會直接通過而StoreQuery會等待下次用戶回應。
RowExist節點,用於過濾某些欄位查看該列表是否存在,例如: 找尋用戶信箱'[email protected]'是否存在。
選擇表單為自己選定該領域所包含的所有表。是否不理會過濾碼,預設為會檢查這個表單的權限,若開啟不理會過濾碼則是admin權限,無視訪客權限查找全部文檔。
背景流程在觸發流程到達 END 且完成儲存、更新或刪除後執行。背景流程使用觸發流程產生的資料進行進一步處理。
參數說明
每個參數可以透過'{' 自動搜尋可填寫的參數。若是input則參數一定要放在雙大括號內{{xxx}}。若是textarea則參數可以透過{{xxx}} {{yyy}} 這樣方式渲染輸出。
其他函數使用
hash(text: string)
轉為hash數字
{{Utils.hash(''1234)}}=1914461635
uuid()
可以產生uuid v7
{{Utils.uuid()}}=01960608-fab0-7045-8757-186afa41b41e
randomValue(length: number)
可以產生長度相等的亂數
{{Utils.randomValue(3)}}=L6s
now(timezone: string)
將當前時間轉成yyyy-MM-dd'T'HH:mm:ssXXX
{{Utils.now('+08:00')}}=2025-04-05T20:59:33+08:00
toSeconds(dataString: string)
將yyyy-MM-dd'T'HH:mm:ssXXX轉為秒數
{{Utils.toSeconds('2025-04-05T00:00:00+08:00')}}=1743782400
generateSignature(body: string, secret: string, algorithm: 'SHA256'|'SHA1'|'SHA384'|'SHA512'|'MD5')
{{Utils.generateSignature('test', '123', 'MD5')}}=9kN+nANEEEvn7U7PFW01EQ==
encrypt(decode:string)
數值會跟不同的機器人和領域有所不同
無範例
decrypt(encode:string)
數值會跟不同的機器人和領域有所不同
無範例
passwdVerify(originalPassword: string, encodedPassword: string)
用BCrypt加密後的密碼跟原始密碼比較
無範例
passwdEncode(password: string)
使用BCrypt加密
無範例
atob(text: string)
Base64解碼
無範例
背景流程預設項目
HTTP: 調用外部HTTP資源
IF: 與觸發流程相同,根據條件引導流程。
ASSIGN: 與觸發流程相同,儲存內容。
LOOPS: 根據指定欄位會進行迴圈。
SEARCH: 可以指定表單撈出表單內的資料。
INSERT: 插入新資料(新列(row))。
UPDATE: 修改指定的ID資料
DELETE: 刪除指定的ID資料
NATIVE_UTILS: 用於使用我提供的功能,目前有將表單的檔案PresignedUrl的功能,讓第三方可以讀取。
測試
進入測試會以Server-Sent Events方式,讓你看到每一個節點的移動,你可以縮小並點選節點參數,可以看到該節點的參數。
注意
觸發器背景調用是調用第三方產品是使用租戶提供的密鑰,密鑰在資料庫都會加密保存,若有疑問請勿使用,觸發器除了測試的調用不會記錄,租戶可以自行查看觸發器的調用紀錄。
Last updated