UNPKG

node-red-contrib-tekosbot

Version:

Tekos bot based on matrix

53 lines (39 loc) 1.46 kB
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); };