botpress
Version:
The world's first CMS for bots. Easily create, manage and extend chatbots.
80 lines (61 loc) • 2.75 kB
JavaScript
;
var _util = require('util');
var _util2 = _interopRequireDefault(_util);
var _lodash = require('lodash');
var _lodash2 = _interopRequireDefault(_lodash);
var _bluebird = require('bluebird');
var _bluebird2 = _interopRequireDefault(_bluebird);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new _bluebird2.default(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return _bluebird2.default.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; }
module.exports = ({ sendContent, db }) => {
const getUser = (() => {
var _ref = _asyncToGenerator(function* (id) {
const knex = yield db.get();
const users = yield knex('users').where({ id: id }).orWhere('userId', id).limit(1).select('*');
if (!users || users.length <= 0) {
throw new Error(`User "${id}" not found in the database`);
}
return users[0];
});
return function getUser(_x) {
return _ref.apply(this, arguments);
};
})();
/**
* Proactively sends a user a message
* @param {string|object} user id or a full user object
* @param {string} elementOrRenderer The name of the renderer to use OR an element id
* @param {object} data Additionnal data that will be passed to the renderer
* @async
* @memberof! ContentRenderer
* @example
* bp.renderers.sendToUser(event.user.id, '#!text-77734', { typingIndicators: false })
*/
const sendToUser = (() => {
var _ref2 = _asyncToGenerator(function* (user, elementOrRenderer, data) {
if (!_lodash2.default.isString(elementOrRenderer)) {
throw new Error('Invalid renderer: ' + elementOrRenderer);
}
if (_lodash2.default.isString(user)) {
user = yield getUser(user);
}
if (!user || !user.id) {
throw new Error('Invalid user object: ' + _util2.default.inspect(user));
}
const text = 'This is not a real event, it has been forged by proactive.';
const forgedEvent = {
platform: user.platform,
user: user,
type: 'proactive',
text: text,
raw: { forged: true, message: text, to: user && user.id }
};
return sendContent(forgedEvent, elementOrRenderer, data);
});
return function sendToUser(_x2, _x3, _x4) {
return _ref2.apply(this, arguments);
};
})();
return { sendToUser };
};
//# sourceMappingURL=proactive.js.map