UNPKG

recime-bot-runtime

Version:

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

153 lines (152 loc) 5.53 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) { return reject(err); } if (body.error) { return reject(body.error); } resolve(body); }); }); }; 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); }); } 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) { return new Promise(function (resolve, reject) { // const 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, (err, response, body)=>{ // if (err){ // return reject(err); // } // if (body.error){ // return reject(body.error); // } // resolve(body.broadcast_id); // }); resolve("test"); }); }; 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); // });