messaging-api-messenger
Version:
Messaging API client for Messenger
224 lines • 11.1 kB
JavaScript
;
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}¶ms=[%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