[ { "id": "4a5ecedfe4b56019", "type": "tab", "label": "ChatKit Sessions and Threads", "disabled": false, "info": "ChatKit / Agent Builder example.\n\nBefore running:\n- import the flow, then configure each red-marked `OpenAI API` node with your own `Service Host`\n- replace `wf_pub_replace_me` with the published workflow id from Agent Builder\n- session cancellation needs a real `cksess_...` id returned by the create-session call\n- thread operations need a real `cthr_...` id after a ChatKit client has created conversation history\n\nThis flow keeps all request data under `msg.payload`, which matches the default `OpenAI API` node property.", "env": [] }, { "id": "d2b45b542dcf4019", "type": "comment", "z": "4a5ecedfe4b56019", "name": "Replace the published workflow id before running create session.", "info": "The create-session inject node uses `payload.workflow.id = wf_pub_replace_me` as a placeholder.\n\nReplace it with the published workflow id from your deployed Agent Builder workflow. That published id is the key identifier ChatKit needs in order to mint a browser/mobile client secret for the workflow.", "x": 420, "y": 80, "wires": [] }, { "id": "0c8f938ad4124e43", "type": "comment", "z": "4a5ecedfe4b56019", "name": "Session actions use ChatKit session ids. Thread actions use ChatKit thread ids.", "info": "After `createChatKitSession`, inspect the debug sidebar for the returned ChatKit session object and copy its `id` into the cancel-session inject node.\n\nAfter a client uses the ChatKit session and creates history, list threads for the same user and copy a real `cthr_...` id into the retrieve, delete, and list-items inject nodes.", "x": 510, "y": 140, "wires": [] }, { "id": "ff6123a713a24f64", "type": "inject", "z": "4a5ecedfe4b56019", "name": "Create ChatKit Session", "props": [ { "p": "payload.user", "v": "demo-user-123", "vt": "str" }, { "p": "payload.workflow.id", "v": "wf_pub_replace_me", "vt": "str" }, { "p": "payload.workflow.version", "v": "3", "vt": "str" }, { "p": "payload.workflow.state_variables.region", "v": "us", "vt": "str" }, { "p": "payload.expires_after.anchor", "v": "created_at", "vt": "str" }, { "p": "payload.expires_after.seconds", "v": "600", "vt": "num" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "", "x": 230, "y": 240, "wires": [ [ "84d71cdd68bc4db6" ] ] }, { "id": "84d71cdd68bc4db6", "type": "OpenAI API", "z": "4a5ecedfe4b56019", "name": "Create ChatKit Session", "property": "payload", "propertyType": "msg", "service": "", "method": "createChatKitSession", "x": 520, "y": 240, "wires": [ [ "21b0e62d352f4558" ] ] }, { "id": "9c2524226df847de", "type": "inject", "z": "4a5ecedfe4b56019", "name": "Cancel ChatKit Session", "props": [ { "p": "payload.session_id", "v": "cksess_replace_me", "vt": "str" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "", "x": 230, "y": 320, "wires": [ [ "db696853266541a0" ] ] }, { "id": "db696853266541a0", "type": "OpenAI API", "z": "4a5ecedfe4b56019", "name": "Cancel ChatKit Session", "property": "payload", "propertyType": "msg", "service": "", "method": "cancelChatKitSession", "x": 520, "y": 320, "wires": [ [ "21b0e62d352f4558" ] ] }, { "id": "6feea0ba54b449dc", "type": "inject", "z": "4a5ecedfe4b56019", "name": "List ChatKit Threads", "props": [ { "p": "payload.user", "v": "demo-user-123", "vt": "str" }, { "p": "payload.limit", "v": "5", "vt": "num" }, { "p": "payload.order", "v": "desc", "vt": "str" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "", "x": 220, "y": 440, "wires": [ [ "0fb0fd17639c4539" ] ] }, { "id": "0fb0fd17639c4539", "type": "OpenAI API", "z": "4a5ecedfe4b56019", "name": "List ChatKit Threads", "property": "payload", "propertyType": "msg", "service": "", "method": "listChatKitThreads", "x": 520, "y": 440, "wires": [ [ "21b0e62d352f4558" ] ] }, { "id": "3395fd7648ba4d65", "type": "inject", "z": "4a5ecedfe4b56019", "name": "Retrieve ChatKit Thread", "props": [ { "p": "payload.thread_id", "v": "cthr_replace_me", "vt": "str" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "", "x": 220, "y": 520, "wires": [ [ "5dd6bc6188d84622" ] ] }, { "id": "5dd6bc6188d84622", "type": "OpenAI API", "z": "4a5ecedfe4b56019", "name": "Retrieve ChatKit Thread", "property": "payload", "propertyType": "msg", "service": "", "method": "getChatKitThread", "x": 520, "y": 520, "wires": [ [ "21b0e62d352f4558" ] ] }, { "id": "e513eb71f1024f93", "type": "inject", "z": "4a5ecedfe4b56019", "name": "Delete ChatKit Thread", "props": [ { "p": "payload.thread_id", "v": "cthr_replace_me", "vt": "str" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "", "x": 220, "y": 600, "wires": [ [ "c83d41cc8c65467c" ] ] }, { "id": "c83d41cc8c65467c", "type": "OpenAI API", "z": "4a5ecedfe4b56019", "name": "Delete ChatKit Thread", "property": "payload", "propertyType": "msg", "service": "", "method": "deleteChatKitThread", "x": 520, "y": 600, "wires": [ [ "21b0e62d352f4558" ] ] }, { "id": "30dca5c0950a437d", "type": "inject", "z": "4a5ecedfe4b56019", "name": "List ChatKit Thread Items", "props": [ { "p": "payload.thread_id", "v": "cthr_replace_me", "vt": "str" }, { "p": "payload.limit", "v": "10", "vt": "num" }, { "p": "payload.order", "v": "desc", "vt": "str" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "", "x": 210, "y": 680, "wires": [ [ "d44ef2ce25dd4095" ] ] }, { "id": "d44ef2ce25dd4095", "type": "OpenAI API", "z": "4a5ecedfe4b56019", "name": "List ChatKit Thread Items", "property": "payload", "propertyType": "msg", "service": "", "method": "listChatKitThreadItems", "x": 520, "y": 680, "wires": [ [ "21b0e62d352f4558" ] ] }, { "id": "21b0e62d352f4558", "type": "debug", "z": "4a5ecedfe4b56019", "name": "ChatKit Response", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "true", "targetType": "full", "statusVal": "", "statusType": "auto", "x": 790, "y": 460, "wires": [] } ]