<!-- Config Node "matrix-server" --> <script type="text/javascript"> RED.nodes.registerType('matrix-server',{ category: 'config', defaults: { name: {type:"text"}, server: {type:"text",value:"http://localhost:8008",required:true}, token: {type:"text",required:true}, userid: {type:"text",required:true}, room: {type:"text"}, }, label: function() { return this.name; }, oneditprepare: function() { $("#node-config-input-generate").click(function() { var server = $("#node-config-input-server").val(); var user = $("#node-config-input-user").val(); var pass = $("#node-config-input-pass").val(); var r = new XMLHttpRequest(); r.open('POST', server + '/_matrix/client/r0/login', true); r.onload = function() { console.log(this.responseText); var res = JSON.parse(this.responseText); if (res.error) { RED.notify("Error: " + res["error"]); } else if (res.access_token) { $("#node-config-input-token").val(res["access_token"]); $("#node-config-input-userid").val(res["user_id"]); } } r.send(' {"type":"m.login.password", "user":"' + user + '", "password":"' + pass + '", "initial_device_display_name":"NodeRed Bot Node"}'); }); } }); </script> <script type="text/x-red" data-template-name="matrix-server"> <div class="form-row"> <label for="node-config-input-name"><i class="icon-tag"></i> Name</label> <input type="text" id="node-config-input-name"> </div> <div class="form-row"> <label for="node-config-input-server"><i class="icon-bookmark"></i> Server</label> <input type="text" id="node-config-input-server"> </div> <div class="form-row"> <label for="node-config-input-user"><i class="icon-bookmark"></i> Username</label> <input type="text" id="node-config-input-user"> </div> <div class="form-row"> <label for="node-config-input-pass"><i class="icon-bookmark"></i> Password</label> <input type="text" id="node-config-input-pass"> </div> <div class="form-row"> <label for="node-config-input-userid"><i class="icon-bookmark"></i> UserId</label> <input type="text" id="node-config-input-userid"> </div> <div class="form-row"> <label for="node-config-input-token"><i class="icon-bookmark"></i> Token</label> <span> <input type="text" id="node-config-input-token"> <button type="button" id="node-config-input-generate" class="red-ui-button"><i class='fa fa-refresh'></i></button> </span> </div> <div class="form-row"> <label for="node-config-input-room"><i class="icon-bookmark"></i> Default Room</label> <input type="text" id="node-config-input-room"> </div> </script> <!-- INPUT Node "matrix-input" --> <script type="text/javascript"> RED.nodes.registerType('matrix-input',{ category: 'function', color: '#a6bbcf', defaults: { name: {value:""}, room: {value:""}, server: {value:"", type:"matrix-server"}, filterself: {value:true} }, inputs:0, outputs:1, icon: "matrix.png", label: function() { return this.name||"matrix-input"; } }); </script> <script type="text/x-red" data-template-name="matrix-input"> <div class="form-row"> <label for="node-input-server"><i class="icon-tag"></i> Server</label> <input type="text" id="node-input-server" placeholder="Server"> </div> <div class="form-row"> <label for="node-input-name"><i class="icon-tag"></i> Name</label> <input type="text" id="node-input-name" placeholder="Name"> </div> <div class="form-row"> <label for="node-input-room"><i class="icon-tag"></i> Room</label> <input type="text" id="node-input-room" placeholder="Room"> </div> <div class="form-row"> <label for="node-input-filterself"><i class="icon-tag"></i> Filter events sent by self</label> <input type="checkbox" id="node-input-filterself" placeholder="Filterself"> </div> </script> <script type="text/x-red" data-help-name="matrix-input"> <p>Matrix input node</p> </script> <!-- OUTPUT Node "matrix-output" --> <script type="text/javascript"> RED.nodes.registerType('matrix-output',{ category: 'function', color: '#a6bbcf', defaults: { name: {value:""}, room: {value:""}, server: {value:"", type:"matrix-server"} }, inputs:1, outputs:0, icon: "matrix.png", label: function() { return this.name||"matrix-output"; } }); </script> <script type="text/x-red" data-template-name="matrix-output"> <div class="form-row"> <label for="node-input-server"><i class="icon-tag"></i> Server</label> <input type="text" id="node-input-server" placeholder="Server"> </div> <div class="form-row"> <label for="node-input-name"><i class="icon-tag"></i> Name</label> <input type="text" id="node-input-name" placeholder="Name"> </div> <div class="form-row"> <label for="node-input-room"><i class="icon-tag"></i> Room</label> <input type="text" id="node-input-room" placeholder="Room"> </div> </script> <script type="text/x-red" data-help-name="matrix-output"> <p>Matrix output node</p> </script>