asksuite-core
Version:
117 lines (105 loc) • 2.86 kB
JavaScript
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;