UNPKG

messaging-api-messenger

Version:
207 lines 6.51 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const form_data_1 = __importDefault(require("form-data")); const omit_1 = __importDefault(require("lodash/omit")); const messaging_api_common_1 = require("messaging-api-common"); function createMessage(payload, options = {}) { const message = Object.assign({}, payload); // snakecase support for backward compatibility const quickReplies = options.quickReplies || // @ts-expect-error options.quick_replies; if (quickReplies && Array.isArray(quickReplies) && quickReplies.length >= 1) { message.quickReplies = quickReplies; } return (0, messaging_api_common_1.camelcaseKeysDeep)(message); } function createText(text, options) { return createMessage({ text }, options); } function createMessageFormData(payload, filedata, options = {}) { const message = Object.assign({}, payload); // snakecase support for backward compatibility const quickReplies = options.quickReplies || // @ts-expect-error options.quick_replies; if (quickReplies && Array.isArray(quickReplies) && quickReplies.length >= 1) { message.quickReplies = quickReplies; } const formdata = new form_data_1.default(); formdata.append('message', JSON.stringify((0, messaging_api_common_1.snakecaseKeysDeep)(message))); formdata.append('filedata', filedata, // FIXME: use pick for formdata options (0, omit_1.default)(options, ['quickReplies'])); return formdata; } function createAttachment(attachment, options) { return createMessage({ attachment, }, options); } function createAttachmentFormData(attachment, filedata, options) { return createMessageFormData({ attachment, }, filedata, options); } function createAudio(audio, options) { if (typeof audio === 'string') { const attachment = { type: 'audio', payload: { url: audio, }, }; return createAttachment(attachment, options); } const attachment = { type: 'audio', payload: audio, }; return createAttachment(attachment, options); } function createAudioFormData(audio, options) { const attachment = { type: 'audio', payload: {}, }; return createAttachmentFormData(attachment, audio, options); } function createImage(image, options) { if (typeof image === 'string') { const attachment = { type: 'image', payload: { url: image, }, }; return createAttachment(attachment, options); } const attachment = { type: 'image', payload: image, }; return createAttachment(attachment, options); } function createImageFormData(image, options) { const attachment = { type: 'image', payload: {}, }; return createAttachmentFormData(attachment, image, options); } function createVideo(video, options) { if (typeof video === 'string') { const attachment = { type: 'video', payload: { url: video, }, }; return createAttachment(attachment, options); } const attachment = { type: 'video', payload: video, }; return createAttachment(attachment, options); } function createVideoFormData(video, options) { const attachment = { type: 'video', payload: {}, }; return createAttachmentFormData(attachment, video, options); } function createFile(file, options) { if (typeof file === 'string') { const attachment = { type: 'file', payload: { url: file, }, }; return createAttachment(attachment, options); } const attachment = { type: 'file', payload: file, }; return createAttachment(attachment, options); } function createFileFormData(file, options) { const attachment = { type: 'file', payload: {}, }; return createAttachmentFormData(attachment, file, options); } function createTemplate(payload, options) { return createAttachment({ type: 'template', payload, }, options); } function createButtonTemplate(text, buttons, options) { return createTemplate({ templateType: 'button', text, buttons, }, options); } function createGenericTemplate(elements, options = {}) { return createTemplate(Object.assign({ templateType: 'generic', elements }, (options.imageAspectRatio ? { imageAspectRatio: options.imageAspectRatio } : {})), options); } function createMediaTemplate(elements, options) { return createTemplate({ templateType: 'media', elements, }, options); } function createReceiptTemplate(receipt, options) { return createTemplate(Object.assign({ templateType: 'receipt' }, receipt), options); } function createAirlineBoardingPassTemplate(attrs, options) { return createTemplate(Object.assign({ templateType: 'airline_boardingpass' }, attrs), options); } function createAirlineCheckinTemplate(attrs, options) { return createTemplate(Object.assign({ templateType: 'airline_checkin' }, attrs), options); } function createAirlineItineraryTemplate(attrs, options) { return createTemplate(Object.assign({ templateType: 'airline_itinerary' }, attrs), options); } function createAirlineUpdateTemplate(attrs, options) { return createTemplate(Object.assign({ templateType: 'airline_update' }, attrs), options); } function createOneTimeNotifReqTemplate(attrs, options) { return createTemplate(Object.assign({ templateType: 'one_time_notif_req' }, attrs), options); } const Messenger = { createMessage, createText, createAttachment, createAudio, createAudioFormData, createImage, createImageFormData, createVideo, createVideoFormData, createFile, createFileFormData, createTemplate, createButtonTemplate, createGenericTemplate, createMediaTemplate, createReceiptTemplate, createAirlineBoardingPassTemplate, createAirlineCheckinTemplate, createAirlineItineraryTemplate, createAirlineUpdateTemplate, createOneTimeNotifReqTemplate, }; exports.default = Messenger; //# sourceMappingURL=Messenger.js.map