7f305f7e3a86b71926d5404e72cbd19cbaa93362
[motion2.git] / server / config / schedule / transcribe.js
1 // *************************************************************************
2 // *                                                                       *
3 // * xCALLY Motion -  The Omnichannel Contact Center                       *
4 // * Copyright (c) Xenialab s.r.l. All Rights Reserved                     *
5 // *                                                                       *
6 // *************************************************************************
7 // *                                                                       *
8 // * Email: info@xcally.com                                                *
9 // * Website: https://www.xcally.com                                       *
10 // *                                                                       *
11 // *************************************************************************
12 // *                                                                       *
13 // * The SOFTWARE PRODUCT is protected by copyright laws and international *
14 // * copyright treaties, as well as other intellectual property laws and   *
15 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                         *
16 // *                                                                       *
17 // *************************************************************************
18 var _0xd4dc=['Sequelize','ValidationError','sentiment','sentimentAccountId','sentimentRegion','language','bucket','Transcript\x20not\x20available','CloudProvider','Cloud\x20Provider\x20not\x20available','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','Sentiment','SentimentScore','Negative','Mixed','Neutral','FAILED','FailureReason','resolve','Sentiment\x20Analysis\x20not\x20requested','findOne','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','name','SequelizeValidationError','error','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','inspect','findAll','IN_PROGRESS','No\x20transcribe\x20job\x20to\x20check','Setting','Settings\x20not\x20available','transcribeAccountId','Transcribe\x20not\x20configured','forEach','all','catch','start','lodash','request-promise','util','bluebird','../../mysqldb','../../config/logger','transcribe','TranscribeService','getTranscriptionJob','Comprehend','substring','format','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeName','data1','data2','transcribeRegion','then','info','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJob','TranscriptionJobStatus','fileText','COMPLETED','Transcript','[RECORDING:%d]\x20Get\x20transcript','TranscriptFileUri','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','transcript','update'];(function(_0x24f31b,_0x44b8f3){var _0x488401=function(_0x204caf){while(--_0x204caf){_0x24f31b['push'](_0x24f31b['shift']());}};_0x488401(++_0x44b8f3);}(_0xd4dc,0xff));var _0xcd4d=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0xd4dc[_0x59ee6f];return _0x4c0979;};var _=require(_0xcd4d('0x0'));var AWS=require('aws-sdk');var rp=require(_0xcd4d('0x1'));var util=require(_0xcd4d('0x2'));var BPromise=require(_0xcd4d('0x3'));var db=require(_0xcd4d('0x4'))['db'];var logger=require(_0xcd4d('0x5'))(_0xcd4d('0x6'));function getTranscriptionJob(_0x5bbb69,_0x5e01d4,_0x259b45,_0x534894){return new Promise(function(_0x5d70fb,_0x3c5bbd){var _0x4c1fa3=new AWS[(_0xcd4d('0x7'))]({'accessKeyId':_0x5e01d4,'secretAccessKey':_0x5bbb69,'region':_0x259b45});_0x4c1fa3[_0xcd4d('0x8')]({'TranscriptionJobName':_0x534894},function(_0x25b5b2,_0x43b670){if(_0x25b5b2){return _0x3c5bbd(_0x25b5b2);}else{return _0x5d70fb(_0x43b670);}});});}function sentiment(_0xcac0a2,_0x4db8a6,_0x4dd506,_0x1ca579,_0xb0b7d){return new Promise(function(_0x56f2fd,_0x279607){var _0x46e10f=new AWS[(_0xcd4d('0x9'))]({'accessKeyId':_0x4db8a6,'secretAccessKey':_0xcac0a2,'region':_0x4dd506});_0x46e10f['detectSentiment']({'Text':_0x1ca579,'LanguageCode':_0xb0b7d[_0xcd4d('0xa')](0x0,0x2)},function(_0x4a67ad,_0x10d472){if(_0x4a67ad){return _0x279607(_0x4a67ad);}else{return _0x56f2fd(_0x10d472);}});});}function checkTranscribeJob(_0x1e6169,_0x3d3019,_0x1604e3){var _0x10fb9e;return new BPromise(function(_0x5c3c00,_0x47db1a){logger['info'](util[_0xcd4d('0xb')](_0xcd4d('0xc'),_0x1e6169['id'],_0x1e6169[_0xcd4d('0xd')]));return getTranscriptionJob(_0x1604e3[_0xcd4d('0xe')],_0x1604e3[_0xcd4d('0xf')],_0x3d3019[_0xcd4d('0x10')],_0x1e6169[_0xcd4d('0xd')])[_0xcd4d('0x11')](function(_0x27bf0c){logger[_0xcd4d('0x12')](util['format'](_0xcd4d('0x13'),_0x1e6169['id'],_0x1e6169[_0xcd4d('0xd')],_0x27bf0c[_0xcd4d('0x14')][_0xcd4d('0x15')]));if(!_0x1e6169[_0xcd4d('0x16')]){switch(_0x27bf0c[_0xcd4d('0x14')][_0xcd4d('0x15')]){case _0xcd4d('0x17'):var _0x138d00={'transcribeStatus':_0x27bf0c[_0xcd4d('0x14')][_0xcd4d('0x15')],'fileUri':_0x27bf0c[_0xcd4d('0x14')][_0xcd4d('0x18')]['TranscriptFileUri']};logger[_0xcd4d('0x12')](util[_0xcd4d('0xb')](_0xcd4d('0x19'),_0x1e6169['id']));return rp({'uri':_0x27bf0c[_0xcd4d('0x14')][_0xcd4d('0x18')][_0xcd4d('0x1a')],'json':!![]})[_0xcd4d('0x11')](function(_0x108919){logger[_0xcd4d('0x12')](util[_0xcd4d('0xb')](_0xcd4d('0x1b'),_0x1e6169['id']));if(_0x108919&&_0x108919['results']&&_0x108919[_0xcd4d('0x1c')]['transcripts']&&_0x108919[_0xcd4d('0x1c')][_0xcd4d('0x1d')]['length']){_0x138d00[_0xcd4d('0x16')]='';for(var _0x5e911a=0x0;_0x5e911a<_0x108919[_0xcd4d('0x1c')][_0xcd4d('0x1d')][_0xcd4d('0x1e')];_0x5e911a++){_0x138d00['fileText']+=_0x108919['results']['transcripts'][_0x5e911a][_0xcd4d('0x1f')]+'';}}return _0x1e6169[_0xcd4d('0x20')](_0x138d00);})[_0xcd4d('0x11')](function(){logger[_0xcd4d('0x12')](util[_0xcd4d('0xb')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x1e6169['id']));if(!_0x1e6169['tempSentiment']){throw new db[(_0xcd4d('0x21'))][(_0xcd4d('0x22'))]('Sentiment\x20Analysis\x20not\x20requested');}if(!_0x3d3019[_0xcd4d('0x23')]||!_0x3d3019[_0xcd4d('0x24')]||!_0x3d3019[_0xcd4d('0x25')]||!_0x3d3019[_0xcd4d('0x26')]||!_0x3d3019[_0xcd4d('0x27')]){throw new db[(_0xcd4d('0x21'))][(_0xcd4d('0x22'))]('Sentiment\x20Analysis\x20not\x20configured');}if(!_0x138d00[_0xcd4d('0x16')]){throw new Error(_0xcd4d('0x28'));}if(_0x3d3019['sentimentAccountId']===_0x1604e3['id']){return _0x1604e3;}else{return db[_0xcd4d('0x29')]['findOne']({'where':{'id':_settings['sentimentAccountId']}});}})[_0xcd4d('0x11')](function(_0x5f219f){if(!_0x5f219f){throw new db[(_0xcd4d('0x21'))][(_0xcd4d('0x22'))](_0xcd4d('0x2a'));}if(!_0x5f219f[_0xcd4d('0xe')]||!_0x5f219f[_0xcd4d('0xf')]){throw new db[(_0xcd4d('0x21'))][(_0xcd4d('0x22'))](_0xcd4d('0x2b'));}_0x10fb9e=_0x5f219f;logger[_0xcd4d('0x12')](util[_0xcd4d('0xb')](_0xcd4d('0x2c'),_0x1e6169['id']));return sentiment(_0x10fb9e[_0xcd4d('0xe')],_0x10fb9e[_0xcd4d('0xf')],_0x3d3019[_0xcd4d('0x25')],_0x138d00[_0xcd4d('0x16')],_0x3d3019[_0xcd4d('0x26')]);})[_0xcd4d('0x11')](function(_0xbd85c1){logger['info'](util[_0xcd4d('0xb')]('[RECORDING:%d]\x20Sentiment\x20Analysis\x20available',_0x1e6169['id']));return _0x1e6169[_0xcd4d('0x20')]({'sentiment':_0xbd85c1[_0xcd4d('0x2d')],'sPositive':_0xbd85c1[_0xcd4d('0x2e')]['Positive'],'sNegative':_0xbd85c1['SentimentScore'][_0xcd4d('0x2f')],'sMixed':_0xbd85c1['SentimentScore'][_0xcd4d('0x30')],'sNeutral':_0xbd85c1[_0xcd4d('0x2e')][_0xcd4d('0x31')]});})[_0xcd4d('0x11')](function(){logger[_0xcd4d('0x12')](util[_0xcd4d('0xb')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x1e6169['id']));_0x5c3c00();});case _0xcd4d('0x32'):return _0x1e6169[_0xcd4d('0x20')]({'transcribeStatus':_0xcd4d('0x32'),'failureReason':_0x27bf0c['TranscriptionJob'][_0xcd4d('0x33')]})[_0xcd4d('0x11')](function(){logger[_0xcd4d('0x12')](util[_0xcd4d('0xb')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x1e6169['id']));_0x5c3c00();});default:logger[_0xcd4d('0x12')](util[_0xcd4d('0xb')]('[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed',_0x1e6169['id']));break;}}else{return BPromise[_0xcd4d('0x34')]()[_0xcd4d('0x11')](function(){if(!_0x1e6169['tempSentiment']){throw new db['Sequelize'][(_0xcd4d('0x22'))](_0xcd4d('0x35'));}if(!_0x3d3019[_0xcd4d('0x23')]||!_0x3d3019[_0xcd4d('0x24')]||!_0x3d3019[_0xcd4d('0x25')]||!_0x3d3019[_0xcd4d('0x26')]||!_0x3d3019[_0xcd4d('0x27')]){throw new db[(_0xcd4d('0x21'))]['ValidationError']('Sentiment\x20Analysis\x20not\x20configured');}if(!_0x1e6169[_0xcd4d('0x16')]){throw new Error('Transcript\x20not\x20available');}if(_0x3d3019[_0xcd4d('0x24')]===_0x1604e3['id']){return _0x1604e3;}else{return db[_0xcd4d('0x29')][_0xcd4d('0x36')]({'where':{'id':_settings[_0xcd4d('0x24')]}});}})[_0xcd4d('0x11')](function(_0x134a77){if(!_0x134a77){throw new db['Sequelize'][(_0xcd4d('0x22'))](_0xcd4d('0x2a'));}if(!_0x134a77[_0xcd4d('0xe')]||!_0x134a77[_0xcd4d('0xf')]){throw new db[(_0xcd4d('0x21'))][(_0xcd4d('0x22'))](_0xcd4d('0x2b'));}_0x10fb9e=_0x134a77;logger[_0xcd4d('0x12')](util['format'](_0xcd4d('0x2c'),_0x1e6169['id']));return sentiment(_0x10fb9e[_0xcd4d('0xe')],_0x10fb9e[_0xcd4d('0xf')],_0x3d3019['sentimentRegion'],_0x1e6169[_0xcd4d('0x16')],_0x3d3019[_0xcd4d('0x26')]);})[_0xcd4d('0x11')](function(_0x33191e){logger['info'](util[_0xcd4d('0xb')](_0xcd4d('0x37'),_0x1e6169['id']));return _0x1e6169[_0xcd4d('0x20')]({'sentiment':_0x33191e['Sentiment'],'sPositive':_0x33191e[_0xcd4d('0x2e')]['Positive'],'sNegative':_0x33191e['SentimentScore'][_0xcd4d('0x2f')],'sMixed':_0x33191e[_0xcd4d('0x2e')][_0xcd4d('0x30')],'sNeutral':_0x33191e[_0xcd4d('0x2e')][_0xcd4d('0x31')],'transcribeStatus':'COMPLETED'});})[_0xcd4d('0x11')](function(){logger[_0xcd4d('0x12')](util[_0xcd4d('0xb')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x1e6169['id']));_0x5c3c00();});}})['catch'](function(_0x5c74e7){if(_0x5c74e7){if(!_0x5c74e7['name']||_0x5c74e7[_0xcd4d('0x38')]!==_0xcd4d('0x39')){logger[_0xcd4d('0x3a')](util[_0xcd4d('0xb')](_0xcd4d('0x3b'),_0x1e6169['id']),util[_0xcd4d('0x3c')](_0x5c74e7,{'showHidden':![],'depth':null}));}}_0x5c3c00();});});}function checkTranscribe(){var _0x2ab640;var _0xdf371f;var _0x4a2575;return db['VoiceRecording'][_0xcd4d('0x3d')]({'where':{'transcribeStatus':_0xcd4d('0x3e')}})[_0xcd4d('0x11')](function(_0x44bdab){if(!_0x44bdab||!_0x44bdab[_0xcd4d('0x1e')]){throw new db['Sequelize'][(_0xcd4d('0x22'))](_0xcd4d('0x3f'));}_0x2ab640=_0x44bdab;return db[_0xcd4d('0x40')]['findOne']({'where':{'id':0x1}});})[_0xcd4d('0x11')](function(_0x2bcaef){if(!_0x2bcaef){throw new db[(_0xcd4d('0x21'))][(_0xcd4d('0x22'))](_0xcd4d('0x41'));}_0xdf371f=_0x2bcaef;if(!_0xdf371f[_0xcd4d('0x6')]||!_0xdf371f[_0xcd4d('0x42')]||!_0xdf371f[_0xcd4d('0x10')]||!_0xdf371f[_0xcd4d('0x26')]||!_0xdf371f[_0xcd4d('0x27')]){throw new db[(_0xcd4d('0x21'))][(_0xcd4d('0x22'))](_0xcd4d('0x43'));}return db['CloudProvider'][_0xcd4d('0x36')]({'where':{'id':_0xdf371f['transcribeAccountId']}});})['then'](function(_0x43a24f){if(!_0x43a24f){throw new db[(_0xcd4d('0x21'))][(_0xcd4d('0x22'))](_0xcd4d('0x2a'));}if(!_0x43a24f[_0xcd4d('0xe')]||!_0x43a24f[_0xcd4d('0xf')]){throw new db['Sequelize'][(_0xcd4d('0x22'))]('Cloud\x20Provider\x20not\x20configured');}_0x4a2575=_0x43a24f;var _0x1546e0=[];_0x2ab640[_0xcd4d('0x44')](function(_0x44432d){_0x1546e0['push'](checkTranscribeJob(_0x44432d,_0xdf371f,_0x4a2575));});return BPromise[_0xcd4d('0x45')](_0x1546e0);})[_0xcd4d('0x46')](function(_0x377312){if(_0x377312){if(!_0x377312['name']||_0x377312['name']!==_0xcd4d('0x39')){logger[_0xcd4d('0x3a')](util['inspect'](_0x377312,{'showHidden':![],'depth':null}));}}});}exports[_0xcd4d('0x47')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};