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
JavaScript
;
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);
// });