lexica-dialog-facebook-messenger
Version:
Facebook messenger plugin for Lexica virual agent
43 lines • 1.76 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const req = require("request-promise-native");
const lodash_1 = require("lodash");
const Api_1 = require("lexica-dialog-core/dist/Api");
const Constants_1 = require("./Constants");
function sendAction(senderId, apiBaseUrl, accessToken, senderAction) {
return req({
json: {
recipient: {
id: senderId
},
sender_action: senderAction
},
method: "POST",
qs: {
access_token: accessToken
},
uri: `${apiBaseUrl}/me/messages`
});
}
const facebookSenderActionMiddleware = async (context, next) => {
const { uniConfigs, messenger, request, logger } = context;
if (messenger.name === Constants_1.MESSENGER_NAME && !lodash_1.isNil(request)) {
const { senderId } = request;
const apiBaseUrl = uniConfigs.get(Constants_1.CONFIG_FACEBOOK_API_BASE_URL)
.value;
const accessToken = uniConfigs.get(Constants_1.CONFIG_FACEBOOK_ACCESS_TOKEN)
.value;
const actionItems = [
sendAction(senderId, apiBaseUrl, accessToken, "mark_seen")
];
if (!uniConfigs.has(Api_1.RunTimeConfig.SUSPEND_AUTO_REPLY) ||
(uniConfigs.has(Api_1.RunTimeConfig.SUSPEND_AUTO_REPLY) &&
!uniConfigs.get(Api_1.RunTimeConfig.SUSPEND_AUTO_REPLY).value)) {
actionItems.push(sendAction(senderId, apiBaseUrl, accessToken, "typing_on"));
}
Promise.all(actionItems).catch(error => logger.error("Call Facebook sender action with error", error));
}
await next();
};
exports.default = facebookSenderActionMiddleware;
//# sourceMappingURL=FacebookSenderActionMiddleware.js.map