UNPKG

prisme-flow

Version:

prisme platform flow engine

74 lines (64 loc) 1.96 kB
/** * Created by prisme.io on 09/06/2017. */ var _ = require('underscore') module.exports = function (RED) { function BotContext (config) { RED.nodes.createNode(this, config) var node = this this.command = config.command this.fieldValue = config.fieldValue this.fieldType = config.fieldType this.fieldName = config.fieldName this.on('input', function (msg) { msg = RED.util.cloneMessage(msg) var command = this.command var fieldValue = this.fieldValue var fieldType = this.fieldType var fieldName = this.fieldName var originalMessage = msg.originalMessage var chatId = msg.payload.chatId || (originalMessage && originalMessage.chat.id) var chatContext = msg.chat() if (chatContext == null) { node.error('Unable to find a chat context for chatId: ' + chatId) return } if (_.isEmpty(fieldName)) { node.error('Invalid variable name') return } switch (command) { case 'get': msg.payload = chatContext.get(fieldName) node.send(msg) break case 'delete': chatContext.remove(fieldName) node.send(msg) break case 'set': switch (fieldType) { case 'str': chatContext.set(fieldName, fieldValue) break case 'num': chatContext.set(fieldName, Number(fieldValue)) break case 'bol': chatContext.set(fieldName, /^true$/i.test(fieldValue)) break case 'json': try { chatContext.set(fieldName, JSON.parse(fieldValue)) } catch (e) { node.error('Unable to parse json in context node') } break } node.send(msg) break } }) } RED.nodes.registerType('bot-context', BotContext) }