UNPKG

botpress-dialog

Version:
271 lines (219 loc) 7.1 kB
module.exports = /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) /******/ return installedModules[moduleId].exports; /******/ /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ exports: {}, /******/ id: moduleId, /******/ loaded: false /******/ }; /******/ /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ /******/ // Flag the module as loaded /******/ module.loaded = true; /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /******/ /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ /******/ // __webpack_public_path__ /******/ __webpack_require__.p = ""; /******/ /******/ // Load entry module and return exports /******/ return __webpack_require__(0); /******/ }) /************************************************************************/ /******/ ([ /* 0 */ /***/ function(module, exports, __webpack_require__) { module.exports = __webpack_require__(1); /***/ }, /* 1 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; var _util = __webpack_require__(2); var _util2 = _interopRequireDefault(_util); var _path = __webpack_require__(3); var _path2 = _interopRequireDefault(_path); var _fs = __webpack_require__(4); var _fs2 = _interopRequireDefault(_fs); var _messenger = __webpack_require__(5); var _messenger2 = _interopRequireDefault(_messenger); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var dialog = null; var configFile = null; var saveConfig = function saveConfig(config) { _fs2.default.writeFileSync(configFile, JSON.stringify(config)); }; var loadConfig = function loadConfig() { if (!_fs2.default.existsSync(configFile)) { var config = { accessToken: '', botId: '' }; saveConfig(config, configFile); } var overrides = {}; if (process.env.DIALOG_TOKEN) overrides.accessToken = process.env.DIALOG_TOKEN; return Object.assign(JSON.parse(_fs2.default.readFileSync(configFile, 'utf-8')), overrides); }; var callback = function callback(logger) { return function (error, response, body) { if (error) { logger.debug('[botpress-dialog] Error: ' + error.message); } else if (body && body.error) { logger.debug('[botpress-dialog] ' + body.code + ': ' + _util2.default.inspect(body.error, false, null)); } }; }; var incomingMiddleware = function incomingMiddleware(event, next) { if (event.platform == 'facebook') { var payload = { entry: [{ messaging: [event.raw] }] }; dialog.incoming(payload, callback(event.bp.logger)); event.bp.logger.verbose('[botpress-dialog] Incoming message'); } next(); }; var outgoingMiddleware = function outgoingMiddleware(event, next) { if (event.platform == 'facebook') { // Rebuild response object expected by dialog-api var response = { message_id: event.__id, // Not the real Facebook message ID, but whatever recipient_id: event.raw.to }; // Rebuild payload object expected by dialog-api var payload = void 0; if (event.type == 'text') { payload = { message: { text: event.raw.message, quick_replies: event.raw.quick_replies } }; } else if (event.type == 'template') { payload = { message: { attachment: { type: 'template', payload: event.raw.payload } } }; } else if (event.type == 'attachment') { payload = { message: { attachment: { type: event.raw.type, payload: event.raw } } }; } else { // noop } if (payload) { dialog.outgoing(payload, response, callback(event.bp.logger)); event.bp.logger.verbose('[botpress-dialog] Outgoing message'); } } next(); }; var outgoingAttachMiddleware = function outgoingAttachMiddleware(event, next) { event.dialog.context = dialog.context || {}; next(); }; module.exports = { config: { accessToken: { type: 'string', env: 'DIALOG_TOKEN' }, botId: { type: 'string' } }, init: function init(bp, configurator) { configFile = _path2.default.join(bp.projectLocation, bp.botfile.modulesConfigDir, 'botpress-dialog.json'); bp.middlewares.register({ name: 'dialog.outgoing.attach', module: 'botpress-dialog', type: 'outgoing', handler: outgoingAttachMiddleware, order: 0, description: 'Modifies the outgoing payload of Dialog Analytics' }); bp.middlewares.register({ name: 'dialog.outgoing', module: 'botpress-dialog', type: 'outgoing', handler: outgoingMiddleware, order: 99, // Must be the last middleware to be called in order for dialog.attach() to work async description: 'Tracks outgoing messages with Dialog Analytics' }); bp.middlewares.register({ name: 'dialog.incoming', module: 'botpress-dialog', type: 'incoming', handler: incomingMiddleware, order: 0, description: 'Tracks incoming messages with Dialog Analytics' }); var config = loadConfig(); dialog = new _messenger2.default(config.accessToken, config.botId); // Expose dialog methods bp.dialog = { attach: dialog.attach, track: dialog.track, event: dialog.event, link: dialog.link }; }, ready: function ready(bp) { var router = bp.getRouter('botpress-dialog'); router.get('/config', function (req, res) { res.send(loadConfig()); }); router.post('/config', function (req, res) { var _req$body = req.body, accessToken = _req$body.accessToken, botId = _req$body.botId; saveConfig({ accessToken: accessToken, botId: botId }); dialog.apiToken = accessToken; dialog.botId = botId; res.sendStatus(200); }); } }; /***/ }, /* 2 */ /***/ function(module, exports) { module.exports = require("util"); /***/ }, /* 3 */ /***/ function(module, exports) { module.exports = require("path"); /***/ }, /* 4 */ /***/ function(module, exports) { module.exports = require("fs"); /***/ }, /* 5 */ /***/ function(module, exports) { module.exports = require("dialog-api/lib/messenger"); /***/ } /******/ ]); //# sourceMappingURL=node.bundle.js.map