asksuite-core
Version:
57 lines (51 loc) • 1.31 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`,
};
}
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 'ptt':
case 'audio':
intent = MediaResolver.AUDIO_INTENT;
break;
case 'document':
intent = MediaResolver.DOCUMENT_INTENT;
break;
}
if (intent.intent) {
const intentBot = intents.find(item => {
return item.intent === intent.intent;
});
resolve(intentBot);
return;
}
}
reject();
});
}
}
module.exports = MediaResolver;