UNPKG

recime-bot-runtime

Version:

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

178 lines (177 loc) 6.37 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var request = require("request"); var chunk = require('lodash.chunk'); var ChunkSize = 32; var Facebook = /** @class */ (function () { function Facebook(bot) { this.bot = bot; } Facebook.prototype.createLabel = function (name) { var _this = this; return new Promise(function (resolve, reject) { var options = { uri: 'https://graph.facebook.com/v2.11/me/custom_labels', qs: { access_token: process.env.RECIME_FACEBOOK_ACCESS_TOKEN || _this.bot.config.RECIME_FACEBOOK_ACCESS_TOKEN }, method: 'POST', json: { name: name } }; request(options, function (err, response, body) { if (err) { return reject(err); } if (body.error) { return reject(body.error); } resolve(body.id); }); }); }; Facebook.prototype.assoitateLabelToUser = function (labelId, psId) { var _this = this; return new Promise(function (resolve, reject) { var options = { uri: "https://graph.facebook.com/v2.11/" + labelId + "/label", qs: { access_token: process.env.RECIME_FACEBOOK_ACCESS_TOKEN || _this.bot.config.RECIME_FACEBOOK_ACCESS_TOKEN }, method: 'POST', json: { user: psId } }; request(options, function (err, response, body) { if (err) { console.error(err); } if (body.error) { console.error(body.error); } resolve(); }); }); }; Facebook.prototype.createFilter = function (filter) { var _this = this; return new Promise(function (resolve, reject) { if (filter && filter.length) { return _this.createLabel(Date.now()) .then(function (id) { var workloads = chunk(filter, ChunkSize).map(function (items) { return Promise.all(items.map(function (psId) { return _this.assoitateLabelToUser(id, psId); })); }); return workloads .reduce(function (a, b) { return a.then(function () { return b; }); }, Promise.resolve()) .then(function () { resolve(id); }); }) .catch(function (ex) { console.error(ex); reject(ex); }); } else { resolve(); } }); }; Facebook.prototype.create = function (message) { var _this = this; return new Promise(function (resolve, reject) { var options = { uri: 'https://graph.facebook.com/v2.11/me/message_creatives', qs: { access_token: process.env.RECIME_FACEBOOK_ACCESS_TOKEN || _this.bot.config.RECIME_FACEBOOK_ACCESS_TOKEN }, method: 'POST', json: { messages: [message] } }; request(options, function (err, response, body) { if (err) { console.error(err); return reject(err); } if (body.error) { console.error(body.error); return reject(body.error); } resolve(body.message_creative_id); }); }); }; Facebook.prototype.send = function (messageCreativeId, customLabelId) { var _this = this; return new Promise(function (resolve, reject) { var options = { uri: 'https://graph.facebook.com/v2.11/me/broadcast_messages', qs: { access_token: process.env.RECIME_FACEBOOK_ACCESS_TOKEN || _this.bot.config.RECIME_FACEBOOK_ACCESS_TOKEN }, method: 'POST', json: { message_creative_id: messageCreativeId, custom_label_id: customLabelId } }; request(options, function (err, response, body) { if (err) { return reject(err); } if (body.error) { return reject(body.error); } resolve(body.broadcast_id); // this.deleteLabel(customLabelId).then(()=> resolve(body.broadcast_id)); }); }); // resolve }; Facebook.prototype.deleteLabel = function (id) { var _this = this; return new Promise(function (resolve, reject) { var options = { uri: "https://graph.facebook.com/v2.11/" + id, qs: { access_token: process.env.RECIME_FACEBOOK_ACCESS_TOKEN || _this.bot.config.RECIME_FACEBOOK_ACCESS_TOKEN }, method: 'DELETE' }; request(options, function (err, response, body) { if (err) { console.error(err); } if (body.error) { console.error(body.error); } resolve(); }); }); }; return Facebook; }()); exports.Facebook = Facebook; // var Ext = require("recime-bot-extension"); // var __ = Ext.facebook; // var model = new BotModel("072adc6b762bf90e0cadd533dbe0f326"); // model.get().then(function(bot) { // var facebook = new Facebook(bot); // facebook.createMessage([__.text("Welcome to my page!")]) // .then((id)=> { // console.log(id); // return Promise.resolve(id); // }) // .then((id)=> facebook.send(id)) // .then(console.log) // .catch(console.error); // });