Built motion from commit (unavailable).|2.5.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 _0x1989=['info','format','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeName','data1','then','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJob','TranscriptionJobStatus','Transcript','TranscriptFileUri','[RECORDING:%d]\x20Get\x20transcript','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','fileText','transcript','tempSentiment','ValidationError','Sentiment\x20Analysis\x20not\x20requested','sentiment','sentimentAccountId','sentimentRegion','language','bucket','Sequelize','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available','CloudProvider','findOne','Cloud\x20Provider\x20not\x20available','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','data2','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','update','SentimentScore','Positive','Negative','Mixed','Neutral','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','FAILED','FailureReason','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','Sentiment','COMPLETED','catch','name','error','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','inspect','VoiceRecording','findAll','IN_PROGRESS','Setting','Settings\x20not\x20available','Transcribe\x20not\x20configured','push','SequelizeValidationError','start','lodash','aws-sdk','request-promise','../../mysqldb','../../config/logger','transcribe','TranscribeService','getTranscriptionJob','Comprehend','detectSentiment','substring'];(function(_0x1a3243,_0x201872){var _0x33f2ca=function(_0x59d32e){while(--_0x59d32e){_0x1a3243['push'](_0x1a3243['shift']());}};_0x33f2ca(++_0x201872);}(_0x1989,0x11d));var _0x9198=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1989[_0x3dd15e];return _0x231fd0;};var _=require(_0x9198('0x0'));var AWS=require(_0x9198('0x1'));var rp=require(_0x9198('0x2'));var util=require('util');var BPromise=require('bluebird');var db=require(_0x9198('0x3'))['db'];var logger=require(_0x9198('0x4'))(_0x9198('0x5'));function getTranscriptionJob(_0x4a16c5,_0x19ba1e,_0x667e9c,_0x19057e){return new Promise(function(_0x15c384,_0x16f59f){var _0x428ea2=new AWS[(_0x9198('0x6'))]({'accessKeyId':_0x19ba1e,'secretAccessKey':_0x4a16c5,'region':_0x667e9c});_0x428ea2[_0x9198('0x7')]({'TranscriptionJobName':_0x19057e},function(_0x4ca749,_0x2804f5){if(_0x4ca749){return _0x16f59f(_0x4ca749);}else{return _0x15c384(_0x2804f5);}});});}function sentiment(_0x2994d7,_0x5cfbe5,_0x493410,_0x3b215b,_0x1eea68){return new Promise(function(_0x55710d,_0x268f46){var _0x417b3b=new AWS[(_0x9198('0x8'))]({'accessKeyId':_0x5cfbe5,'secretAccessKey':_0x2994d7,'region':_0x493410});_0x417b3b[_0x9198('0x9')]({'Text':_0x3b215b,'LanguageCode':_0x1eea68[_0x9198('0xa')](0x0,0x2)},function(_0x241167,_0x28ead3){if(_0x241167){return _0x268f46(_0x241167);}else{return _0x55710d(_0x28ead3);}});});}function checkTranscribeJob(_0x13d69f,_0x4fdb13,_0x308b1b){var _0x498580;return new BPromise(function(_0x42db9e,_0x309076){logger[_0x9198('0xb')](util[_0x9198('0xc')](_0x9198('0xd'),_0x13d69f['id'],_0x13d69f[_0x9198('0xe')]));return getTranscriptionJob(_0x308b1b[_0x9198('0xf')],_0x308b1b['data2'],_0x4fdb13['transcribeRegion'],_0x13d69f['transcribeName'])[_0x9198('0x10')](function(_0xfa9a37){logger['info'](util[_0x9198('0xc')](_0x9198('0x11'),_0x13d69f['id'],_0x13d69f[_0x9198('0xe')],_0xfa9a37[_0x9198('0x12')][_0x9198('0x13')]));if(!_0x13d69f['fileText']){switch(_0xfa9a37['TranscriptionJob'][_0x9198('0x13')]){case'COMPLETED':var _0x2d49dc={'transcribeStatus':_0xfa9a37[_0x9198('0x12')][_0x9198('0x13')],'fileUri':_0xfa9a37[_0x9198('0x12')][_0x9198('0x14')][_0x9198('0x15')]};logger[_0x9198('0xb')](util[_0x9198('0xc')](_0x9198('0x16'),_0x13d69f['id']));return rp({'uri':_0xfa9a37[_0x9198('0x12')][_0x9198('0x14')][_0x9198('0x15')],'json':!![]})[_0x9198('0x10')](function(_0x3e0fee){logger['info'](util[_0x9198('0xc')](_0x9198('0x17'),_0x13d69f['id']));if(_0x3e0fee&&_0x3e0fee[_0x9198('0x18')]&&_0x3e0fee[_0x9198('0x18')][_0x9198('0x19')]&&_0x3e0fee[_0x9198('0x18')][_0x9198('0x19')][_0x9198('0x1a')]){_0x2d49dc[_0x9198('0x1b')]='';for(var _0x2598ab=0x0;_0x2598ab<_0x3e0fee['results'][_0x9198('0x19')]['length'];_0x2598ab++){_0x2d49dc['fileText']+=_0x3e0fee['results'][_0x9198('0x19')][_0x2598ab][_0x9198('0x1c')]+'';}}return _0x13d69f['update'](_0x2d49dc);})['then'](function(){logger[_0x9198('0xb')](util[_0x9198('0xc')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x13d69f['id']));if(!_0x13d69f[_0x9198('0x1d')]){throw new db['Sequelize'][(_0x9198('0x1e'))](_0x9198('0x1f'));}if(!_0x4fdb13[_0x9198('0x20')]||!_0x4fdb13[_0x9198('0x21')]||!_0x4fdb13[_0x9198('0x22')]||!_0x4fdb13[_0x9198('0x23')]||!_0x4fdb13[_0x9198('0x24')]){throw new db[(_0x9198('0x25'))]['ValidationError'](_0x9198('0x26'));}if(!_0x2d49dc[_0x9198('0x1b')]){throw new Error(_0x9198('0x27'));}if(_0x4fdb13['sentimentAccountId']===_0x308b1b['id']){return _0x308b1b;}else{return db[_0x9198('0x28')][_0x9198('0x29')]({'where':{'id':_settings[_0x9198('0x21')]}});}})[_0x9198('0x10')](function(_0x4f55cc){if(!_0x4f55cc){throw new db[(_0x9198('0x25'))]['ValidationError'](_0x9198('0x2a'));}if(!_0x4f55cc['data1']||!_0x4f55cc['data2']){throw new db[(_0x9198('0x25'))][(_0x9198('0x1e'))](_0x9198('0x2b'));}_0x498580=_0x4f55cc;logger[_0x9198('0xb')](util['format'](_0x9198('0x2c'),_0x13d69f['id']));return sentiment(_0x498580[_0x9198('0xf')],_0x498580[_0x9198('0x2d')],_0x4fdb13['sentimentRegion'],_0x2d49dc[_0x9198('0x1b')],_0x4fdb13['language']);})['then'](function(_0x4b61aa){logger[_0x9198('0xb')](util[_0x9198('0xc')](_0x9198('0x2e'),_0x13d69f['id']));return _0x13d69f[_0x9198('0x2f')]({'sentiment':_0x4b61aa['Sentiment'],'sPositive':_0x4b61aa[_0x9198('0x30')][_0x9198('0x31')],'sNegative':_0x4b61aa[_0x9198('0x30')][_0x9198('0x32')],'sMixed':_0x4b61aa[_0x9198('0x30')][_0x9198('0x33')],'sNeutral':_0x4b61aa[_0x9198('0x30')][_0x9198('0x34')]});})['then'](function(){logger[_0x9198('0xb')](util['format'](_0x9198('0x35'),_0x13d69f['id']));_0x42db9e();});case'FAILED':return _0x13d69f[_0x9198('0x2f')]({'transcribeStatus':_0x9198('0x36'),'failureReason':_0xfa9a37['TranscriptionJob'][_0x9198('0x37')]})[_0x9198('0x10')](function(){logger[_0x9198('0xb')](util['format'](_0x9198('0x35'),_0x13d69f['id']));_0x42db9e();});default:logger[_0x9198('0xb')](util[_0x9198('0xc')](_0x9198('0x38'),_0x13d69f['id']));break;}}else{return BPromise[_0x9198('0x39')]()['then'](function(){if(!_0x13d69f[_0x9198('0x1d')]){throw new db[(_0x9198('0x25'))][(_0x9198('0x1e'))](_0x9198('0x1f'));}if(!_0x4fdb13[_0x9198('0x20')]||!_0x4fdb13[_0x9198('0x21')]||!_0x4fdb13[_0x9198('0x22')]||!_0x4fdb13[_0x9198('0x23')]||!_0x4fdb13[_0x9198('0x24')]){throw new db[(_0x9198('0x25'))][(_0x9198('0x1e'))](_0x9198('0x26'));}if(!_0x13d69f[_0x9198('0x1b')]){throw new Error('Transcript\x20not\x20available');}if(_0x4fdb13[_0x9198('0x21')]===_0x308b1b['id']){return _0x308b1b;}else{return db[_0x9198('0x28')]['findOne']({'where':{'id':_settings['sentimentAccountId']}});}})[_0x9198('0x10')](function(_0x20c045){if(!_0x20c045){throw new db[(_0x9198('0x25'))][(_0x9198('0x1e'))](_0x9198('0x2a'));}if(!_0x20c045[_0x9198('0xf')]||!_0x20c045[_0x9198('0x2d')]){throw new db[(_0x9198('0x25'))][(_0x9198('0x1e'))](_0x9198('0x2b'));}_0x498580=_0x20c045;logger['info'](util[_0x9198('0xc')](_0x9198('0x2c'),_0x13d69f['id']));return sentiment(_0x498580['data1'],_0x498580[_0x9198('0x2d')],_0x4fdb13[_0x9198('0x22')],_0x13d69f[_0x9198('0x1b')],_0x4fdb13['language']);})[_0x9198('0x10')](function(_0x4b7721){logger[_0x9198('0xb')](util[_0x9198('0xc')](_0x9198('0x2e'),_0x13d69f['id']));return _0x13d69f['update']({'sentiment':_0x4b7721[_0x9198('0x3a')],'sPositive':_0x4b7721[_0x9198('0x30')]['Positive'],'sNegative':_0x4b7721[_0x9198('0x30')]['Negative'],'sMixed':_0x4b7721[_0x9198('0x30')][_0x9198('0x33')],'sNeutral':_0x4b7721['SentimentScore'][_0x9198('0x34')],'transcribeStatus':_0x9198('0x3b')});})[_0x9198('0x10')](function(){logger[_0x9198('0xb')](util[_0x9198('0xc')](_0x9198('0x35'),_0x13d69f['id']));_0x42db9e();});}})[_0x9198('0x3c')](function(_0x52fc22){if(_0x52fc22){if(!_0x52fc22[_0x9198('0x3d')]||_0x52fc22[_0x9198('0x3d')]!=='SequelizeValidationError'){logger[_0x9198('0x3e')](util[_0x9198('0xc')](_0x9198('0x3f'),_0x13d69f['id']),util[_0x9198('0x40')](_0x52fc22,{'showHidden':![],'depth':null}));}}_0x42db9e();});});}function checkTranscribe(){var _0x577128;var _0x205c56;var _0x422061;return db[_0x9198('0x41')][_0x9198('0x42')]({'where':{'transcribeStatus':_0x9198('0x43')}})[_0x9198('0x10')](function(_0x401f0a){if(!_0x401f0a||!_0x401f0a[_0x9198('0x1a')]){throw new db[(_0x9198('0x25'))][(_0x9198('0x1e'))]('No\x20transcribe\x20job\x20to\x20check');}_0x577128=_0x401f0a;return db[_0x9198('0x44')]['findOne']({'where':{'id':0x1}});})[_0x9198('0x10')](function(_0x4e5f8a){if(!_0x4e5f8a){throw new db[(_0x9198('0x25'))]['ValidationError'](_0x9198('0x45'));}_0x205c56=_0x4e5f8a;if(!_0x205c56['transcribe']||!_0x205c56['transcribeAccountId']||!_0x205c56['transcribeRegion']||!_0x205c56[_0x9198('0x23')]||!_0x205c56[_0x9198('0x24')]){throw new db[(_0x9198('0x25'))][(_0x9198('0x1e'))](_0x9198('0x46'));}return db[_0x9198('0x28')]['findOne']({'where':{'id':_0x205c56['transcribeAccountId']}});})[_0x9198('0x10')](function(_0x203253){if(!_0x203253){throw new db[(_0x9198('0x25'))][(_0x9198('0x1e'))](_0x9198('0x2a'));}if(!_0x203253[_0x9198('0xf')]||!_0x203253[_0x9198('0x2d')]){throw new db[(_0x9198('0x25'))]['ValidationError']('Cloud\x20Provider\x20not\x20configured');}_0x422061=_0x203253;var _0x1abf28=[];_0x577128['forEach'](function(_0x139ad3){_0x1abf28[_0x9198('0x47')](checkTranscribeJob(_0x139ad3,_0x205c56,_0x422061));});return BPromise['all'](_0x1abf28);})[_0x9198('0x3c')](function(_0x284f33){if(_0x284f33){if(!_0x284f33[_0x9198('0x3d')]||_0x284f33[_0x9198('0x3d')]!==_0x9198('0x48')){logger['error'](util[_0x9198('0x40')](_0x284f33,{'showHidden':![],'depth':null}));}}});}exports[_0x9198('0x49')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};