UNPKG

prisme-flow

Version:

prisme platform flow engine

68 lines (59 loc) 1.96 kB
/** * Created by prisme.io on 09/06/2017. */ var _ = require('underscore') var MessageTemplate = require('./lib/message-template.js') var request = require('request').defaults({ encoding: null }) var utils = require('./lib/helpers/utils') module.exports = function (RED) { function BotVoice (config) { RED.nodes.createNode(this, config) var node = this this.message = config.message this.language = config.language this.transports = ['telegram', 'facebook'] this.on('input', function (msg) { var message = node.message var language = node.language var originalMessage = msg.originalMessage var chatId = msg.payload.chatId || (originalMessage && originalMessage.chat.id) var messageId = msg.payload.messageId || (originalMessage && originalMessage.message_id) var template = MessageTemplate(msg, node) // check transport compatibility if (!utils.matchTransport(node, msg)) { return } if (!_.isEmpty(node.message)) { message = node.message } else if (_.isString(msg.payload) && !_.isEmpty(msg.payload)) { message = msg.payload } else { node.error('Empty message') } var parsedMessage = template(message) var voiceUrl = 'http://www.voicerss.org/controls/speech.ashx?' + 'hl=' + language + '&src=' + encodeURI(parsedMessage) + '&c=mp3' + '&rnd=' + Math.random() request.get({ url: voiceUrl, headers: {} }, function (err, response, buffer) { if (err) { node.error('Error contacting VoiceRSS') } else { msg.payload = { type: 'audio', content: buffer, filename: 'audio.mp3', chatId: chatId, messageId: messageId, inbound: false } node.send(msg) } }) }) } RED.nodes.registerType('bot-voice', BotVoice) }