Built motion from commit 3d6333b4.|2.6.31
[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 _0x6c50=['resolve','sentiment','Transcript\x20not\x20available','Cloud\x20Provider\x20not\x20available','Negative','Neutral','SequelizeValidationError','error','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','VoiceRecording','findAll','IN_PROGRESS','No\x20transcribe\x20job\x20to\x20check','findOne','Settings\x20not\x20available','bucket','Transcribe\x20not\x20configured','transcribeAccountId','forEach','all','catch','name','inspect','start','lodash','aws-sdk','request-promise','util','../../mysqldb','transcribe','TranscribeService','getTranscriptionJob','info','format','data1','data2','transcribeRegion','then','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','transcribeName','TranscriptionJob','TranscriptionJobStatus','fileText','COMPLETED','Transcript','TranscriptFileUri','results','transcripts','length','transcript','update','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','tempSentiment','Sequelize','ValidationError','Sentiment\x20Analysis\x20not\x20requested','sentimentAccountId','sentimentRegion','language','Sentiment\x20Analysis\x20not\x20configured','CloudProvider','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Sentiment','SentimentScore','Positive','Mixed','FAILED','FailureReason'];(function(_0x48af38,_0x4b59c0){var _0x3d2de7=function(_0x377c21){while(--_0x377c21){_0x48af38['push'](_0x48af38['shift']());}};_0x3d2de7(++_0x4b59c0);}(_0x6c50,0xa4));var _0x06c5=function(_0x322f1a,_0x2eade4){_0x322f1a=_0x322f1a-0x0;var _0x32c794=_0x6c50[_0x322f1a];return _0x32c794;};var _=require(_0x06c5('0x0'));var AWS=require(_0x06c5('0x1'));var rp=require(_0x06c5('0x2'));var util=require(_0x06c5('0x3'));var BPromise=require('bluebird');var db=require(_0x06c5('0x4'))['db'];var logger=require('../../config/logger')(_0x06c5('0x5'));function getTranscriptionJob(_0x2853be,_0x434003,_0x443043,_0x3c050f){return new Promise(function(_0x463f4f,_0x3f5b56){var _0x427dd6=new AWS[(_0x06c5('0x6'))]({'accessKeyId':_0x434003,'secretAccessKey':_0x2853be,'region':_0x443043});_0x427dd6[_0x06c5('0x7')]({'TranscriptionJobName':_0x3c050f},function(_0x154b0a,_0x546ae5){if(_0x154b0a){return _0x3f5b56(_0x154b0a);}else{return _0x463f4f(_0x546ae5);}});});}function sentiment(_0xe263a,_0x222e05,_0x3010af,_0x18f1e9,_0x4e863c){return new Promise(function(_0x510444,_0x5ea57c){var _0x1dc67b=new AWS['Comprehend']({'accessKeyId':_0x222e05,'secretAccessKey':_0xe263a,'region':_0x3010af});_0x1dc67b['detectSentiment']({'Text':_0x18f1e9,'LanguageCode':_0x4e863c['substring'](0x0,0x2)},function(_0x236104,_0x5613a8){if(_0x236104){return _0x5ea57c(_0x236104);}else{return _0x510444(_0x5613a8);}});});}function checkTranscribeJob(_0x319710,_0x2d7502,_0x68194e){var _0x4ce581;return new BPromise(function(_0x6546e3,_0x3cb963){logger[_0x06c5('0x8')](util[_0x06c5('0x9')]('[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)',_0x319710['id'],_0x319710['transcribeName']));return getTranscriptionJob(_0x68194e[_0x06c5('0xa')],_0x68194e[_0x06c5('0xb')],_0x2d7502[_0x06c5('0xc')],_0x319710['transcribeName'])[_0x06c5('0xd')](function(_0x117371){logger['info'](util[_0x06c5('0x9')](_0x06c5('0xe'),_0x319710['id'],_0x319710[_0x06c5('0xf')],_0x117371[_0x06c5('0x10')][_0x06c5('0x11')]));if(!_0x319710[_0x06c5('0x12')]){switch(_0x117371[_0x06c5('0x10')][_0x06c5('0x11')]){case _0x06c5('0x13'):var _0x2b93ba={'transcribeStatus':_0x117371[_0x06c5('0x10')][_0x06c5('0x11')],'fileUri':_0x117371[_0x06c5('0x10')][_0x06c5('0x14')][_0x06c5('0x15')]};logger[_0x06c5('0x8')](util[_0x06c5('0x9')]('[RECORDING:%d]\x20Get\x20transcript',_0x319710['id']));return rp({'uri':_0x117371[_0x06c5('0x10')][_0x06c5('0x14')][_0x06c5('0x15')],'json':!![]})[_0x06c5('0xd')](function(_0xa3659b){logger[_0x06c5('0x8')](util[_0x06c5('0x9')]('[RECORDING:%d]\x20Transcript\x20downloaded',_0x319710['id']));if(_0xa3659b&&_0xa3659b[_0x06c5('0x16')]&&_0xa3659b[_0x06c5('0x16')][_0x06c5('0x17')]&&_0xa3659b[_0x06c5('0x16')][_0x06c5('0x17')][_0x06c5('0x18')]){_0x2b93ba[_0x06c5('0x12')]='';for(var _0x51f2a6=0x0;_0x51f2a6<_0xa3659b[_0x06c5('0x16')]['transcripts']['length'];_0x51f2a6++){_0x2b93ba['fileText']+=_0xa3659b['results'][_0x06c5('0x17')][_0x51f2a6][_0x06c5('0x19')]+'';}}return _0x319710[_0x06c5('0x1a')](_0x2b93ba);})[_0x06c5('0xd')](function(){logger[_0x06c5('0x8')](util['format'](_0x06c5('0x1b'),_0x319710['id']));if(!_0x319710[_0x06c5('0x1c')]){throw new db[(_0x06c5('0x1d'))][(_0x06c5('0x1e'))](_0x06c5('0x1f'));}if(!_0x2d7502['sentiment']||!_0x2d7502[_0x06c5('0x20')]||!_0x2d7502[_0x06c5('0x21')]||!_0x2d7502[_0x06c5('0x22')]||!_0x2d7502['bucket']){throw new db[(_0x06c5('0x1d'))][(_0x06c5('0x1e'))](_0x06c5('0x23'));}if(!_0x2b93ba['fileText']){throw new Error('Transcript\x20not\x20available');}if(_0x2d7502['sentimentAccountId']===_0x68194e['id']){return _0x68194e;}else{return db[_0x06c5('0x24')]['findOne']({'where':{'id':_settings[_0x06c5('0x20')]}});}})['then'](function(_0xb849b5){if(!_0xb849b5){throw new db['Sequelize'][(_0x06c5('0x1e'))]('Cloud\x20Provider\x20not\x20available');}if(!_0xb849b5['data1']||!_0xb849b5[_0x06c5('0xb')]){throw new db['Sequelize']['ValidationError'](_0x06c5('0x25'));}_0x4ce581=_0xb849b5;logger[_0x06c5('0x8')](util[_0x06c5('0x9')](_0x06c5('0x26'),_0x319710['id']));return sentiment(_0x4ce581[_0x06c5('0xa')],_0x4ce581[_0x06c5('0xb')],_0x2d7502[_0x06c5('0x21')],_0x2b93ba['fileText'],_0x2d7502[_0x06c5('0x22')]);})['then'](function(_0x49d825){logger[_0x06c5('0x8')](util[_0x06c5('0x9')](_0x06c5('0x27'),_0x319710['id']));return _0x319710[_0x06c5('0x1a')]({'sentiment':_0x49d825[_0x06c5('0x28')],'sPositive':_0x49d825[_0x06c5('0x29')][_0x06c5('0x2a')],'sNegative':_0x49d825['SentimentScore']['Negative'],'sMixed':_0x49d825[_0x06c5('0x29')][_0x06c5('0x2b')],'sNeutral':_0x49d825['SentimentScore']['Neutral']});})[_0x06c5('0xd')](function(){logger[_0x06c5('0x8')](util[_0x06c5('0x9')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x319710['id']));_0x6546e3();});case _0x06c5('0x2c'):return _0x319710[_0x06c5('0x1a')]({'transcribeStatus':_0x06c5('0x2c'),'failureReason':_0x117371['TranscriptionJob'][_0x06c5('0x2d')]})[_0x06c5('0xd')](function(){logger['info'](util['format'](_0x06c5('0x1b'),_0x319710['id']));_0x6546e3();});default:logger['info'](util[_0x06c5('0x9')]('[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed',_0x319710['id']));break;}}else{return BPromise[_0x06c5('0x2e')]()[_0x06c5('0xd')](function(){if(!_0x319710[_0x06c5('0x1c')]){throw new db[(_0x06c5('0x1d'))][(_0x06c5('0x1e'))](_0x06c5('0x1f'));}if(!_0x2d7502[_0x06c5('0x2f')]||!_0x2d7502['sentimentAccountId']||!_0x2d7502[_0x06c5('0x21')]||!_0x2d7502['language']||!_0x2d7502['bucket']){throw new db[(_0x06c5('0x1d'))][(_0x06c5('0x1e'))](_0x06c5('0x23'));}if(!_0x319710[_0x06c5('0x12')]){throw new Error(_0x06c5('0x30'));}if(_0x2d7502[_0x06c5('0x20')]===_0x68194e['id']){return _0x68194e;}else{return db[_0x06c5('0x24')]['findOne']({'where':{'id':_settings['sentimentAccountId']}});}})['then'](function(_0x2dd49b){if(!_0x2dd49b){throw new db['Sequelize'][(_0x06c5('0x1e'))](_0x06c5('0x31'));}if(!_0x2dd49b[_0x06c5('0xa')]||!_0x2dd49b['data2']){throw new db[(_0x06c5('0x1d'))][(_0x06c5('0x1e'))](_0x06c5('0x25'));}_0x4ce581=_0x2dd49b;logger[_0x06c5('0x8')](util[_0x06c5('0x9')]('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0x319710['id']));return sentiment(_0x4ce581[_0x06c5('0xa')],_0x4ce581[_0x06c5('0xb')],_0x2d7502[_0x06c5('0x21')],_0x319710['fileText'],_0x2d7502[_0x06c5('0x22')]);})[_0x06c5('0xd')](function(_0x560156){logger[_0x06c5('0x8')](util[_0x06c5('0x9')](_0x06c5('0x27'),_0x319710['id']));return _0x319710['update']({'sentiment':_0x560156[_0x06c5('0x28')],'sPositive':_0x560156[_0x06c5('0x29')][_0x06c5('0x2a')],'sNegative':_0x560156[_0x06c5('0x29')][_0x06c5('0x32')],'sMixed':_0x560156['SentimentScore'][_0x06c5('0x2b')],'sNeutral':_0x560156[_0x06c5('0x29')][_0x06c5('0x33')],'transcribeStatus':_0x06c5('0x13')});})[_0x06c5('0xd')](function(){logger[_0x06c5('0x8')](util['format'](_0x06c5('0x1b'),_0x319710['id']));_0x6546e3();});}})['catch'](function(_0x2a228f){if(_0x2a228f){if(!_0x2a228f['name']||_0x2a228f['name']!==_0x06c5('0x34')){logger[_0x06c5('0x35')](util['format'](_0x06c5('0x36'),_0x319710['id']),util['inspect'](_0x2a228f,{'showHidden':![],'depth':null}));}}_0x6546e3();});});}function checkTranscribe(){var _0x536b44;var _0x364a2e;var _0x26a491;return db[_0x06c5('0x37')][_0x06c5('0x38')]({'where':{'transcribeStatus':_0x06c5('0x39')}})[_0x06c5('0xd')](function(_0x3865a0){if(!_0x3865a0||!_0x3865a0[_0x06c5('0x18')]){throw new db[(_0x06c5('0x1d'))][(_0x06c5('0x1e'))](_0x06c5('0x3a'));}_0x536b44=_0x3865a0;return db['Setting'][_0x06c5('0x3b')]({'where':{'id':0x1}});})[_0x06c5('0xd')](function(_0x5c4dff){if(!_0x5c4dff){throw new db[(_0x06c5('0x1d'))][(_0x06c5('0x1e'))](_0x06c5('0x3c'));}_0x364a2e=_0x5c4dff;if(!_0x364a2e[_0x06c5('0x5')]||!_0x364a2e['transcribeAccountId']||!_0x364a2e[_0x06c5('0xc')]||!_0x364a2e['language']||!_0x364a2e[_0x06c5('0x3d')]){throw new db['Sequelize']['ValidationError'](_0x06c5('0x3e'));}return db[_0x06c5('0x24')][_0x06c5('0x3b')]({'where':{'id':_0x364a2e[_0x06c5('0x3f')]}});})[_0x06c5('0xd')](function(_0x5cfac8){if(!_0x5cfac8){throw new db[(_0x06c5('0x1d'))]['ValidationError']('Cloud\x20Provider\x20not\x20available');}if(!_0x5cfac8[_0x06c5('0xa')]||!_0x5cfac8['data2']){throw new db[(_0x06c5('0x1d'))][(_0x06c5('0x1e'))](_0x06c5('0x25'));}_0x26a491=_0x5cfac8;var _0x478d58=[];_0x536b44[_0x06c5('0x40')](function(_0x5af034){_0x478d58['push'](checkTranscribeJob(_0x5af034,_0x364a2e,_0x26a491));});return BPromise[_0x06c5('0x41')](_0x478d58);})[_0x06c5('0x42')](function(_0x45b493){if(_0x45b493){if(!_0x45b493[_0x06c5('0x43')]||_0x45b493[_0x06c5('0x43')]!==_0x06c5('0x34')){logger[_0x06c5('0x35')](util[_0x06c5('0x44')](_0x45b493,{'showHidden':![],'depth':null}));}}});}exports[_0x06c5('0x45')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};