UNPKG

recime-bot-runtime

Version:

This runtime is intended to run inside a micro-service container with platform specific integration and module interpreter.

115 lines (114 loc) 4.9 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var facebook_1 = require("./broadcast/facebook"); var viber_1 = require("./broadcast/viber"); var telegram_1 = require("./broadcast/telegram"); var wechat_1 = require("./broadcast/wechat"); var message_1 = require("./message"); var viber_2 = require("./viber"); var Broadcast = /** @class */ (function () { function Broadcast(bot) { this.bot = bot; } Broadcast.prototype.send = function (body) { var _this = this; switch (body.platform) { case 'facebook': { var facebook_2 = new facebook_1.Facebook(this.bot); var response = body.messages .map(function (message) { return function () { return facebook_2 .create(new message_1.Message(body.platform).eval(message)) .then(function (msgId) { return facebook_2.createFilter(body.filter).then(function (label) { console.log('broadcast:label', label); return facebook_2.send(msgId, label); }); }) .then(function (id) { return { broadcast_id: id }; }) .catch(function (ex) { console.error(ex); throw ex; }); }; }); return response .reduce(function (a, b) { return a.then(function (messages) { return b().then(function (message) { messages.push(message.broadcast_id); return messages; }); }); }, Promise.resolve([])); } case 'viber': { var viber_3 = new viber_1.Viber(this.bot); var response = body.messages .map(function (message) { return function () { var _viber = new viber_2.Viber(_this.bot); return _viber.accountInfo() .then(function (user) { var converted = new message_1.Message(body.platform).eval(message); converted.sender = { name: user.name, avatar: "https://icons.recime.io/" + _this.bot.id + ".png" }; return viber_3.send(converted, body.filter || []); }); }; }); return response .reduce(function (a, b) { return a.then(function (messages) { return b().then(function (message) { messages.push.apply(messages, message); return messages; }); }); }, Promise.resolve([])).then(function (messages) { return { "tokens": messages }; }); } case 'telegram': { var telegram_2 = new telegram_1.Telegram(this.bot); var response = body.messages .map(function (message) { return function () { var converted = new message_1.Message(body.platform).eval(message); return telegram_2.send(converted, body.filter || []); }; }); return response .reduce(function (a, b) { return a.then(function (messages) { return b().then(function (message) { return { success: true }; }); }); }, Promise.resolve([])); } case 'wechat': { var wechat_2 = new wechat_1.WeChat(this.bot); var response = body.messages .map(function (message) { return function () { var converted = new message_1.Message(body.platform).eval(message); return wechat_2.send(converted, body.filter || []); }; }); return response .reduce(function (a, b) { return a.then(function (messages) { return b().then(function (message) { return message; }); }); }, Promise.resolve([])); } } return Promise.resolve([]); }; return Broadcast; }()); exports.Broadcast = Broadcast;