UNPKG

recime-bot-runtime

Version:

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

116 lines (115 loc) 4.25 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var request = require("request"); var IndividualMessageThreshold = 1; var Viber = /** @class */ (function () { function Viber(bot) { this.bot = bot; } Viber.prototype.send = function (message, filter) { var _this = this; return this.sendBroadcast(message, filter).then(function (res) { if (res.status === 0) { return [ { message_token: res.message_token, failed_list: res.failed_list } ]; } else { throw res; } }).catch(function (ex) { // can not send broadcast. console.error('broadcast', ex); if (ex.status === 19) { if (filter && filter.length < IndividualMessageThreshold) { var response = filter.map(function (id) { return function () { return _this.sendToReceiver(message, id); }; }); return response .reduce(function (a, b) { return a.then(function (messages) { return b().then(function (message) { if (message.status === 0) { messages.push({ message_token: message.message_token }); } return messages; }); }); }, Promise.resolve([])); } else { return Promise.resolve([]); } } else { // we tried and failed. console.log('broadcast', ex); return Promise.resolve([]); } }); }; Viber.prototype.sendBroadcast = function (message, filter) { var _this = this; message.broadcast_list = filter; return new Promise(function (resolve, reject) { request({ json: true, method: "POST", url: "https://chatapi.viber.com/pa/broadcast_message", headers: { "X-Viber-Auth-Token": process.env.RECIME_VIBER_ACCESS_TOKEN || _this.bot.config.RECIME_VIBER_ACCESS_TOKEN }, body: message }, function (err, response, body) { if (err) { console.error('broadcast', err); return reject(err); } if (body && body.length > 0) { if (body[0].status !== 'ok') { return reject({ code: body[0].status, message: body[0].status_message }); } } resolve(body); }); }); }; Viber.prototype.sendToReceiver = function (message, receiver) { var _this = this; message.receiver = receiver; return new Promise(function (resolve, reject) { request({ json: true, method: "POST", url: "https://chatapi.viber.com/pa/send_message", headers: { "X-Viber-Auth-Token": process.env.RECIME_VIBER_ACCESS_TOKEN || _this.bot.config.RECIME_VIBER_ACCESS_TOKEN }, body: message }, function (err, response, body) { if (err) { return reject(err); } if (body && body.length > 0) { if (body[0].status !== 'ok') { return reject({ code: body[0].status, message: body[0].status_message }); } } resolve(body); }); }); }; return Viber; }()); exports.Viber = Viber;