node-red-contrib-tekosbot
Version:
Tekos bot based on matrix
53 lines (39 loc) • 1.46 kB
JavaScript
module.exports = function(RED) {
"use strict";
const axios = require('axios')
var serverApi = "https://driftapi.com/conversations/"
var AUTH_TOKEN = '';
function DriftAuth(config){
var node = this;
RED.nodes.createNode(node, config);
AUTH_TOKEN = config.authToken
axios.defaults.baseURL = serverApi;
axios.defaults.headers.post['Content-Type'] = 'application/json';
}
RED.nodes.registerType("drift-config",DriftAuth);
/****************************** Drift Replying to a Conversation *******************************/
async function replyingConversation(msg,config){
return new Promise (async resolve => {
let conversationId = msg.conversationId || config.conversationId
let body = msg.payload.content || config.body
axios.request({url:serverApi+conversationId+"/messages",
method:'post',
data:{type: "chat", body: body},
headers: {'Authorization': 'Bearer '+AUTH_TOKEN}}).then((res)=>{
resolve(res.data)
}).catch(err => {
resolve({error: true, message: err})
})
})
}
/****************************** Drift *******************************/
function DriftNode(config) {
var node = this;
RED.nodes.createNode(node, config);
node.on("input", async function(msg){
msg.payload = await replyingConversation(msg,config);
node.send(msg);
});
}
RED.nodes.registerType("Drift",DriftNode);
};