prisme-flow
Version:
prisme platform flow engine
73 lines (62 loc) • 1.9 kB
JavaScript
/**
* Created by prisme.io on 09/06/2017.
*/
var _ = require('underscore')
var fs = require('fs')
var Path = require('path')
var sanitize = require('sanitize-filename')
var utils = require('./lib/helpers/utils')
module.exports = function (RED) {
function BotImage (config) {
RED.nodes.createNode(this, config)
var node = this
this.filename = config.filename
this.name = config.name
this.caption = config.caption
this.transports = ['telegram', 'slack', 'facebook', 'smooch']
this.on('input', function (msg) {
var path = node.filename
var name = node.name
var chatId = utils.getChatId(msg)
var messageId = utils.getMessageId(msg)
var content = null
// check transport compatibility
if (!utils.matchTransport(node, msg)) {
return
}
if (!_.isEmpty(path)) {
content = fs.readFileSync(path)
} else if (msg.payload instanceof Buffer) {
content = msg.payload
} else if (_.isObject(msg.payload) && msg.payload.image instanceof Buffer) {
content = msg.payload.image
}
// get filename
var filename = 'image'
if (!_.isEmpty(path)) {
filename = Path.basename(path)
} else if (!_.isEmpty(name)) {
filename = sanitize(name)
}
var caption = null
if (!_.isEmpty(node.caption)) {
caption = node.caption
} else if (_.isObject(msg.payload) && _.isString(msg.payload.caption) && !_.isEmpty(msg.payload.caption)) {
caption = msg.payload.caption
}
// send out the message
msg.payload = {
type: 'photo',
content: content,
filename: filename,
caption: caption,
chatId: chatId,
messageId: messageId,
inbound: false
}
// send out reply
node.send(msg)
})
}
RED.nodes.registerType('bot-image', BotImage)
}