Created
May 12, 2023 17:45
-
-
Save cerebrate/c98b2d04b823816e2ab04baaaf139942 to your computer and use it in GitHub Desktop.
A flow to integrate Mattermost and Home Assistant Assist.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| [ | |
| { | |
| "id": "a40d0f65c38c036e", | |
| "type": "comment", | |
| "z": "7e65c3881fee1899", | |
| "name": "Incoming message processing", | |
| "info": "", | |
| "x": 160, | |
| "y": 40, | |
| "wires": [] | |
| }, | |
| { | |
| "id": "5cb95fc33972f493", | |
| "type": "change", | |
| "z": "7e65c3881fee1899", | |
| "name": "format for conversation API", | |
| "rules": [ | |
| { | |
| "t": "set", | |
| "p": "original", | |
| "pt": "msg", | |
| "to": "payload", | |
| "tot": "msg" | |
| }, | |
| { | |
| "t": "set", | |
| "p": "payload", | |
| "pt": "msg", | |
| "to": "{\"data\":{\"language\":\"en\"}}", | |
| "tot": "json" | |
| }, | |
| { | |
| "t": "set", | |
| "p": "payload.data.text", | |
| "pt": "msg", | |
| "to": "original", | |
| "tot": "msg" | |
| }, | |
| { | |
| "t": "delete", | |
| "p": "original", | |
| "pt": "msg" | |
| } | |
| ], | |
| "action": "", | |
| "property": "", | |
| "from": "", | |
| "to": "", | |
| "reg": false, | |
| "x": 1140, | |
| "y": 100, | |
| "wires": [ | |
| [ | |
| "c56b875f094c6da1" | |
| ] | |
| ] | |
| }, | |
| { | |
| "id": "b99d0d2169adb22f", | |
| "type": "ha-api", | |
| "z": "7e65c3881fee1899", | |
| "name": "Assist API", | |
| "server": "aeb8ddd83e01cc39", | |
| "version": 1, | |
| "debugenabled": false, | |
| "protocol": "http", | |
| "method": "post", | |
| "path": "/api/conversation/process", | |
| "data": "msg", | |
| "dataType": "jsonata", | |
| "responseType": "json", | |
| "outputProperties": [ | |
| { | |
| "property": "payload", | |
| "propertyType": "msg", | |
| "value": "", | |
| "valueType": "results" | |
| } | |
| ], | |
| "x": 540, | |
| "y": 280, | |
| "wires": [ | |
| [ | |
| "ecb24f7cd3a06b5e", | |
| "f81d4f16966d63f9" | |
| ] | |
| ] | |
| }, | |
| { | |
| "id": "64ad0f9befe7ee96", | |
| "type": "api-current-state", | |
| "z": "7e65c3881fee1899", | |
| "name": "if_not_disconnected", | |
| "server": "aeb8ddd83e01cc39", | |
| "version": 3, | |
| "outputs": 2, | |
| "halt_if": "false", | |
| "halt_if_type": "bool", | |
| "halt_if_compare": "is", | |
| "entity_id": "input_boolean.bot_disconnect", | |
| "state_type": "habool", | |
| "blockInputOverrides": false, | |
| "outputProperties": [], | |
| "for": "0", | |
| "forType": "num", | |
| "forUnits": "minutes", | |
| "override_topic": false, | |
| "state_location": "payload", | |
| "override_payload": "msg", | |
| "entity_location": "data", | |
| "override_data": "msg", | |
| "x": 880, | |
| "y": 100, | |
| "wires": [ | |
| [ | |
| "5cb95fc33972f493" | |
| ], | |
| [ | |
| "a2536d6c1bee9511" | |
| ] | |
| ] | |
| }, | |
| { | |
| "id": "ecb24f7cd3a06b5e", | |
| "type": "switch", | |
| "z": "7e65c3881fee1899", | |
| "name": "", | |
| "property": "payload.response.response_type", | |
| "propertyType": "msg", | |
| "rules": [ | |
| { | |
| "t": "eq", | |
| "v": "action_done", | |
| "vt": "str" | |
| }, | |
| { | |
| "t": "eq", | |
| "v": "query_answer", | |
| "vt": "str" | |
| }, | |
| { | |
| "t": "eq", | |
| "v": "error", | |
| "vt": "str" | |
| } | |
| ], | |
| "checkall": "true", | |
| "repair": false, | |
| "outputs": 3, | |
| "x": 170, | |
| "y": 440, | |
| "wires": [ | |
| [ | |
| "f8e34e7c8249c480", | |
| "e8c72f8a4959f2f1" | |
| ], | |
| [ | |
| "f8e34e7c8249c480", | |
| "e8c72f8a4959f2f1" | |
| ], | |
| [ | |
| "f8e34e7c8249c480", | |
| "e8c72f8a4959f2f1" | |
| ] | |
| ] | |
| }, | |
| { | |
| "id": "047153482113d7c3", | |
| "type": "comment", | |
| "z": "7e65c3881fee1899", | |
| "name": "Handle response", | |
| "info": "", | |
| "x": 160, | |
| "y": 360, | |
| "wires": [] | |
| }, | |
| { | |
| "id": "e247409e59331a6e", | |
| "type": "comment", | |
| "z": "7e65c3881fee1899", | |
| "name": "stash conversation_id", | |
| "info": "", | |
| "x": 400, | |
| "y": 400, | |
| "wires": [] | |
| }, | |
| { | |
| "id": "f8e34e7c8249c480", | |
| "type": "switch", | |
| "z": "7e65c3881fee1899", | |
| "name": "not null", | |
| "property": "payload.response.conversation_id", | |
| "propertyType": "msg", | |
| "rules": [ | |
| { | |
| "t": "nnull" | |
| } | |
| ], | |
| "checkall": "true", | |
| "repair": false, | |
| "outputs": 1, | |
| "x": 360, | |
| "y": 440, | |
| "wires": [ | |
| [ | |
| "632916822c7c9ed0" | |
| ] | |
| ] | |
| }, | |
| { | |
| "id": "632916822c7c9ed0", | |
| "type": "change", | |
| "z": "7e65c3881fee1899", | |
| "name": "save id", | |
| "rules": [ | |
| { | |
| "t": "set", | |
| "p": "current_conversation", | |
| "pt": "flow", | |
| "to": "payload.response.conversation_id", | |
| "tot": "msg" | |
| } | |
| ], | |
| "action": "", | |
| "property": "", | |
| "from": "", | |
| "to": "", | |
| "reg": false, | |
| "x": 520, | |
| "y": 440, | |
| "wires": [ | |
| [ | |
| "9bb2b26821549fd1" | |
| ] | |
| ] | |
| }, | |
| { | |
| "id": "c56b875f094c6da1", | |
| "type": "switch", | |
| "z": "7e65c3881fee1899", | |
| "name": "", | |
| "property": "current_conversation_time", | |
| "propertyType": "flow", | |
| "rules": [ | |
| { | |
| "t": "nnull" | |
| }, | |
| { | |
| "t": "else" | |
| } | |
| ], | |
| "checkall": "false", | |
| "repair": false, | |
| "outputs": 2, | |
| "x": 130, | |
| "y": 280, | |
| "wires": [ | |
| [ | |
| "c7c950282aba638d" | |
| ], | |
| [ | |
| "b99d0d2169adb22f" | |
| ] | |
| ] | |
| }, | |
| { | |
| "id": "9bb2b26821549fd1", | |
| "type": "trigger", | |
| "z": "7e65c3881fee1899", | |
| "name": "", | |
| "op1": "false", | |
| "op2": "true", | |
| "op1type": "bool", | |
| "op2type": "bool", | |
| "duration": "30", | |
| "extend": true, | |
| "overrideDelay": false, | |
| "units": "s", | |
| "reset": "", | |
| "bytopic": "all", | |
| "topic": "topic", | |
| "outputs": 2, | |
| "x": 730, | |
| "y": 440, | |
| "wires": [ | |
| [], | |
| [ | |
| "3ae2c472da921925" | |
| ] | |
| ] | |
| }, | |
| { | |
| "id": "3ae2c472da921925", | |
| "type": "change", | |
| "z": "7e65c3881fee1899", | |
| "name": "null id", | |
| "rules": [ | |
| { | |
| "t": "set", | |
| "p": "current_conversation", | |
| "pt": "flow", | |
| "to": "null", | |
| "tot": "jsonata" | |
| } | |
| ], | |
| "action": "", | |
| "property": "", | |
| "from": "", | |
| "to": "", | |
| "reg": false, | |
| "x": 890, | |
| "y": 440, | |
| "wires": [ | |
| [] | |
| ] | |
| }, | |
| { | |
| "id": "c7c950282aba638d", | |
| "type": "change", | |
| "z": "7e65c3881fee1899", | |
| "name": "set conversation_id", | |
| "rules": [ | |
| { | |
| "t": "set", | |
| "p": "payload.data.conversation_id", | |
| "pt": "msg", | |
| "to": "current_conversation", | |
| "tot": "flow" | |
| } | |
| ], | |
| "action": "", | |
| "property": "", | |
| "from": "", | |
| "to": "", | |
| "reg": false, | |
| "x": 330, | |
| "y": 240, | |
| "wires": [ | |
| [ | |
| "b99d0d2169adb22f" | |
| ] | |
| ] | |
| }, | |
| { | |
| "id": "f246b7438515ce13", | |
| "type": "comment", | |
| "z": "7e65c3881fee1899", | |
| "name": "Respond with speech", | |
| "info": "", | |
| "x": 400, | |
| "y": 520, | |
| "wires": [] | |
| }, | |
| { | |
| "id": "e8c72f8a4959f2f1", | |
| "type": "change", | |
| "z": "7e65c3881fee1899", | |
| "name": "extract speech response", | |
| "rules": [ | |
| { | |
| "t": "set", | |
| "p": "tmp", | |
| "pt": "msg", | |
| "to": "payload.response.speech.plain.speech", | |
| "tot": "msg" | |
| }, | |
| { | |
| "t": "set", | |
| "p": "payload", | |
| "pt": "msg", | |
| "to": "{\"username\":\"Jeeves\",\"icon_emoji\":\"bot-mamiya\"}", | |
| "tot": "json" | |
| }, | |
| { | |
| "t": "set", | |
| "p": "payload.text", | |
| "pt": "msg", | |
| "to": "tmp", | |
| "tot": "msg" | |
| }, | |
| { | |
| "t": "delete", | |
| "p": "tmp", | |
| "pt": "msg" | |
| }, | |
| { | |
| "t": "set", | |
| "p": "rejectUnauthorized", | |
| "pt": "msg", | |
| "to": "false", | |
| "tot": "bool" | |
| } | |
| ], | |
| "action": "", | |
| "property": "", | |
| "from": "", | |
| "to": "", | |
| "reg": false, | |
| "x": 410, | |
| "y": 580, | |
| "wires": [ | |
| [ | |
| "073d45d0453c963b" | |
| ] | |
| ] | |
| }, | |
| { | |
| "id": "f81d4f16966d63f9", | |
| "type": "debug", | |
| "z": "7e65c3881fee1899", | |
| "name": "api-out", | |
| "active": false, | |
| "tosidebar": true, | |
| "console": false, | |
| "tostatus": false, | |
| "complete": "true", | |
| "targetType": "full", | |
| "statusVal": "", | |
| "statusType": "auto", | |
| "x": 730, | |
| "y": 220, | |
| "wires": [] | |
| }, | |
| { | |
| "id": "bd2fd2f2dc611ac5", | |
| "type": "http in", | |
| "z": "7e65c3881fee1899", | |
| "name": "", | |
| "url": "/jeeves-assist", | |
| "method": "post", | |
| "upload": false, | |
| "swaggerDoc": "", | |
| "x": 160, | |
| "y": 100, | |
| "wires": [ | |
| [ | |
| "e4a9cc55fde0c1d9" | |
| ] | |
| ] | |
| }, | |
| { | |
| "id": "3162e33d9f1cd691", | |
| "type": "debug", | |
| "z": "7e65c3881fee1899", | |
| "name": "web-in", | |
| "active": false, | |
| "tosidebar": true, | |
| "console": false, | |
| "tostatus": false, | |
| "complete": "true", | |
| "targetType": "full", | |
| "statusVal": "", | |
| "statusType": "auto", | |
| "x": 650, | |
| "y": 40, | |
| "wires": [] | |
| }, | |
| { | |
| "id": "073d45d0453c963b", | |
| "type": "http response", | |
| "z": "7e65c3881fee1899", | |
| "name": "Success!", | |
| "statusCode": "200", | |
| "headers": {}, | |
| "x": 620, | |
| "y": 580, | |
| "wires": [] | |
| }, | |
| { | |
| "id": "e4a9cc55fde0c1d9", | |
| "type": "switch", | |
| "z": "7e65c3881fee1899", | |
| "name": "Validate token", | |
| "property": "payload.token", | |
| "propertyType": "msg", | |
| "rules": [ | |
| { | |
| "t": "eq", | |
| "v": "TOKEN", | |
| "vt": "str" | |
| }, | |
| { | |
| "t": "else" | |
| } | |
| ], | |
| "checkall": "false", | |
| "repair": false, | |
| "outputs": 2, | |
| "x": 420, | |
| "y": 100, | |
| "wires": [ | |
| [ | |
| "3162e33d9f1cd691", | |
| "4e7eb8e11801d8d6" | |
| ], | |
| [ | |
| "81c48c07bcfc400c" | |
| ] | |
| ] | |
| }, | |
| { | |
| "id": "81c48c07bcfc400c", | |
| "type": "http response", | |
| "z": "7e65c3881fee1899", | |
| "name": "Forbidden", | |
| "statusCode": "401", | |
| "headers": {}, | |
| "x": 660, | |
| "y": 160, | |
| "wires": [] | |
| }, | |
| { | |
| "id": "4e7eb8e11801d8d6", | |
| "type": "change", | |
| "z": "7e65c3881fee1899", | |
| "name": "strip to text", | |
| "rules": [ | |
| { | |
| "t": "set", | |
| "p": "payload", | |
| "pt": "msg", | |
| "to": "payload.text", | |
| "tot": "msg" | |
| } | |
| ], | |
| "action": "", | |
| "property": "", | |
| "from": "", | |
| "to": "", | |
| "reg": false, | |
| "x": 670, | |
| "y": 100, | |
| "wires": [ | |
| [ | |
| "64ad0f9befe7ee96" | |
| ] | |
| ] | |
| }, | |
| { | |
| "id": "a2536d6c1bee9511", | |
| "type": "http response", | |
| "z": "7e65c3881fee1899", | |
| "name": "Service Unavailable", | |
| "statusCode": "503", | |
| "headers": {}, | |
| "x": 1120, | |
| "y": 160, | |
| "wires": [] | |
| }, | |
| { | |
| "id": "aeb8ddd83e01cc39", | |
| "type": "server", | |
| "name": "Home Assistant", | |
| "version": 5, | |
| "addon": false, | |
| "rejectUnauthorizedCerts": true, | |
| "ha_boolean": "y|yes|true|on|home|open", | |
| "connectionDelay": true, | |
| "cacheJson": true, | |
| "heartbeat": false, | |
| "heartbeatInterval": 30, | |
| "areaSelector": "friendlyName", | |
| "deviceSelector": "friendlyName", | |
| "entitySelector": "friendlyName", | |
| "statusSeparator": "at: ", | |
| "statusYear": "hidden", | |
| "statusMonth": "short", | |
| "statusDay": "numeric", | |
| "statusHourCycle": "h23", | |
| "statusTimeFormat": "h:m", | |
| "enableGlobalContextStore": true | |
| } | |
| ] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment