Built motion from commit 753c950e.|2.5.42
[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 _0xffaa=['Neutral','FAILED','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Mixed','catch','name','SequelizeValidationError','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','inspect','VoiceRecording','findAll','No\x20transcribe\x20job\x20to\x20check','Setting','Settings\x20not\x20available','Transcribe\x20not\x20configured','findOne','transcribeAccountId','Cloud\x20Provider\x20not\x20configured','push','all','error','start','lodash','aws-sdk','request-promise','../../mysqldb','../../config/logger','transcribe','getTranscriptionJob','Comprehend','format','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeName','data1','data2','transcribeRegion','then','info','TranscriptionJobStatus','fileText','TranscriptionJob','COMPLETED','Transcript','TranscriptFileUri','[RECORDING:%d]\x20Get\x20transcript','results','transcripts','length','transcript','update','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','tempSentiment','Sequelize','ValidationError','Sentiment\x20Analysis\x20not\x20requested','sentiment','sentimentAccountId','bucket','Transcript\x20not\x20available','CloudProvider','Cloud\x20Provider\x20not\x20available','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','sentimentRegion','language','Sentiment','SentimentScore','Positive','Negative'];(function(_0x42a0b7,_0x528781){var _0x5170cc=function(_0x5c56c0){while(--_0x5c56c0){_0x42a0b7['push'](_0x42a0b7['shift']());}};_0x5170cc(++_0x528781);}(_0xffaa,0x130));var _0xaffa=function(_0x905c47,_0xa5a5c4){_0x905c47=_0x905c47-0x0;var _0x267599=_0xffaa[_0x905c47];return _0x267599;};var _=require(_0xaffa('0x0'));var AWS=require(_0xaffa('0x1'));var rp=require(_0xaffa('0x2'));var util=require('util');var BPromise=require('bluebird');var db=require(_0xaffa('0x3'))['db'];var logger=require(_0xaffa('0x4'))(_0xaffa('0x5'));function getTranscriptionJob(_0xd01185,_0x444eef,_0x46692a,_0x189c6a){return new Promise(function(_0x40a369,_0x4306c0){var _0x281191=new AWS['TranscribeService']({'accessKeyId':_0x444eef,'secretAccessKey':_0xd01185,'region':_0x46692a});_0x281191[_0xaffa('0x6')]({'TranscriptionJobName':_0x189c6a},function(_0x7c018f,_0x10be9f){if(_0x7c018f){return _0x4306c0(_0x7c018f);}else{return _0x40a369(_0x10be9f);}});});}function sentiment(_0x3c7409,_0x5d2ebb,_0x32eeca,_0x53c918,_0x1d5f19){return new Promise(function(_0x1a7e4a,_0xb00c87){var _0x4f81b3=new AWS[(_0xaffa('0x7'))]({'accessKeyId':_0x5d2ebb,'secretAccessKey':_0x3c7409,'region':_0x32eeca});_0x4f81b3['detectSentiment']({'Text':_0x53c918,'LanguageCode':_0x1d5f19['substring'](0x0,0x2)},function(_0x5b0abd,_0x2aa1a4){if(_0x5b0abd){return _0xb00c87(_0x5b0abd);}else{return _0x1a7e4a(_0x2aa1a4);}});});}function checkTranscribeJob(_0x5efbe8,_0x2ba362,_0x54f27f){var _0x3806e9;return new BPromise(function(_0x576751,_0x25284e){logger['info'](util[_0xaffa('0x8')](_0xaffa('0x9'),_0x5efbe8['id'],_0x5efbe8[_0xaffa('0xa')]));return getTranscriptionJob(_0x54f27f[_0xaffa('0xb')],_0x54f27f[_0xaffa('0xc')],_0x2ba362[_0xaffa('0xd')],_0x5efbe8[_0xaffa('0xa')])[_0xaffa('0xe')](function(_0x5cc262){logger[_0xaffa('0xf')](util[_0xaffa('0x8')]('[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s',_0x5efbe8['id'],_0x5efbe8[_0xaffa('0xa')],_0x5cc262['TranscriptionJob'][_0xaffa('0x10')]));if(!_0x5efbe8[_0xaffa('0x11')]){switch(_0x5cc262[_0xaffa('0x12')][_0xaffa('0x10')]){case _0xaffa('0x13'):var _0x46d0b1={'transcribeStatus':_0x5cc262['TranscriptionJob'][_0xaffa('0x10')],'fileUri':_0x5cc262[_0xaffa('0x12')][_0xaffa('0x14')][_0xaffa('0x15')]};logger[_0xaffa('0xf')](util[_0xaffa('0x8')](_0xaffa('0x16'),_0x5efbe8['id']));return rp({'uri':_0x5cc262['TranscriptionJob']['Transcript'][_0xaffa('0x15')],'json':!![]})[_0xaffa('0xe')](function(_0x45c856){logger[_0xaffa('0xf')](util['format']('[RECORDING:%d]\x20Transcript\x20downloaded',_0x5efbe8['id']));if(_0x45c856&&_0x45c856[_0xaffa('0x17')]&&_0x45c856[_0xaffa('0x17')]['transcripts']&&_0x45c856[_0xaffa('0x17')][_0xaffa('0x18')][_0xaffa('0x19')]){_0x46d0b1[_0xaffa('0x11')]='';for(var _0x1d83ce=0x0;_0x1d83ce<_0x45c856[_0xaffa('0x17')]['transcripts'][_0xaffa('0x19')];_0x1d83ce++){_0x46d0b1[_0xaffa('0x11')]+=_0x45c856['results']['transcripts'][_0x1d83ce][_0xaffa('0x1a')]+'';}}return _0x5efbe8[_0xaffa('0x1b')](_0x46d0b1);})[_0xaffa('0xe')](function(){logger[_0xaffa('0xf')](util[_0xaffa('0x8')](_0xaffa('0x1c'),_0x5efbe8['id']));if(!_0x5efbe8[_0xaffa('0x1d')]){throw new db[(_0xaffa('0x1e'))][(_0xaffa('0x1f'))](_0xaffa('0x20'));}if(!_0x2ba362[_0xaffa('0x21')]||!_0x2ba362[_0xaffa('0x22')]||!_0x2ba362['sentimentRegion']||!_0x2ba362['language']||!_0x2ba362[_0xaffa('0x23')]){throw new db[(_0xaffa('0x1e'))]['ValidationError']('Sentiment\x20Analysis\x20not\x20configured');}if(!_0x46d0b1['fileText']){throw new Error(_0xaffa('0x24'));}if(_0x2ba362[_0xaffa('0x22')]===_0x54f27f['id']){return _0x54f27f;}else{return db[_0xaffa('0x25')]['findOne']({'where':{'id':_settings[_0xaffa('0x22')]}});}})[_0xaffa('0xe')](function(_0x1f9ed2){if(!_0x1f9ed2){throw new db[(_0xaffa('0x1e'))][(_0xaffa('0x1f'))](_0xaffa('0x26'));}if(!_0x1f9ed2[_0xaffa('0xb')]||!_0x1f9ed2[_0xaffa('0xc')]){throw new db[(_0xaffa('0x1e'))][(_0xaffa('0x1f'))]('Cloud\x20Provider\x20not\x20configured');}_0x3806e9=_0x1f9ed2;logger[_0xaffa('0xf')](util[_0xaffa('0x8')](_0xaffa('0x27'),_0x5efbe8['id']));return sentiment(_0x3806e9[_0xaffa('0xb')],_0x3806e9[_0xaffa('0xc')],_0x2ba362[_0xaffa('0x28')],_0x46d0b1[_0xaffa('0x11')],_0x2ba362[_0xaffa('0x29')]);})['then'](function(_0x4d91bf){logger[_0xaffa('0xf')](util['format']('[RECORDING:%d]\x20Sentiment\x20Analysis\x20available',_0x5efbe8['id']));return _0x5efbe8[_0xaffa('0x1b')]({'sentiment':_0x4d91bf[_0xaffa('0x2a')],'sPositive':_0x4d91bf[_0xaffa('0x2b')][_0xaffa('0x2c')],'sNegative':_0x4d91bf['SentimentScore'][_0xaffa('0x2d')],'sMixed':_0x4d91bf[_0xaffa('0x2b')]['Mixed'],'sNeutral':_0x4d91bf[_0xaffa('0x2b')][_0xaffa('0x2e')]});})['then'](function(){logger['info'](util[_0xaffa('0x8')](_0xaffa('0x1c'),_0x5efbe8['id']));_0x576751();});case _0xaffa('0x2f'):return _0x5efbe8[_0xaffa('0x1b')]({'transcribeStatus':_0xaffa('0x2f'),'failureReason':_0x5cc262['TranscriptionJob']['FailureReason']})[_0xaffa('0xe')](function(){logger[_0xaffa('0xf')](util['format'](_0xaffa('0x1c'),_0x5efbe8['id']));_0x576751();});default:logger[_0xaffa('0xf')](util[_0xaffa('0x8')](_0xaffa('0x30'),_0x5efbe8['id']));break;}}else{return BPromise[_0xaffa('0x31')]()['then'](function(){if(!_0x5efbe8[_0xaffa('0x1d')]){throw new db['Sequelize'][(_0xaffa('0x1f'))](_0xaffa('0x20'));}if(!_0x2ba362[_0xaffa('0x21')]||!_0x2ba362['sentimentAccountId']||!_0x2ba362['sentimentRegion']||!_0x2ba362['language']||!_0x2ba362[_0xaffa('0x23')]){throw new db[(_0xaffa('0x1e'))][(_0xaffa('0x1f'))]('Sentiment\x20Analysis\x20not\x20configured');}if(!_0x5efbe8[_0xaffa('0x11')]){throw new Error('Transcript\x20not\x20available');}if(_0x2ba362[_0xaffa('0x22')]===_0x54f27f['id']){return _0x54f27f;}else{return db['CloudProvider']['findOne']({'where':{'id':_settings[_0xaffa('0x22')]}});}})[_0xaffa('0xe')](function(_0x2cbb42){if(!_0x2cbb42){throw new db[(_0xaffa('0x1e'))][(_0xaffa('0x1f'))](_0xaffa('0x26'));}if(!_0x2cbb42[_0xaffa('0xb')]||!_0x2cbb42[_0xaffa('0xc')]){throw new db[(_0xaffa('0x1e'))][(_0xaffa('0x1f'))]('Cloud\x20Provider\x20not\x20configured');}_0x3806e9=_0x2cbb42;logger[_0xaffa('0xf')](util[_0xaffa('0x8')](_0xaffa('0x27'),_0x5efbe8['id']));return sentiment(_0x3806e9[_0xaffa('0xb')],_0x3806e9[_0xaffa('0xc')],_0x2ba362[_0xaffa('0x28')],_0x5efbe8[_0xaffa('0x11')],_0x2ba362[_0xaffa('0x29')]);})['then'](function(_0x3a4c33){logger['info'](util[_0xaffa('0x8')](_0xaffa('0x32'),_0x5efbe8['id']));return _0x5efbe8[_0xaffa('0x1b')]({'sentiment':_0x3a4c33[_0xaffa('0x2a')],'sPositive':_0x3a4c33['SentimentScore']['Positive'],'sNegative':_0x3a4c33[_0xaffa('0x2b')]['Negative'],'sMixed':_0x3a4c33[_0xaffa('0x2b')][_0xaffa('0x33')],'sNeutral':_0x3a4c33['SentimentScore'][_0xaffa('0x2e')],'transcribeStatus':_0xaffa('0x13')});})[_0xaffa('0xe')](function(){logger['info'](util['format']('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x5efbe8['id']));_0x576751();});}})[_0xaffa('0x34')](function(_0x4cb2ec){if(_0x4cb2ec){if(!_0x4cb2ec[_0xaffa('0x35')]||_0x4cb2ec[_0xaffa('0x35')]!==_0xaffa('0x36')){logger['error'](util[_0xaffa('0x8')](_0xaffa('0x37'),_0x5efbe8['id']),util[_0xaffa('0x38')](_0x4cb2ec,{'showHidden':![],'depth':null}));}}_0x576751();});});}function checkTranscribe(){var _0x3f47c5;var _0x46248c;var _0x5e0029;return db[_0xaffa('0x39')][_0xaffa('0x3a')]({'where':{'transcribeStatus':'IN_PROGRESS'}})['then'](function(_0x5d3cd9){if(!_0x5d3cd9||!_0x5d3cd9[_0xaffa('0x19')]){throw new db[(_0xaffa('0x1e'))][(_0xaffa('0x1f'))](_0xaffa('0x3b'));}_0x3f47c5=_0x5d3cd9;return db[_0xaffa('0x3c')]['findOne']({'where':{'id':0x1}});})[_0xaffa('0xe')](function(_0x3a69cb){if(!_0x3a69cb){throw new db[(_0xaffa('0x1e'))][(_0xaffa('0x1f'))](_0xaffa('0x3d'));}_0x46248c=_0x3a69cb;if(!_0x46248c[_0xaffa('0x5')]||!_0x46248c['transcribeAccountId']||!_0x46248c[_0xaffa('0xd')]||!_0x46248c['language']||!_0x46248c[_0xaffa('0x23')]){throw new db[(_0xaffa('0x1e'))]['ValidationError'](_0xaffa('0x3e'));}return db['CloudProvider'][_0xaffa('0x3f')]({'where':{'id':_0x46248c[_0xaffa('0x40')]}});})[_0xaffa('0xe')](function(_0x3347ee){if(!_0x3347ee){throw new db[(_0xaffa('0x1e'))][(_0xaffa('0x1f'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x3347ee[_0xaffa('0xb')]||!_0x3347ee['data2']){throw new db['Sequelize'][(_0xaffa('0x1f'))](_0xaffa('0x41'));}_0x5e0029=_0x3347ee;var _0x11c1ac=[];_0x3f47c5['forEach'](function(_0x806817){_0x11c1ac[_0xaffa('0x42')](checkTranscribeJob(_0x806817,_0x46248c,_0x5e0029));});return BPromise[_0xaffa('0x43')](_0x11c1ac);})[_0xaffa('0x34')](function(_0x2905a8){if(_0x2905a8){if(!_0x2905a8['name']||_0x2905a8[_0xaffa('0x35')]!==_0xaffa('0x36')){logger[_0xaffa('0x44')](util[_0xaffa('0x38')](_0x2905a8,{'showHidden':![],'depth':null}));}}});}exports[_0xaffa('0x45')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};