UNPKG

bottender-facebook

Version:

Facebook connector for Bottender.

112 lines (86 loc) 3.63 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _warning = _interopRequireDefault(require("warning")); var _bottender = require("bottender"); var _FacebookClient = _interopRequireDefault(require("./FacebookClient")); var _FacebookContext = _interopRequireDefault(require("./FacebookContext")); var _FacebookEvent = _interopRequireDefault(require("./FacebookEvent")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } class FacebookConnector extends _bottender.MessengerConnector { constructor({ accessToken, appSecret, client, mapPageToAccessToken, verifyToken, batchConfig, origin, skipAppSecretProof, skipProfile }) { const _client = client || _FacebookClient.default.connect({ accessToken: accessToken || '', appSecret, origin, skipAppSecretProof }); super({ accessToken, appSecret, client: _client, mapPageToAccessToken, verifyToken, batchConfig, origin, skipAppSecretProof, skipProfile }); _defineProperty(this, "_client", this._client); _defineProperty(this, "_appSecret", this._appSecret); } mapRequestToEvents(body) { const rawEvents = this._getRawEventsFromRequest(body); const isStandby = this._isStandby(body); let pageIds = []; if (body.object === 'page' && body.entry) { pageIds = body.entry.map(ent => { if (ent.messaging || ent.standby || ent.changes) { return ent.id; } return null; }).filter(event => event != null); } return rawEvents.map((event, index) => new _FacebookEvent.default(event, { isStandby, // pageId is from Facebook events (Page webhook), // _getPageIdFromRawEvent() is from Messenger events pageId: pageIds[index] || this._getPageIdFromRawEvent(event) })); } async createContext(params) { let customAccessToken; if (this._mapPageToAccessToken) { const { pageId } = params.event; if (!pageId) { (0, _warning.default)(false, 'Could not find pageId from request body.'); } else { customAccessToken = await this._mapPageToAccessToken(pageId); } } return new _FacebookContext.default(_objectSpread({}, params, { client: this._client, customAccessToken, batchQueue: this._batchQueue, appId: this._appId })); } } exports.default = FacebookConnector;