From 45ff93051845721ac9219d6850f4833a55c44afa Mon Sep 17 00:00:00 2001 From: Skylar Sadlier Date: Wed, 18 Sep 2024 15:21:13 -0600 Subject: [PATCH] - Update examples README to make things much easier to find - Added examples for every node - Fixed User Settings node requiring a roomId when it's not needed - Fixed the documentation for Upload File node - Get User node had unused config code that has been removed --- examples/README.md | 505 ++++++++++++------ .../fetch-event-relations-aggregated.json | 141 +++++ examples/fetch-event-relations.png | Bin 0 -> 26231 bytes examples/get-event.json | 103 ++++ examples/get-event.png | Bin 0 -> 17383 bytes examples/get-set-displayname.json | 201 +++++++ examples/get-set-displayname.png | Bin 0 -> 33009 bytes examples/get-user.json | 99 ++++ examples/get-user.png | Bin 0 -> 14757 bytes examples/mark-all-read.json | 99 ++++ examples/mark-all-read.png | Bin 0 -> 17172 bytes examples/paginate-room-history.json | 173 ++++++ examples/paginate-room-history.png | Bin 0 -> 31435 bytes examples/set-avatar-from-url.json | 122 +++++ examples/set-avatar-from-url.png | Bin 0 -> 14556 bytes examples/set-room-name-and-topic.json | 120 +++++ examples/set-room-name-and-topic.png | Bin 0 -> 18402 bytes examples/view-event-relations.json | 141 +++++ src/matrix-get-user.html | 227 +------- src/matrix-upload-file.html | 46 +- src/matrix-user-settings.js | 8 - 21 files changed, 1582 insertions(+), 403 deletions(-) create mode 100644 examples/fetch-event-relations-aggregated.json create mode 100644 examples/fetch-event-relations.png create mode 100644 examples/get-event.json create mode 100644 examples/get-event.png create mode 100644 examples/get-set-displayname.json create mode 100644 examples/get-set-displayname.png create mode 100644 examples/get-user.json create mode 100644 examples/get-user.png create mode 100644 examples/mark-all-read.json create mode 100644 examples/mark-all-read.png create mode 100644 examples/paginate-room-history.json create mode 100644 examples/paginate-room-history.png create mode 100644 examples/set-avatar-from-url.json create mode 100644 examples/set-avatar-from-url.png create mode 100644 examples/set-room-name-and-topic.json create mode 100644 examples/set-room-name-and-topic.png create mode 100644 examples/view-event-relations.json diff --git a/examples/README.md b/examples/README.md index 616d958..7aa1df6 100644 --- a/examples/README.md +++ b/examples/README.md @@ -1,47 +1,95 @@ # Examples -These are examples of what is possible with the [node-red-contrib-matrix-chat](https://github.com/Skylar-Tech/node-red-contrib-matrix-chat) module for [Node-RED](https://nodered.org/) -If you want to try any of them out just copy their JSON contents from their .json file and use the hamburger menu in Node-RED to import the flow. +These examples showcase what is possible with the [node-red-contrib-matrix-chat](https://github.com/Skylar-Tech/node-red-contrib-matrix-chat) module for [Node-RED](https://nodered.org/). Build something cool with these nodes? Feel free to submit a pull request to share it! +## Prerequisites + +- A Matrix account +- Node-RED set up and running +- Installed `node-red-contrib-matrix-chat` module + +## How to Use the Examples + +To try out any of the examples: + +1. Copy the JSON contents from the `.json` file linked in each example. +2. In Node-RED, use the menu to import the flow: + - Click the hamburger menu (top right corner). + - Select **Import**. + - Paste the JSON and click **Import**. + ## Index +### User Management + +- [Get or set current user display name](#get-or-set-current-user-display-name) +- [Set user avatar using URL](#set-user-avatar-using-url) +- [Fetch user info by userId](#fetch-user-info-by-userid) - [Create User with Shared Secret Registration](#create-user-with-shared-secret-registration) - [Create/Edit Synapse User](#createedit-synapse-user) -- [Use function node to run any command](#use-function-node-to-run-any-command) +- [Deactivate User](#deactivate-user) +- [Force User to Join Room](#force-user-to-join-room) + +### Message Handling + - [Respond to "ping" with "pong"](#respond-to-ping-with-pong) - [Respond to "html" with an HTML message](#respond-to-html-with-an-html-message) - [Respond to "image" with an uploaded image](#respond-to-image-with-an-uploaded-image) - [Respond to "file" with an uploaded file](#respond-to-file-with-an-uploaded-file) - [Respond to "react" with a reaction](#respond-to-react-with-a-reaction) -- [Accept room invites from specific user](#accept-room-invites-from-specific-user) -- [Leave room when someone says "bye"](#leave-room-when-someone-says-bye) -- [Remove messages containing "delete"](#remove-messages-containing-delete) -- [Respond to "users" with full list of server users](#respond-to-users-with-full-list-of-server-users) -- [Respond to "newroom" by creating new room and inviting user](#respond-to-newroom-by-creating-new-room-and-inviting-user) -- [Respond to "joinroom " by joining mentioned room](#respond-to-joinroom-room_id_or_alias-by-joining-mentioned-room) -- [Respond to "rooms " with user's rooms (list server's rooms if is left blank)](#respond-to-rooms-user_id-with-users-rooms-list-servers-rooms-if-user_id-is-left-blank) -- [Respond to "whois " with information about the user's session](#respond-to-whois-user_id-with-information-about-the-users-session) -- [Respond to "room_users" with current room's users](#respond-to-room_users-with-current-rooms-users) -- [Sending typing events to a room](#sending-typing-events-to-a-room) -- [Download & store all received files/images](#download--store-all-received-filesimages) -- [Kick/Ban user from room](#kickban-user-from-room) -- [Deactivate user](#deactivate-user) +- [Remove Messages Containing "delete"](#remove-messages-containing-delete) +### Event Handling -### Create user with Shared Secret Registration +- [Sending Typing Events to a Room](#sending-typing-events-to-a-room) +- [Mark all received events as read](#mark-all-received-events-as-read) +- [Fetch event by eventId and roomId](#fetch-event-by-eventid-and-roomid) +- [Paginate the entire history of a given room](#paginate-the-entire-history-of-a-given-room) +- [Paginate related events to a given eventId](#paginate-related-events-to-a-given-eventid) + +### Room Management + +- [Set room name and topic](#set-room-name-and-topic) +- [Accept Room Invites from Specific User](#accept-room-invites-from-specific-user) +- [Leave Room When Someone Says "bye"](#leave-room-when-someone-says-bye) +- [Respond to "newroom" by Creating a New Room and Inviting User](#respond-to-newroom-by-creating-a-new-room-and-inviting-user) +- [Respond to "joinroom \" by Joining Mentioned Room](#respond-to-joinroom-room_id_or_alias-by-joining-mentioned-room) +- [Kick/Ban User from Room](#kickban-user-from-room) + +### User Information + +- [Respond to "users" with Full List of Server Users](#respond-to-users-with-full-list-of-server-users) +- [Respond to "whois \" with Information about the User's Session](#respond-to-whois-user_id-with-information-about-the-users-session) +- [Respond to "rooms \" with User's Rooms](#respond-to-rooms-user_id-with-users-rooms) +- [Respond to "room_users" with Current Room's Users](#respond-to-room_users-with-current-rooms-users) + +### Advanced Features + +- [Use Function Node to Run Any Command](#use-function-node-to-run-any-command) +- [Download & Store All Received Files/Images](#download--store-all-received-filesimages) + +--- + +## User Management + +### Create User with Shared Secret Registration [View JSON](shared-secret-registration.json) -Use this flow to create users on servers with closed registration. You also use this endpoint to create your first admin user as it is the same as running the local python script on the server. This requires your registration secret from your homeserver.yaml Synapse server configuration file. +Use this flow to create users on servers with closed registration. You can also use this endpoint to create your first admin user, as it is the same as running the local Python script on the server. This requires your registration secret from your `homeserver.yaml` Synapse server configuration file. -Edit the object on the inject node to the user/pass combo you want to create and hit the inject button (to the left of the inject node). +**Instructions:** + +1. Edit the object on the inject node to specify the desired username and password. +2. Click the inject button (to the left of the inject node) to create the user. **Note:** This only works on Synapse servers. -![shared-secret-registration.png](shared-secret-registration.png) +![Shared Secret Registration](shared-secret-registration.png) +--- ### Create/Edit Synapse User @@ -49,222 +97,375 @@ Edit the object on the inject node to the user/pass combo you want to create and Allows an administrator to create or modify a user account with a specified `msg.userId`. -![add-user-with-admin-user.png](add-user-with-admin-user.png) +![Create/Edit Synapse User](add-user-with-admin-user.png) +--- -### Use function node to run any command +### Deactivate User -[View JSON](custom-redact-function-node.json) +[View JSON](deactivate-user.json) -If we do not have a node for something you want to do you can do this manually with a function node. We now have a node for removing events but this is still a good example. +If you send "deactivate_user @test:example.com", the bot will deactivate the `@test:example.com` account on the server. -**Note:** You should make sure to catch any errors in your function node otherwise you could cause Node-RED to crash. +**Note:** -To view what sort of functions you have access to check out the `client.ts` file from `matrix-js-sdk` [here](https://github.com/matrix-org/matrix-js-sdk/blob/master/src/client.ts). +- This requires the bot to be a server admin. +- **WARNING:** Accounts that are deleted cannot be restored. If you want to temporarily disable a user, consider modifying the user instead. -![custom-redact-function-node.png](custom-redact-function-node.png) +![Deactivate User](deactivate-user.png) +--- +### Force User to Join Room + +[View JSON](force-join-room.json) + +If you send "force_join @test:example.com !320j90mf0394f:example.com", the bot will force the user `@test:example.com` into room `!320j90mf0394f:example.com`. + +**Note:** + +- This requires the bot to be a server admin. +- This only works for rooms on the same server. + +![Force User to Join Room](force-join-room.png) + +--- + +## Message Handling ### Respond to "ping" with "pong" [View JSON](respond-ping-pong.json) -Use this flow to respond to anyone that says "ping" with "pong" into the same room. +Use this flow to respond to anyone who says "ping" with "pong" in the same room. -![respond-ping-pong.png](respond-ping-pong.png) +![Respond to "ping" with "pong"](respond-ping-pong.png) +--- - -### Respond to "html" with an HTML message +### Respond to "html" with an HTML Message [View JSON](respond-to-html-with-html.json) -Use this flow to respond to anyone that says "html" with an example HTML message. This shows how easy it is to send HTML. +Use this flow to respond to anyone who says "html" with an example HTML message. This shows how easy it is to send HTML content. -![respond-to-html-with-html.png](respond-to-html-with-html.png) +![Respond to "html" with HTML Message](respond-to-html-with-html.png) +--- - -### Respond to "image" with an uploaded image +### Respond to "image" with an Uploaded Image [View JSON](respond-image-with-image.json) -You will need an image on the machine running Node-RED. In this case example.png exists inside the Node-RED directory. +You will need an image on the machine running Node-RED. In this example, `example.png` exists inside the Node-RED directory. -![respond-image-with-image.png](respond-image-with-image.png) +**Instructions:** +1. Place the image file (`example.png`) in the appropriate directory. +2. Import the flow and deploy it. +![Respond to "image" with Uploaded Image](respond-image-with-image.png) -### Respond to "file" with an uploaded file +--- + +### Respond to "file" with an Uploaded File [View JSON](respond-file-with-file.json) -You will need a file on the machine running Node-RED. In this case sample.pdf exists inside the Node-RED directory. +You will need a file on the machine running Node-RED. In this example, `sample.pdf` exists inside the Node-RED directory. -![respond-file-with-file.png](respond-file-with-file.png) +**Instructions:** +1. Place the file (`sample.pdf`) in the appropriate directory. +2. Import the flow and deploy it. +![Respond to "file" with Uploaded File](respond-file-with-file.png) -### Respond to "react" with a reaction +--- + +### Respond to "react" with a Reaction [View JSON](respond-react-with-reaction.json) -Give a 👍 reaction when someone says "react" +Gives a 👍 reaction when someone says "react". -![respond-react-with-reaction.png](respond-react-with-reaction.png) +![Respond to "react" with Reaction](respond-react-with-reaction.png) +--- - -### Accept room invites from specific user - -[View JSON](accept-room-invites.json) - -Accept room invites from specific user. - -![accept-room-invites.png](accept-room-invites.png) - - - -### Leave room when someone says bye - -[View JSON](leave-room-bye.json) - -Leave room when someone says "bye". - -![leave-room-bye.png](leave-room-bye.png) - - - -### Remove messages containing "delete" +### Remove Messages Containing "delete" [View JSON](delete-event.json) -Any messages containing "delete" will try to be removed by the client. +Any messages containing "delete" will be removed by the client. -![respond-react-with-reaction.png](delete-event.png) +**Note:** The bot needs appropriate permissions to remove messages. +![Remove Messages Containing "delete"](delete-event.png) +--- -### Respond to "users" with full list of server users +## Room Management -[View JSON](respond-users-list.json) +### Accept Room Invites from Specific User -When someone sends the text "users" they get a HTML message back containing all the current users on the server. If your server has a lot of users this paginates and sends a message with 25 users per message. +[View JSON](accept-room-invites.json) -This requires admin privileges. +Automatically accept room invites from a specific user. -![respond-users-list.png](respond-users-list.png) +![Accept Room Invites from Specific User](accept-room-invites.png) +--- -### Respond to "newroom" by creating new room and inviting user +### Leave Room When Someone Says "bye" -[View JSON](respond-users-list.json) +[View JSON](leave-room-bye.json) -When someone sends "newroom" a new room will be created and the user that said the message will be invited. The client will also send a welcome message into the new room. +Leaves the room when someone says "bye". -![respond-newroom-invite.png](respond-newroom-invite.png) +![Leave Room When Someone Says "bye"](leave-room-bye.png) +--- -### Respond to "joinroom " by joining mentioned room +### Respond to "newroom" by Creating a New Room and Inviting User + +[View JSON](respond-newroom-invite.json) + +When someone sends "newroom", a new room will be created, and the user who sent the message will be invited. The bot will also send a welcome message into the new room. + +![Respond to "newroom" by Creating New Room](respond-newroom-invite.png) + +--- + +### Respond to "joinroom \" by Joining Mentioned Room [View JSON](respond-joinroom.json) -When someone sends "newroom" a new room will be created and the user that said the message will be invited. The client will also send a welcome message into the new room. +When someone sends "joinroom \", the bot will join the mentioned room. -![respond-joinroom.png](respond-joinroom.png) +![Respond to "joinroom" by Joining Room](respond-joinroom.png) -### Respond to "rooms " with user's rooms (list server's rooms if is left blank) +--- -[View JSON](respond-rooms.json) - -Responds to "rooms " with that user's rooms. If the message is just "rooms" it responds with a list of all rooms the server is participating in. - -Note: If there are a lot of rooms this may fail to send the message as it is too large. This also only works for user's that are on the current server. - -This requires admin privileges. - -![respond-rooms.png](respond-rooms.png) - - -### Respond to "whois " with information about the user's session - -[View JSON](respond-whois.json) - -This lists out the user's session info. Each session contains the IP address, when it was last seen, and the user agent. Useful to find out more about a specific user on your server. - -Note: If there are a lot of sessions this may fail to send the message as it is too large. This also only works for user's that are on the current server. - -This requires admin privileges. - -![respond-whois.png](respond-whois.png) - - -### Respond to "room_users" with current room's users - -[View JSON](respond-room-users.json) - -List out the users participating in a room. - -Note: If there are a lot of users in the room this will fail to send due to a large message error. - -![respond-room-users.png](respond-room-users.png) - - -### Download & store all received files/images - -[View JSON](store-received-files.json) - -Download received files/images. If the file is encrypted it will decrypt it for you. The decrypt node downloads the file for you otherwise you need to use a HTTP Request node to download the file. - -Note: You may need to edit the storage directory for this to work. Default action is to create a `downloads` folder in the Node-RED directory and places files in that but there is a good chance your Node-RED instance doesn't have access to write to this directory. - -![store-received-files.png](store-received-files.png) - - -### Sending typing events to a room - -[View JSON](send-typing-events.json) - -You can tell a room that Node-RED is writing a message and also cancel the writing event. This can be useful for making bots feel more interactive (show typing while requesting API endpoint for example). - -![store-received-files.png](send-typing-events.png) - - -### Kick/Ban user from room +### Kick/Ban User from Room [View JSON](room-kick-ban.json) -If you say "kick @test:example.com" the bot will kick @test:example.com from the current room. +- If you say "kick @test:example.com", the bot will kick `@test:example.com` from the current room. +- If you say "ban @test:example.com", the bot will ban `@test:example.com` from the current room. -If you say "ban @test:example.com" the bot will ban @test:example.com from the current room. +**Note:** This requires the bot to have permissions to kick/ban in the current room. -Note: This requires the bot to have permissions to kick/ban in the current room. +![Kick/Ban User from Room](room-kick-ban.png) -![room-kick-ban.png](room-kick-ban.png) +--- + +## User Information + +### Respond to "users" with Full List of Server Users + +[View JSON](respond-users-list.json) + +When someone sends the text "users", they receive an HTML message containing all the current users on the server. If your server has many users, this paginates and sends messages with 25 users per message. + +**Notes:** + +- This requires admin privileges. +- If there are many users, the bot may send multiple messages due to message size limits. + +![Respond to "users" with User List](respond-users-list.png) + +--- + +### Respond to "whois \" with Information about the User's Session + +[View JSON](respond-whois.json) + +Lists out the user's session info, including IP address, last seen time, and user agent. Useful for finding out more about a specific user on your server. + +**Notes:** + +- This requires admin privileges. +- If the user has many sessions, the message may be too large to send in one piece. + +![Respond to "whois" with User Session Info](respond-whois.png) + +--- + +### Respond to "rooms \" with User's Rooms + +[View JSON](respond-rooms.json) + +Responds to "rooms \" with that user's rooms. If the message is just "rooms", it responds with a list of all rooms the server is participating in. + +**Notes:** + +- This requires admin privileges. +- If there are many rooms, the message may be too large to send in one piece. +- This only works for users on the current server. + +![Respond to "rooms" with Room List](respond-rooms.png) + +--- + +### Respond to "room_users" with Current Room's Users + +[View JSON](respond-room-users.json) + +Lists the users participating in the current room. + +**Note:** If there are many users in the room, the message may be too large to send. + +![Respond to "room_users" with User List](respond-room-users.png) + +--- + +## Advanced Features + +### Use Function Node to Run Any Command + +[View JSON](custom-redact-function-node.json) + +If there isn't a node for something you want to do, you can use a function node to manually execute commands. For example, you can redact events (remove messages). + +**Instructions:** + +- Use the function node to write custom commands using the `matrix-js-sdk` client. +- Make sure to catch any errors in your function node to prevent Node-RED from crashing. + +To view the available functions, check out the [`client.ts` file from `matrix-js-sdk`](https://github.com/matrix-org/matrix-js-sdk/blob/master/src/client.ts). + +![Use Function Node to Run Commands](custom-redact-function-node.png) + +--- + +### Sending Typing Events to a Room + +[View JSON](send-typing-events.json) + +You can indicate to a room that the bot is typing and also cancel the typing event. This can be useful for making bots feel more interactive (e.g., show typing while requesting an API endpoint). + +![Sending Typing Events](send-typing-events.png) + +--- + +### Download & Store All Received Files/Images + +[View JSON](store-received-files.json) + +Downloads received files/images. If the file is encrypted, it will decrypt it for you. The decrypt node downloads the file; otherwise, you need to use an HTTP Request node to download the file. + +**Instructions:** + +- You may need to edit the storage directory for this to work. +- By default, files are saved in a `downloads` folder in the Node-RED directory. +- Ensure that Node-RED has permission to write to the specified directory. + +![Download & Store Received Files](store-received-files.png) + +--- + +### Fetch event by eventId and roomId + +[View JSON](get-event.json) + +Fetch an event from Matrix by eventId and roomId + +**Instructions:** + +- Change the inject node to contain a proper eventId and roomId (topic) +- Inject the payload and you should see the result contain the event data + +![get-event.png](get-event.png) + +--- + +### Paginate related events to a given eventId + +[View JSON](fetch-event-relations.json) + +Paginate through the related events to a given eventId. Related events being reactions, thread messages, message modifications, message removals, etc. This outputs once per iterated page. + +If you would rather have it output one massive list at the end of pagination use this flow: +[View Aggregated Flow JSON](fetch-event-relations-aggregated.json) -### Deactivate user +**Instructions:** -[View JSON](deactivate-user.json) +- Change the inject node to contain a proper eventId and roomId (topic) +- Inject the payload and you should see the result contain a list of related events for the given eventId -If you say "deactivate_user @test:example.com" the bot will deactivate the @test:example.com account on the server. +![fetch-event-relations.png](fetch-event-relations.png) -Note: This requires the bot to be a server admin. +--- -WARNING: Accounts that are deleted cannot be restored. If you want to temp-disable edit the user instead. +### Mark all received events as read -![room-kick-ban.png](deactivate-user.png) +[View JSON](mark-all-read.json) -### Force user to join room +With this flow anytime an event is received by the bot it will mark it as read. -[View JSON](force-join-room.json) +![mark-all-read.png](mark-all-read.png) + +--- + +### Paginate the entire history of a given room + +[View JSON](paginate-room-history.json) + +This flow iterates the entire history of a room (outputting for every page we hit). + +![paginate-room-history.png](paginate-room-history.png) + +--- + +### Fetch user info by userId + +[View JSON](get-user.json) + +Note this only works for users that the bot shares a room with. It will attempt to fetch the user from local storage first and if not found will query the server for the data. + +![get-user.png](get-user.png) + +--- + +### Get or set current user display name + +[View JSON](get-set-displayname.json) + +This flow lets you get or set the displayname for the current user. + +![get-set-displayname.png](get-set-displayname.png) + +--- + +### Set user avatar using URL + +[View JSON](set-avatar-from-url.json) + +Inject a URL to an image and Node-RED will fetch the contents, upload to matrix, then set the user avatar to the new mxc_url. + +This is a good example of how to use the upload file node. + +![set-avatar-from-url.png](set-avatar-from-url.png) + +--- + +### Set room name and topic + +[View JSON](set-room-name-and-topic.json) + +Changes the specified room's name and topic to the injected values. + +There are a bunch of different settings you can change, this is just an example for these two fields to show how it's done. + +This node can also be used to read these values. + +![set-room-name-and-topic.png](set-room-name-and-topic.png) + +--- -If you say "force_join @test:example.com !320j90mf0394f:example.com" the bot will force the user `@test:example.com` into room `!320j90mf0394f:example.com` -Note: This requires the bot to be a server admin. This also only works for rooms on the same server. -![room-kick-ban.png](force-join-room.png) -### Paginate room history diff --git a/examples/fetch-event-relations-aggregated.json b/examples/fetch-event-relations-aggregated.json new file mode 100644 index 0000000..ab8099f --- /dev/null +++ b/examples/fetch-event-relations-aggregated.json @@ -0,0 +1,141 @@ +[ + { + "id": "10a897739618e1f3", + "type": "group", + "z": "8fd89a0b44c61e76", + "name": "Aggregates paginated matrix event relations and outputs the full set after reaching the last page", + "style": { + "label": true + }, + "nodes": [ + "83d9261d8fef6c29", + "c2e00e38bbeea60a", + "8c1df4f49b913bf8", + "4be02d632d13cebf", + "09fc3b3f18df27af" + ], + "x": 774, + "y": 939, + "w": 772, + "h": 142 + }, + { + "id": "83d9261d8fef6c29", + "type": "matrix-fetch-relations", + "z": "8fd89a0b44c61e76", + "g": "10a897739618e1f3", + "name": "", + "server": null, + "roomType": "msg", + "roomValue": "topic", + "eventIdType": "msg", + "eventIdValue": "eventId", + "relationTypeType": "json", + "relationTypeValue": "null", + "eventTypeType": "json", + "eventTypeValue": "null", + "directionType": "str", + "directionValue": "b", + "limitType": "json", + "limitValue": "null", + "recurseType": "bool", + "recurseValue": "false", + "fromType": "msg", + "fromValue": "payload.next_batch", + "toType": "json", + "toValue": "null", + "x": 1180, + "y": 1040, + "wires": [ + [ + "c2e00e38bbeea60a" + ], + [ + "4be02d632d13cebf" + ] + ] + }, + { + "id": "c2e00e38bbeea60a", + "type": "function", + "z": "8fd89a0b44c61e76", + "g": "10a897739618e1f3", + "name": "Loop - output on finish", + "func": "// you will want to use a unique flow_key \n// if you duplicate this node multiple times\nlet flow_key = \"relations_\" + msg.topic;\nlet relations = flow.get(flow_key) || [];\n\n// add our chunk to the flow variable\nrelations.push(...msg.payload.chunk);\n\nif(msg.payload.next_batch) {\n // loop around for more records\n flow.set(flow_key, relations);\n return [null, msg];\n}\n\n// if msg.payload.next_batch is unset we have reached the end\nflow.set(flow_key, undefined);\nmsg.payload = relations;\nreturn [msg, null];", + "outputs": 2, + "noerr": 0, + "initialize": "", + "finalize": "", + "libs": [], + "x": 1180, + "y": 980, + "wires": [ + [ + "8c1df4f49b913bf8" + ], + [ + "83d9261d8fef6c29" + ] + ] + }, + { + "id": "8c1df4f49b913bf8", + "type": "debug", + "z": "8fd89a0b44c61e76", + "g": "10a897739618e1f3", + "name": "Debug Output", + "active": true, + "tosidebar": true, + "console": false, + "tostatus": false, + "complete": "true", + "x": 1420, + "y": 980, + "wires": [] + }, + { + "id": "4be02d632d13cebf", + "type": "debug", + "z": "8fd89a0b44c61e76", + "g": "10a897739618e1f3", + "name": "Error Output", + "active": true, + "tosidebar": true, + "console": false, + "tostatus": false, + "complete": "true", + "x": 1410, + "y": 1040, + "wires": [] + }, + { + "id": "09fc3b3f18df27af", + "type": "inject", + "z": "8fd89a0b44c61e76", + "g": "10a897739618e1f3", + "name": "", + "props": [ + { + "p": "topic", + "vt": "str" + }, + { + "p": "eventId", + "v": "$example", + "vt": "str" + } + ], + "repeat": "", + "crontab": "", + "once": false, + "onceDelay": 0.1, + "topic": "!example:skylar.tech", + "x": 920, + "y": 1040, + "wires": [ + [ + "83d9261d8fef6c29" + ] + ] + } +] \ No newline at end of file diff --git a/examples/fetch-event-relations.png b/examples/fetch-event-relations.png new file mode 100644 index 0000000000000000000000000000000000000000..84458f01725f18497a750a5fc23d403c61825f89 GIT binary patch literal 26231 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 D9ib=^ literal 0 HcmV?d00001 diff --git a/examples/get-set-displayname.json b/examples/get-set-displayname.json new file mode 100644 index 0000000..2550e1d --- /dev/null +++ b/examples/get-set-displayname.json @@ -0,0 +1,201 @@ +[ + { + "id": "844cdfc6e3fc3207", + "type": "group", + "z": "8fd89a0b44c61e76", + "name": "Get current display name", + "style": { + "label": true + }, + "nodes": [ + "9807698e516450ec", + "3f700b2d3458a1e8", + "78ff7e5088a08ff6", + "0ae57f85687ba6b3" + ], + "x": 754, + "y": 2119, + "w": 612, + "h": 122 + }, + { + "id": "9807698e516450ec", + "type": "matrix-user-settings", + "z": "8fd89a0b44c61e76", + "g": "844cdfc6e3fc3207", + "name": "", + "server": null, + "roomId": null, + "rules": [ + { + "t": "get", + "p": "display_name", + "to": "payload", + "tot": "msg", + "ls": true + } + ], + "x": 1020, + "y": 2180, + "wires": [ + [ + "78ff7e5088a08ff6" + ], + [ + "0ae57f85687ba6b3" + ] + ] + }, + { + "id": "3f700b2d3458a1e8", + "type": "inject", + "z": "8fd89a0b44c61e76", + "g": "844cdfc6e3fc3207", + "name": "", + "props": [], + "repeat": "", + "crontab": "", + "once": false, + "onceDelay": 0.1, + "topic": "", + "x": 850, + "y": 2180, + "wires": [ + [ + "9807698e516450ec" + ] + ] + }, + { + "id": "78ff7e5088a08ff6", + "type": "debug", + "z": "8fd89a0b44c61e76", + "g": "844cdfc6e3fc3207", + "name": "Debug Output", + "active": true, + "tosidebar": true, + "console": false, + "tostatus": false, + "complete": "true", + "x": 1240, + "y": 2160, + "wires": [] + }, + { + "id": "0ae57f85687ba6b3", + "type": "debug", + "z": "8fd89a0b44c61e76", + "g": "844cdfc6e3fc3207", + "name": "Error Output", + "active": true, + "tosidebar": true, + "console": false, + "tostatus": false, + "complete": "true", + "x": 1230, + "y": 2200, + "wires": [] + }, + { + "id": "289fac90afc8bfa6", + "type": "group", + "z": "8fd89a0b44c61e76", + "name": "Set current display name", + "style": { + "label": true + }, + "nodes": [ + "8f166980f4bfe6a4", + "c31399d30d9ea44f", + "c7984555f4ad668e", + "634935af5451baf9" + ], + "x": 754, + "y": 2259, + "w": 612, + "h": 122 + }, + { + "id": "8f166980f4bfe6a4", + "type": "matrix-user-settings", + "z": "8fd89a0b44c61e76", + "g": "289fac90afc8bfa6", + "name": "", + "server": null, + "roomId": null, + "rules": [ + { + "t": "set", + "p": "display_name", + "to": "payload", + "tot": "msg" + } + ], + "x": 1020, + "y": 2320, + "wires": [ + [ + "c7984555f4ad668e" + ], + [ + "634935af5451baf9" + ] + ] + }, + { + "id": "c31399d30d9ea44f", + "type": "inject", + "z": "8fd89a0b44c61e76", + "g": "289fac90afc8bfa6", + "name": "", + "props": [ + { + "p": "payload" + } + ], + "repeat": "", + "crontab": "", + "once": false, + "onceDelay": 0.1, + "topic": "", + "payload": "New Name", + "payloadType": "str", + "x": 860, + "y": 2320, + "wires": [ + [ + "8f166980f4bfe6a4" + ] + ] + }, + { + "id": "c7984555f4ad668e", + "type": "debug", + "z": "8fd89a0b44c61e76", + "g": "289fac90afc8bfa6", + "name": "Debug Output", + "active": true, + "tosidebar": true, + "console": false, + "tostatus": false, + "complete": "true", + "x": 1240, + "y": 2300, + "wires": [] + }, + { + "id": "634935af5451baf9", + "type": "debug", + "z": "8fd89a0b44c61e76", + "g": "289fac90afc8bfa6", + "name": "Error Output", + "active": true, + "tosidebar": true, + "console": false, + "tostatus": false, + "complete": "true", + "x": 1230, + "y": 2340, + "wires": [] + } +] \ No newline at end of file diff --git a/examples/get-set-displayname.png b/examples/get-set-displayname.png new file mode 100644 index 0000000000000000000000000000000000000000..fb1c864c4291dd0d5dfe3201c117461e8229b8c6 GIT binary patch literal 33009 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≠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 aeSf@#Nt+tx|AOjTyeA7(lq!`l^#4DONYy0( literal 0 HcmV?d00001 diff --git a/examples/set-room-name-and-topic.json b/examples/set-room-name-and-topic.json new file mode 100644 index 0000000..43cb643 --- /dev/null +++ b/examples/set-room-name-and-topic.json @@ -0,0 +1,120 @@ +[ + { + "id": "2e2bb3f8521150c0", + "type": "group", + "z": "8fd89a0b44c61e76", + "name": "Set room name and topic", + "style": { + "label": true + }, + "nodes": [ + "610648ad6bd73072", + "aca9be4e86e111f3", + "7f5e16c4f6c7885f", + "915ce202570af51a" + ], + "x": 674, + "y": 2539, + "w": 732, + "h": 122 + }, + { + "id": "610648ad6bd73072", + "type": "matrix-room-state-events", + "z": "8fd89a0b44c61e76", + "g": "2e2bb3f8521150c0", + "name": "", + "server": null, + "roomType": "msg", + "roomValue": "topic", + "rules": [ + { + "t": "set", + "p": "m.room.name", + "to": "roomName", + "tot": "msg" + }, + { + "t": "set", + "p": "m.room.topic", + "to": "description", + "tot": "msg" + } + ], + "x": 1050, + "y": 2600, + "wires": [ + [ + "7f5e16c4f6c7885f" + ], + [ + "915ce202570af51a" + ] + ] + }, + { + "id": "aca9be4e86e111f3", + "type": "inject", + "z": "8fd89a0b44c61e76", + "g": "2e2bb3f8521150c0", + "name": "", + "props": [ + { + "p": "topic", + "vt": "str" + }, + { + "p": "roomName", + "v": "Test Room", + "vt": "str" + }, + { + "p": "description", + "v": "This is a test room for my Node-RED bot", + "vt": "str" + } + ], + "repeat": "", + "crontab": "", + "once": false, + "onceDelay": 0.1, + "topic": "!example:skylar.tech", + "x": 820, + "y": 2600, + "wires": [ + [ + "610648ad6bd73072" + ] + ] + }, + { + "id": "7f5e16c4f6c7885f", + "type": "debug", + "z": "8fd89a0b44c61e76", + "g": "2e2bb3f8521150c0", + "name": "Debug Output", + "active": true, + "tosidebar": true, + "console": false, + "tostatus": false, + "complete": "true", + "x": 1280, + "y": 2580, + "wires": [] + }, + { + "id": "915ce202570af51a", + "type": "debug", + "z": "8fd89a0b44c61e76", + "g": "2e2bb3f8521150c0", + "name": "Error Output", + "active": true, + "tosidebar": true, + "console": false, + "tostatus": false, + "complete": "true", + "x": 1270, + "y": 2620, + "wires": [] + } +] \ No newline at end of file diff --git a/examples/set-room-name-and-topic.png b/examples/set-room-name-and-topic.png new file mode 100644 index 0000000000000000000000000000000000000000..494acb5ab88f8ecc9fd225617b67170cd35e4af5 GIT binary patch literal 18402 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 I?6biC0jV`P1ONa4 literal 0 HcmV?d00001 diff --git a/examples/view-event-relations.json b/examples/view-event-relations.json new file mode 100644 index 0000000..b344ea6 --- /dev/null +++ b/examples/view-event-relations.json @@ -0,0 +1,141 @@ +[ + { + "id": "ab09dd64e9c48bba", + "type": "group", + "z": "8fd89a0b44c61e76", + "name": "Pages through matrix event relations, delivering results one page at a time", + "style": { + "label": true + }, + "nodes": [ + "ed98bce4958c4203", + "501758e233cc42d9", + "edb9af1a22e2e17f", + "4734e9ee26fe0812", + "fc27f2058f9c934b" + ], + "x": 754, + "y": 1139, + "w": 892, + "h": 142 + }, + { + "id": "ed98bce4958c4203", + "type": "matrix-fetch-relations", + "z": "8fd89a0b44c61e76", + "g": "ab09dd64e9c48bba", + "name": "", + "server": null, + "roomType": "msg", + "roomValue": "topic", + "eventIdType": "msg", + "eventIdValue": "eventId", + "relationTypeType": "json", + "relationTypeValue": "null", + "eventTypeType": "json", + "eventTypeValue": "null", + "directionType": "str", + "directionValue": "b", + "limitType": "json", + "limitValue": "null", + "recurseType": "bool", + "recurseValue": "false", + "fromType": "msg", + "fromValue": "payload.next_batch", + "toType": "json", + "toValue": "null", + "x": 1280, + "y": 1240, + "wires": [ + [ + "edb9af1a22e2e17f" + ], + [ + "fc27f2058f9c934b" + ] + ] + }, + { + "id": "501758e233cc42d9", + "type": "inject", + "z": "8fd89a0b44c61e76", + "g": "ab09dd64e9c48bba", + "name": "", + "props": [ + { + "p": "topic", + "vt": "str" + }, + { + "p": "eventId", + "v": "$example", + "vt": "str" + } + ], + "repeat": "", + "crontab": "", + "once": false, + "onceDelay": 0.1, + "topic": "!example:skylar.tech", + "x": 900, + "y": 1240, + "wires": [ + [ + "ed98bce4958c4203" + ] + ] + }, + { + "id": "edb9af1a22e2e17f", + "type": "function", + "z": "8fd89a0b44c61e76", + "g": "ab09dd64e9c48bba", + "name": "Loop - return each chunk", + "func": "if(msg.payload.next_batch) {\n // we have more records so output to both\n return [msg, msg];\n}\n\n// no more records so only send to output 1\nreturn [msg, null];", + "outputs": 2, + "noerr": 0, + "initialize": "", + "finalize": "", + "libs": [], + "x": 1290, + "y": 1180, + "wires": [ + [ + "4734e9ee26fe0812" + ], + [ + "ed98bce4958c4203" + ] + ] + }, + { + "id": "4734e9ee26fe0812", + "type": "debug", + "z": "8fd89a0b44c61e76", + "g": "ab09dd64e9c48bba", + "name": "Debug Output", + "active": true, + "tosidebar": true, + "console": false, + "tostatus": false, + "complete": "true", + "x": 1520, + "y": 1180, + "wires": [] + }, + { + "id": "fc27f2058f9c934b", + "type": "debug", + "z": "8fd89a0b44c61e76", + "g": "ab09dd64e9c48bba", + "name": "Error Output", + "active": true, + "tosidebar": true, + "console": false, + "tostatus": false, + "complete": "true", + "x": 1510, + "y": 1240, + "wires": [] + } +] \ No newline at end of file diff --git a/src/matrix-get-user.html b/src/matrix-get-user.html index 705a50a..ae2b58b 100644 --- a/src/matrix-get-user.html +++ b/src/matrix-get-user.html @@ -12,25 +12,19 @@

- +
This is the property the user data object will be set to
-
- -
-
-
    -
    \ No newline at end of file + diff --git a/src/matrix-user-settings.js b/src/matrix-user-settings.js index 1c504ac..034fd0a 100644 --- a/src/matrix-user-settings.js +++ b/src/matrix-user-settings.js @@ -40,14 +40,6 @@ module.exports = function(RED) { return; } - msg.topic = node.roomId || msg.topic; - if(!msg.topic) { - msg.error = "Room must be specified in msg.topic or in configuration"; - node.error(msg.error, msg); - node.send([null, msg]); - return; - } - let getterErrors = {}, setterErrors = {};