UNPKG

asksuite-core

Version:
117 lines (105 loc) 2.86 kB
class MediaResolver { constructor(companyId) { this.companyId = companyId; } static get IMAGE_INTENT() { return { intent: 'media_receive_image', dialog: `${this.companyId}.media.image`, }; } static get AUDIO_INTENT() { return { intent: 'media_receive_audio', dialog: `${this.companyId}.media.audio`, }; } static get DOCUMENT_INTENT() { return { intent: 'media_receive_document', dialog: `${this.companyId}.media.document`, }; } static get VIDEO_INTENT() { return { intent: 'media_receive_video', dialog: `${this.companyId}.media.video`, }; } static get CONTACTS_INTENT() { return { intent: 'media_receive_contacts', dialog: `${this.companyId}.media.contacts`, }; } static get LOCATION_INTENT() { return { intent: 'media_receive_location', dialog: `${this.companyId}.media.location`, }; } static get SHARE_INTENT() { return { intent: 'media_receive_share', dialog: `${this.companyId}.media.share`, }; } static get STORY_REPLY_INTENT() { return { intent: 'media_receive_story_reply', dialog: `${this.companyId}.media.story_reply`, }; } static get STORY_MENTION_INTENT() { return { intent: 'media_receive_story_mention', dialog: `${this.companyId}.media.story_mention`, }; } resolve(media, intents) { return new Promise((resolve, reject) => { let intent = {}; if (media && media.type) { switch (media.type) { case 'image': intent = MediaResolver.IMAGE_INTENT; break; case 'audio': intent = MediaResolver.AUDIO_INTENT; break; case 'ptt': case 'document': intent = MediaResolver.DOCUMENT_INTENT; break; case 'video': intent = MediaResolver.VIDEO_INTENT; break; case 'contacts': intent = MediaResolver.CONTACTS_INTENT; break; case 'location': intent = MediaResolver.LOCATION_INTENT; break; case 'share': intent = MediaResolver.SHARE_INTENT; break; case 'story_reply': intent = MediaResolver.STORY_REPLY_INTENT; break; case 'story_mention': intent = MediaResolver.STORY_MENTION_INTENT; break; } if (intent.intent) { const intentBot = intents.find(item => { return item.intent === intent.intent; }); resolve(intentBot); return; } } reject(); }); } } module.exports = MediaResolver;