UNPKG

messaging-api-messenger

Version:
224 lines 11.1 kB
"use strict"; var __rest = (this && this.__rest) || function (s, e) { var t = {}; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]]; } return t; }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const omit_1 = __importDefault(require("lodash/omit")); const pick_1 = __importDefault(require("lodash/pick")); const Messenger_1 = __importDefault(require("./Messenger")); function omitUndefinedFields(obj = {}) { return JSON.parse(JSON.stringify(obj)); } function pickBatchOptions(options) { return (0, pick_1.default)(options, ['name', 'dependsOn', 'omitResponseOnSuccess']); } function omitBatchOptions(options) { return (0, omit_1.default)(options, ['name', 'dependsOn', 'omitResponseOnSuccess']); } function sendRequest(body, options) { return Object.assign({ method: 'POST', relativeUrl: 'me/messages', body }, options); } function sendMessage(psidOrRecipient, msg, options = {}) { const recipient = typeof psidOrRecipient === 'string' ? { id: psidOrRecipient, } : psidOrRecipient; let messagingType = 'UPDATE'; if (options.messagingType) { messagingType = options.messagingType; } else if (options.tag) { messagingType = 'MESSAGE_TAG'; } const batchRequestOptions = pickBatchOptions(options); return sendRequest(Object.assign({ messagingType, recipient, message: Messenger_1.default.createMessage(msg, options) }, omitUndefinedFields(omitBatchOptions(options))), batchRequestOptions); } function sendText(psidOrRecipient, text, options) { return sendMessage(psidOrRecipient, Messenger_1.default.createText(text, options), options); } function sendAttachment(psidOrRecipient, attachment, options) { return sendMessage(psidOrRecipient, Messenger_1.default.createAttachment(attachment, options), options); } function sendAudio(psidOrRecipient, audio, options) { return sendMessage(psidOrRecipient, Messenger_1.default.createAudio(audio, options), options); } function sendImage(psidOrRecipient, image, options) { return sendMessage(psidOrRecipient, Messenger_1.default.createImage(image, options), options); } function sendVideo(psidOrRecipient, video, options) { return sendMessage(psidOrRecipient, Messenger_1.default.createVideo(video, options), options); } function sendFile(psidOrRecipient, file, options) { return sendMessage(psidOrRecipient, Messenger_1.default.createFile(file, options), options); } function sendTemplate(psidOrRecipient, payload, options) { return sendMessage(psidOrRecipient, Messenger_1.default.createTemplate(payload, options), options); } function sendButtonTemplate(psidOrRecipient, text, buttons, options) { return sendMessage(psidOrRecipient, Messenger_1.default.createButtonTemplate(text, buttons, options), options); } function sendGenericTemplate(psidOrRecipient, elements, _a = {}) { var { imageAspectRatio = 'horizontal' } = _a, options = __rest(_a, ["imageAspectRatio"]); return sendMessage(psidOrRecipient, Messenger_1.default.createGenericTemplate(elements, Object.assign(Object.assign({}, options), { imageAspectRatio })), options); } function sendReceiptTemplate(psidOrRecipient, receipt, options) { return sendMessage(psidOrRecipient, Messenger_1.default.createReceiptTemplate(receipt, options), options); } function sendMediaTemplate(psidOrRecipient, elements, options) { return sendMessage(psidOrRecipient, Messenger_1.default.createMediaTemplate(elements, options), options); } function sendAirlineBoardingPassTemplate(psidOrRecipient, attrs, options) { return sendMessage(psidOrRecipient, Messenger_1.default.createAirlineBoardingPassTemplate(attrs, options), options); } function sendAirlineCheckinTemplate(psidOrRecipient, attrs, options) { return sendMessage(psidOrRecipient, Messenger_1.default.createAirlineCheckinTemplate(attrs, options), options); } function sendAirlineItineraryTemplate(psidOrRecipient, attrs, options) { return sendMessage(psidOrRecipient, Messenger_1.default.createAirlineItineraryTemplate(attrs, options), options); } function sendAirlineUpdateTemplate(psidOrRecipient, attrs, options) { return sendMessage(psidOrRecipient, Messenger_1.default.createAirlineUpdateTemplate(attrs, options), options); } function sendOneTimeNotifReqTemplate(psidOrRecipient, attrs, options) { return sendMessage(psidOrRecipient, Messenger_1.default.createOneTimeNotifReqTemplate(attrs, options), options); } function getUserProfile(userId, options = {}) { const batchRequestOptions = pickBatchOptions(options); const fields = options.fields || [ 'id', 'name', 'first_name', 'last_name', 'profile_pic', ]; return Object.assign({ method: 'GET', relativeUrl: `${userId}?fields=${fields.join(',')}`.concat(options.accessToken ? `&access_token=${options.accessToken}` : '') }, batchRequestOptions); } function getUserPersistentMenu(userId, options = {}) { const batchRequestOptions = pickBatchOptions(options); return Object.assign({ method: 'GET', relativeUrl: `/me/custom_user_settings?psid=${userId}`.concat(options.accessToken ? `&access_token=${options.accessToken}` : '') }, batchRequestOptions); } function setUserPersistentMenu(userId, menuItems, options = {}) { const batchRequestOptions = pickBatchOptions(options); if (menuItems.some((item) => 'locale' in item && item.locale === 'default')) { return Object.assign({ method: 'POST', relativeUrl: `/me/custom_user_settings`.concat(options.accessToken ? `?access_token=${options.accessToken}` : ''), body: { psid: userId, persistentMenu: menuItems, } }, batchRequestOptions); } return Object.assign({ method: 'POST', relativeUrl: `/me/custom_user_settings`.concat(options.accessToken ? `?access_token=${options.accessToken}` : ''), body: { psid: userId, persistentMenu: [ { locale: 'default', composerInputDisabled: false, callToActions: menuItems, }, ], } }, batchRequestOptions); } function deleteUserPersistentMenu(userId, options = {}) { const batchRequestOptions = pickBatchOptions(options); return Object.assign({ method: 'DELETE', relativeUrl: `/me/custom_user_settings?psid=${userId}&params=[%22persistent_menu%22]`.concat(options.accessToken ? `&access_token=${options.accessToken}` : '') }, batchRequestOptions); } function sendSenderAction(psidOrRecipient, senderAction, options = {}) { const recipient = typeof psidOrRecipient === 'string' ? { id: psidOrRecipient, } : psidOrRecipient; const batchRequestOptions = pickBatchOptions(options); return sendRequest(Object.assign({ recipient, senderAction }, omitUndefinedFields(omitBatchOptions(options))), batchRequestOptions); } function typingOn(idOrRecipient, options) { return sendSenderAction(idOrRecipient, 'typing_on', options); } function typingOff(idOrRecipient, options) { return sendSenderAction(idOrRecipient, 'typing_off', options); } function markSeen(idOrRecipient, options) { return sendSenderAction(idOrRecipient, 'mark_seen', options); } function passThreadControl(recipientId, targetAppId, metadata, options = {}) { const batchRequestOptions = pickBatchOptions(options); return Object.assign({ method: 'POST', relativeUrl: 'me/pass_thread_control', body: Object.assign({ recipient: { id: recipientId }, targetAppId, metadata }, omitUndefinedFields(omitBatchOptions(options))) }, batchRequestOptions); } function passThreadControlToPageInbox(recipientId, metadata, options = {}) { return passThreadControl(recipientId, 263902037430900, metadata, options); } function takeThreadControl(recipientId, metadata, options = {}) { const batchRequestOptions = pickBatchOptions(options); return Object.assign({ method: 'POST', relativeUrl: 'me/take_thread_control', body: Object.assign({ recipient: { id: recipientId }, metadata }, omitUndefinedFields(omitBatchOptions(options))) }, batchRequestOptions); } function requestThreadControl(recipientId, metadata, options = {}) { const batchRequestOptions = pickBatchOptions(options); return Object.assign({ method: 'POST', relativeUrl: 'me/request_thread_control', body: Object.assign({ recipient: { id: recipientId }, metadata }, omitUndefinedFields(omitBatchOptions(options))) }, batchRequestOptions); } function getThreadOwner(recipientId, options = {}) { const batchRequestOptions = pickBatchOptions(options); return Object.assign({ method: 'GET', relativeUrl: `me/thread_owner?recipient=${recipientId}`.concat(options.accessToken ? `&access_token=${options.accessToken}` : ''), responseAccessPath: 'data[0].threadOwner' }, batchRequestOptions); } function associateLabel(userId, labelId, options = {}) { const batchRequestOptions = pickBatchOptions(options); return Object.assign({ method: 'POST', relativeUrl: `${labelId}/label`, body: Object.assign({ user: userId }, omitUndefinedFields(omitBatchOptions(options))) }, batchRequestOptions); } function dissociateLabel(userId, labelId, options = {}) { const batchRequestOptions = pickBatchOptions(options); return Object.assign({ method: 'DELETE', relativeUrl: `${labelId}/label`, body: Object.assign({ user: userId }, omitUndefinedFields(omitBatchOptions(options))) }, batchRequestOptions); } function getAssociatedLabels(userId, options = {}) { const batchRequestOptions = pickBatchOptions(options); return Object.assign({ method: 'GET', relativeUrl: `${userId}/custom_labels`.concat(options.accessToken ? `?access_token=${options.accessToken}` : '') }, batchRequestOptions); } const MessengerBatch = { sendRequest, sendMessage, sendText, sendAttachment, sendAudio, sendImage, sendVideo, sendFile, sendTemplate, sendButtonTemplate, sendGenericTemplate, sendReceiptTemplate, sendMediaTemplate, sendAirlineBoardingPassTemplate, sendAirlineCheckinTemplate, sendAirlineItineraryTemplate, sendAirlineUpdateTemplate, sendOneTimeNotifReqTemplate, getUserProfile, getUserPersistentMenu, setUserPersistentMenu, deleteUserPersistentMenu, sendSenderAction, typingOn, typingOff, markSeen, passThreadControl, passThreadControlToPageInbox, takeThreadControl, requestThreadControl, getThreadOwner, associateLabel, dissociateLabel, getAssociatedLabels, }; exports.default = MessengerBatch; //# sourceMappingURL=MessengerBatch.js.map