Built motion from commit 1fa89557.|2.6.10
[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 _0x4cf8=['transcript','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','Sequelize','Sentiment\x20Analysis\x20not\x20requested','sentiment','sentimentAccountId','sentimentRegion','language','bucket','ValidationError','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available','CloudProvider','findOne','Cloud\x20Provider\x20not\x20available','Sentiment','SentimentScore','Negative','Mixed','Neutral','FAILED','update','FailureReason','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','tempSentiment','Cloud\x20Provider\x20not\x20configured','Positive','catch','name','error','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','VoiceRecording','findAll','IN_PROGRESS','No\x20transcribe\x20job\x20to\x20check','transcribeAccountId','Transcribe\x20not\x20configured','forEach','all','SequelizeValidationError','inspect','start','lodash','aws-sdk','request-promise','util','bluebird','../../mysqldb','../../config/logger','transcribe','getTranscriptionJob','Comprehend','detectSentiment','info','format','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeName','data1','data2','transcribeRegion','then','TranscriptionJob','TranscriptionJobStatus','fileText','COMPLETED','Transcript','TranscriptFileUri','[RECORDING:%d]\x20Get\x20transcript','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length'];(function(_0xfd9b04,_0x4d8697){var _0x1ffefb=function(_0x230670){while(--_0x230670){_0xfd9b04['push'](_0xfd9b04['shift']());}};_0x1ffefb(++_0x4d8697);}(_0x4cf8,0x1e1));var _0x84cf=function(_0x5180c3,_0x4b35f7){_0x5180c3=_0x5180c3-0x0;var _0x55c975=_0x4cf8[_0x5180c3];return _0x55c975;};var _=require(_0x84cf('0x0'));var AWS=require(_0x84cf('0x1'));var rp=require(_0x84cf('0x2'));var util=require(_0x84cf('0x3'));var BPromise=require(_0x84cf('0x4'));var db=require(_0x84cf('0x5'))['db'];var logger=require(_0x84cf('0x6'))(_0x84cf('0x7'));function getTranscriptionJob(_0x3bbbc3,_0x2d38c0,_0x5844d7,_0x2c613d){return new Promise(function(_0x50ade2,_0x4af3f1){var _0x455345=new AWS['TranscribeService']({'accessKeyId':_0x2d38c0,'secretAccessKey':_0x3bbbc3,'region':_0x5844d7});_0x455345[_0x84cf('0x8')]({'TranscriptionJobName':_0x2c613d},function(_0x2c11b0,_0x51b84c){if(_0x2c11b0){return _0x4af3f1(_0x2c11b0);}else{return _0x50ade2(_0x51b84c);}});});}function sentiment(_0x2e0b79,_0x39c6bc,_0x489063,_0xfb5398,_0x1b223d){return new Promise(function(_0x390ce9,_0x369ce6){var _0x50d667=new AWS[(_0x84cf('0x9'))]({'accessKeyId':_0x39c6bc,'secretAccessKey':_0x2e0b79,'region':_0x489063});_0x50d667[_0x84cf('0xa')]({'Text':_0xfb5398,'LanguageCode':_0x1b223d['substring'](0x0,0x2)},function(_0x51d315,_0x7a00bf){if(_0x51d315){return _0x369ce6(_0x51d315);}else{return _0x390ce9(_0x7a00bf);}});});}function checkTranscribeJob(_0x27efbf,_0x35f852,_0x33f83e){var _0x172d04;return new BPromise(function(_0x214ca0,_0x1fd6cb){logger[_0x84cf('0xb')](util[_0x84cf('0xc')](_0x84cf('0xd'),_0x27efbf['id'],_0x27efbf[_0x84cf('0xe')]));return getTranscriptionJob(_0x33f83e[_0x84cf('0xf')],_0x33f83e[_0x84cf('0x10')],_0x35f852[_0x84cf('0x11')],_0x27efbf[_0x84cf('0xe')])[_0x84cf('0x12')](function(_0x464e70){logger[_0x84cf('0xb')](util[_0x84cf('0xc')]('[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s',_0x27efbf['id'],_0x27efbf[_0x84cf('0xe')],_0x464e70[_0x84cf('0x13')][_0x84cf('0x14')]));if(!_0x27efbf[_0x84cf('0x15')]){switch(_0x464e70[_0x84cf('0x13')][_0x84cf('0x14')]){case _0x84cf('0x16'):var _0x5d5650={'transcribeStatus':_0x464e70['TranscriptionJob'][_0x84cf('0x14')],'fileUri':_0x464e70[_0x84cf('0x13')][_0x84cf('0x17')][_0x84cf('0x18')]};logger[_0x84cf('0xb')](util['format'](_0x84cf('0x19'),_0x27efbf['id']));return rp({'uri':_0x464e70[_0x84cf('0x13')][_0x84cf('0x17')][_0x84cf('0x18')],'json':!![]})[_0x84cf('0x12')](function(_0x54405a){logger[_0x84cf('0xb')](util[_0x84cf('0xc')](_0x84cf('0x1a'),_0x27efbf['id']));if(_0x54405a&&_0x54405a[_0x84cf('0x1b')]&&_0x54405a[_0x84cf('0x1b')][_0x84cf('0x1c')]&&_0x54405a[_0x84cf('0x1b')]['transcripts'][_0x84cf('0x1d')]){_0x5d5650[_0x84cf('0x15')]='';for(var _0x1c7747=0x0;_0x1c7747<_0x54405a[_0x84cf('0x1b')][_0x84cf('0x1c')][_0x84cf('0x1d')];_0x1c7747++){_0x5d5650[_0x84cf('0x15')]+=_0x54405a[_0x84cf('0x1b')][_0x84cf('0x1c')][_0x1c7747][_0x84cf('0x1e')]+'';}}return _0x27efbf['update'](_0x5d5650);})[_0x84cf('0x12')](function(){logger[_0x84cf('0xb')](util[_0x84cf('0xc')](_0x84cf('0x1f'),_0x27efbf['id']));if(!_0x27efbf['tempSentiment']){throw new db[(_0x84cf('0x20'))]['ValidationError'](_0x84cf('0x21'));}if(!_0x35f852[_0x84cf('0x22')]||!_0x35f852[_0x84cf('0x23')]||!_0x35f852[_0x84cf('0x24')]||!_0x35f852[_0x84cf('0x25')]||!_0x35f852[_0x84cf('0x26')]){throw new db[(_0x84cf('0x20'))][(_0x84cf('0x27'))](_0x84cf('0x28'));}if(!_0x5d5650[_0x84cf('0x15')]){throw new Error(_0x84cf('0x29'));}if(_0x35f852[_0x84cf('0x23')]===_0x33f83e['id']){return _0x33f83e;}else{return db[_0x84cf('0x2a')][_0x84cf('0x2b')]({'where':{'id':_settings['sentimentAccountId']}});}})['then'](function(_0x2795ef){if(!_0x2795ef){throw new db[(_0x84cf('0x20'))][(_0x84cf('0x27'))](_0x84cf('0x2c'));}if(!_0x2795ef[_0x84cf('0xf')]||!_0x2795ef[_0x84cf('0x10')]){throw new db[(_0x84cf('0x20'))][(_0x84cf('0x27'))]('Cloud\x20Provider\x20not\x20configured');}_0x172d04=_0x2795ef;logger[_0x84cf('0xb')](util[_0x84cf('0xc')]('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0x27efbf['id']));return sentiment(_0x172d04[_0x84cf('0xf')],_0x172d04['data2'],_0x35f852[_0x84cf('0x24')],_0x5d5650[_0x84cf('0x15')],_0x35f852[_0x84cf('0x25')]);})[_0x84cf('0x12')](function(_0x172ce9){logger['info'](util[_0x84cf('0xc')]('[RECORDING:%d]\x20Sentiment\x20Analysis\x20available',_0x27efbf['id']));return _0x27efbf['update']({'sentiment':_0x172ce9[_0x84cf('0x2d')],'sPositive':_0x172ce9[_0x84cf('0x2e')]['Positive'],'sNegative':_0x172ce9[_0x84cf('0x2e')][_0x84cf('0x2f')],'sMixed':_0x172ce9[_0x84cf('0x2e')][_0x84cf('0x30')],'sNeutral':_0x172ce9[_0x84cf('0x2e')][_0x84cf('0x31')]});})['then'](function(){logger[_0x84cf('0xb')](util[_0x84cf('0xc')](_0x84cf('0x1f'),_0x27efbf['id']));_0x214ca0();});case _0x84cf('0x32'):return _0x27efbf[_0x84cf('0x33')]({'transcribeStatus':_0x84cf('0x32'),'failureReason':_0x464e70['TranscriptionJob'][_0x84cf('0x34')]})['then'](function(){logger[_0x84cf('0xb')](util[_0x84cf('0xc')](_0x84cf('0x1f'),_0x27efbf['id']));_0x214ca0();});default:logger[_0x84cf('0xb')](util[_0x84cf('0xc')](_0x84cf('0x35'),_0x27efbf['id']));break;}}else{return BPromise[_0x84cf('0x36')]()[_0x84cf('0x12')](function(){if(!_0x27efbf[_0x84cf('0x37')]){throw new db['Sequelize'][(_0x84cf('0x27'))]('Sentiment\x20Analysis\x20not\x20requested');}if(!_0x35f852[_0x84cf('0x22')]||!_0x35f852[_0x84cf('0x23')]||!_0x35f852['sentimentRegion']||!_0x35f852[_0x84cf('0x25')]||!_0x35f852['bucket']){throw new db[(_0x84cf('0x20'))]['ValidationError'](_0x84cf('0x28'));}if(!_0x27efbf['fileText']){throw new Error(_0x84cf('0x29'));}if(_0x35f852[_0x84cf('0x23')]===_0x33f83e['id']){return _0x33f83e;}else{return db['CloudProvider'][_0x84cf('0x2b')]({'where':{'id':_settings[_0x84cf('0x23')]}});}})[_0x84cf('0x12')](function(_0x5ef5fb){if(!_0x5ef5fb){throw new db[(_0x84cf('0x20'))]['ValidationError'](_0x84cf('0x2c'));}if(!_0x5ef5fb['data1']||!_0x5ef5fb['data2']){throw new db['Sequelize'][(_0x84cf('0x27'))](_0x84cf('0x38'));}_0x172d04=_0x5ef5fb;logger['info'](util[_0x84cf('0xc')]('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0x27efbf['id']));return sentiment(_0x172d04[_0x84cf('0xf')],_0x172d04[_0x84cf('0x10')],_0x35f852['sentimentRegion'],_0x27efbf[_0x84cf('0x15')],_0x35f852['language']);})[_0x84cf('0x12')](function(_0x593b35){logger['info'](util['format']('[RECORDING:%d]\x20Sentiment\x20Analysis\x20available',_0x27efbf['id']));return _0x27efbf['update']({'sentiment':_0x593b35['Sentiment'],'sPositive':_0x593b35['SentimentScore'][_0x84cf('0x39')],'sNegative':_0x593b35[_0x84cf('0x2e')][_0x84cf('0x2f')],'sMixed':_0x593b35[_0x84cf('0x2e')]['Mixed'],'sNeutral':_0x593b35[_0x84cf('0x2e')]['Neutral'],'transcribeStatus':_0x84cf('0x16')});})[_0x84cf('0x12')](function(){logger[_0x84cf('0xb')](util[_0x84cf('0xc')](_0x84cf('0x1f'),_0x27efbf['id']));_0x214ca0();});}})[_0x84cf('0x3a')](function(_0x4fba7f){if(_0x4fba7f){if(!_0x4fba7f[_0x84cf('0x3b')]||_0x4fba7f[_0x84cf('0x3b')]!=='SequelizeValidationError'){logger[_0x84cf('0x3c')](util[_0x84cf('0xc')](_0x84cf('0x3d'),_0x27efbf['id']),util['inspect'](_0x4fba7f,{'showHidden':![],'depth':null}));}}_0x214ca0();});});}function checkTranscribe(){var _0x5e8cde;var _0x5499f9;var _0x1cf3f6;return db[_0x84cf('0x3e')][_0x84cf('0x3f')]({'where':{'transcribeStatus':_0x84cf('0x40')}})[_0x84cf('0x12')](function(_0xdfade6){if(!_0xdfade6||!_0xdfade6['length']){throw new db[(_0x84cf('0x20'))]['ValidationError'](_0x84cf('0x41'));}_0x5e8cde=_0xdfade6;return db['Setting']['findOne']({'where':{'id':0x1}});})[_0x84cf('0x12')](function(_0xb1c3a8){if(!_0xb1c3a8){throw new db[(_0x84cf('0x20'))]['ValidationError']('Settings\x20not\x20available');}_0x5499f9=_0xb1c3a8;if(!_0x5499f9[_0x84cf('0x7')]||!_0x5499f9[_0x84cf('0x42')]||!_0x5499f9[_0x84cf('0x11')]||!_0x5499f9[_0x84cf('0x25')]||!_0x5499f9[_0x84cf('0x26')]){throw new db['Sequelize'][(_0x84cf('0x27'))](_0x84cf('0x43'));}return db['CloudProvider'][_0x84cf('0x2b')]({'where':{'id':_0x5499f9['transcribeAccountId']}});})['then'](function(_0x147194){if(!_0x147194){throw new db[(_0x84cf('0x20'))]['ValidationError']('Cloud\x20Provider\x20not\x20available');}if(!_0x147194[_0x84cf('0xf')]||!_0x147194[_0x84cf('0x10')]){throw new db[(_0x84cf('0x20'))][(_0x84cf('0x27'))](_0x84cf('0x38'));}_0x1cf3f6=_0x147194;var _0x3edaec=[];_0x5e8cde[_0x84cf('0x44')](function(_0x20ae02){_0x3edaec['push'](checkTranscribeJob(_0x20ae02,_0x5499f9,_0x1cf3f6));});return BPromise[_0x84cf('0x45')](_0x3edaec);})[_0x84cf('0x3a')](function(_0x52991f){if(_0x52991f){if(!_0x52991f['name']||_0x52991f[_0x84cf('0x3b')]!==_0x84cf('0x46')){logger[_0x84cf('0x3c')](util[_0x84cf('0x47')](_0x52991f,{'showHidden':![],'depth':null}));}}});}exports[_0x84cf('0x48')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};