prisme-flow
Version:
prisme platform flow engine
62 lines (52 loc) • 1.56 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 BotAudio (config) {
RED.nodes.createNode(this, config)
var node = this
this.filename = config.filename
this.name = config.name
this.transports = ['telegram', 'slack', 'facebook']
this.on('input', function (msg) {
var path = node.filename
var name = node.name
var originalMessage = msg.originalMessage
var chatId = msg.payload.chatId || (originalMessage && originalMessage.chat.id)
var messageId = msg.payload.messageId || (originalMessage && originalMessage.message_id)
// check transport compatibility
if (!utils.matchTransport(node, msg)) {
return
}
// todo make asynch here
var content = msg.payload
if (!_.isEmpty(path)) {
content = fs.readFileSync(path)
}
// get filename
var filename = 'image'
if (!_.isEmpty(path)) {
filename = Path.basename(path)
} else if (!_.isEmpty(name)) {
filename = sanitize(name)
}
// send out the message
msg.payload = {
type: 'audio',
content: content,
filename: filename,
chatId: chatId,
messageId: messageId,
inbound: false
}
// send out reply
node.send(msg)
})
}
RED.nodes.registerType('bot-audio', BotAudio)
}