Built motion from commit 9d7072cc.|2.5.39
[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 _0x1bd1=['aws-sdk','request-promise','bluebird','TranscribeService','getTranscriptionJob','Comprehend','detectSentiment','substring','info','transcribeName','data1','data2','format','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJob','fileText','TranscriptionJobStatus','COMPLETED','[RECORDING:%d]\x20Get\x20transcript','TranscriptFileUri','results','transcripts','length','transcript','update','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','tempSentiment','Sequelize','ValidationError','Sentiment\x20Analysis\x20not\x20requested','sentiment','sentimentAccountId','language','Transcript\x20not\x20available','CloudProvider','findOne','then','Cloud\x20Provider\x20not\x20available','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','sentimentRegion','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Sentiment','SentimentScore','Positive','Negative','Mixed','Neutral','FAILED','FailureReason','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','bucket','Sentiment\x20Analysis\x20not\x20configured','catch','name','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','inspect','VoiceRecording','findAll','IN_PROGRESS','No\x20transcribe\x20job\x20to\x20check','Setting','transcribe','transcribeAccountId','transcribeRegion','Transcribe\x20not\x20configured','forEach','push','all','SequelizeValidationError','error','lodash'];(function(_0x3cea78,_0x4a6751){var _0x33b66b=function(_0x1f45cd){while(--_0x1f45cd){_0x3cea78['push'](_0x3cea78['shift']());}};_0x33b66b(++_0x4a6751);}(_0x1bd1,0x123));var _0x11bd=function(_0x4e902c,_0x259800){_0x4e902c=_0x4e902c-0x0;var _0x42dc51=_0x1bd1[_0x4e902c];return _0x42dc51;};var _=require(_0x11bd('0x0'));var AWS=require(_0x11bd('0x1'));var rp=require(_0x11bd('0x2'));var util=require('util');var BPromise=require(_0x11bd('0x3'));var db=require('../../mysqldb')['db'];var logger=require('../../config/logger')('transcribe');function getTranscriptionJob(_0x4b0b4b,_0x1f41c3,_0x31869a,_0x336fd5){return new Promise(function(_0x612ff3,_0x57c032){var _0x336255=new AWS[(_0x11bd('0x4'))]({'accessKeyId':_0x1f41c3,'secretAccessKey':_0x4b0b4b,'region':_0x31869a});_0x336255[_0x11bd('0x5')]({'TranscriptionJobName':_0x336fd5},function(_0x3940cf,_0x361ecf){if(_0x3940cf){return _0x57c032(_0x3940cf);}else{return _0x612ff3(_0x361ecf);}});});}function sentiment(_0x4e514c,_0x1d4cf4,_0x553727,_0x4b3471,_0x8f6603){return new Promise(function(_0x3790a0,_0x1b1916){var _0x25f6f7=new AWS[(_0x11bd('0x6'))]({'accessKeyId':_0x1d4cf4,'secretAccessKey':_0x4e514c,'region':_0x553727});_0x25f6f7[_0x11bd('0x7')]({'Text':_0x4b3471,'LanguageCode':_0x8f6603[_0x11bd('0x8')](0x0,0x2)},function(_0x4868fb,_0x4a4226){if(_0x4868fb){return _0x1b1916(_0x4868fb);}else{return _0x3790a0(_0x4a4226);}});});}function checkTranscribeJob(_0x87842a,_0x1afe14,_0x2ceee2){var _0x39b6b9;return new BPromise(function(_0x3d146b,_0x16a0b2){logger[_0x11bd('0x9')](util['format']('[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)',_0x87842a['id'],_0x87842a[_0x11bd('0xa')]));return getTranscriptionJob(_0x2ceee2[_0x11bd('0xb')],_0x2ceee2[_0x11bd('0xc')],_0x1afe14['transcribeRegion'],_0x87842a[_0x11bd('0xa')])['then'](function(_0x59978e){logger[_0x11bd('0x9')](util[_0x11bd('0xd')](_0x11bd('0xe'),_0x87842a['id'],_0x87842a[_0x11bd('0xa')],_0x59978e[_0x11bd('0xf')]['TranscriptionJobStatus']));if(!_0x87842a[_0x11bd('0x10')]){switch(_0x59978e[_0x11bd('0xf')][_0x11bd('0x11')]){case _0x11bd('0x12'):var _0x7ee9b6={'transcribeStatus':_0x59978e[_0x11bd('0xf')][_0x11bd('0x11')],'fileUri':_0x59978e[_0x11bd('0xf')]['Transcript']['TranscriptFileUri']};logger[_0x11bd('0x9')](util[_0x11bd('0xd')](_0x11bd('0x13'),_0x87842a['id']));return rp({'uri':_0x59978e[_0x11bd('0xf')]['Transcript'][_0x11bd('0x14')],'json':!![]})['then'](function(_0x232f11){logger[_0x11bd('0x9')](util[_0x11bd('0xd')]('[RECORDING:%d]\x20Transcript\x20downloaded',_0x87842a['id']));if(_0x232f11&&_0x232f11[_0x11bd('0x15')]&&_0x232f11[_0x11bd('0x15')][_0x11bd('0x16')]&&_0x232f11[_0x11bd('0x15')][_0x11bd('0x16')][_0x11bd('0x17')]){_0x7ee9b6[_0x11bd('0x10')]='';for(var _0x2ac9f0=0x0;_0x2ac9f0<_0x232f11[_0x11bd('0x15')][_0x11bd('0x16')][_0x11bd('0x17')];_0x2ac9f0++){_0x7ee9b6[_0x11bd('0x10')]+=_0x232f11['results'][_0x11bd('0x16')][_0x2ac9f0][_0x11bd('0x18')]+'';}}return _0x87842a[_0x11bd('0x19')](_0x7ee9b6);})['then'](function(){logger['info'](util['format'](_0x11bd('0x1a'),_0x87842a['id']));if(!_0x87842a[_0x11bd('0x1b')]){throw new db[(_0x11bd('0x1c'))][(_0x11bd('0x1d'))](_0x11bd('0x1e'));}if(!_0x1afe14[_0x11bd('0x1f')]||!_0x1afe14[_0x11bd('0x20')]||!_0x1afe14['sentimentRegion']||!_0x1afe14[_0x11bd('0x21')]||!_0x1afe14['bucket']){throw new db[(_0x11bd('0x1c'))][(_0x11bd('0x1d'))]('Sentiment\x20Analysis\x20not\x20configured');}if(!_0x7ee9b6[_0x11bd('0x10')]){throw new Error(_0x11bd('0x22'));}if(_0x1afe14[_0x11bd('0x20')]===_0x2ceee2['id']){return _0x2ceee2;}else{return db[_0x11bd('0x23')][_0x11bd('0x24')]({'where':{'id':_settings[_0x11bd('0x20')]}});}})[_0x11bd('0x25')](function(_0x3c1e45){if(!_0x3c1e45){throw new db['Sequelize'][(_0x11bd('0x1d'))](_0x11bd('0x26'));}if(!_0x3c1e45[_0x11bd('0xb')]||!_0x3c1e45[_0x11bd('0xc')]){throw new db[(_0x11bd('0x1c'))][(_0x11bd('0x1d'))](_0x11bd('0x27'));}_0x39b6b9=_0x3c1e45;logger[_0x11bd('0x9')](util[_0x11bd('0xd')](_0x11bd('0x28'),_0x87842a['id']));return sentiment(_0x39b6b9['data1'],_0x39b6b9[_0x11bd('0xc')],_0x1afe14[_0x11bd('0x29')],_0x7ee9b6['fileText'],_0x1afe14[_0x11bd('0x21')]);})[_0x11bd('0x25')](function(_0x4768fc){logger[_0x11bd('0x9')](util['format'](_0x11bd('0x2a'),_0x87842a['id']));return _0x87842a['update']({'sentiment':_0x4768fc[_0x11bd('0x2b')],'sPositive':_0x4768fc[_0x11bd('0x2c')][_0x11bd('0x2d')],'sNegative':_0x4768fc[_0x11bd('0x2c')][_0x11bd('0x2e')],'sMixed':_0x4768fc[_0x11bd('0x2c')][_0x11bd('0x2f')],'sNeutral':_0x4768fc[_0x11bd('0x2c')][_0x11bd('0x30')]});})[_0x11bd('0x25')](function(){logger[_0x11bd('0x9')](util[_0x11bd('0xd')](_0x11bd('0x1a'),_0x87842a['id']));_0x3d146b();});case _0x11bd('0x31'):return _0x87842a['update']({'transcribeStatus':'FAILED','failureReason':_0x59978e['TranscriptionJob'][_0x11bd('0x32')]})[_0x11bd('0x25')](function(){logger['info'](util[_0x11bd('0xd')](_0x11bd('0x1a'),_0x87842a['id']));_0x3d146b();});default:logger[_0x11bd('0x9')](util['format'](_0x11bd('0x33'),_0x87842a['id']));break;}}else{return BPromise[_0x11bd('0x34')]()[_0x11bd('0x25')](function(){if(!_0x87842a[_0x11bd('0x1b')]){throw new db[(_0x11bd('0x1c'))][(_0x11bd('0x1d'))]('Sentiment\x20Analysis\x20not\x20requested');}if(!_0x1afe14[_0x11bd('0x1f')]||!_0x1afe14['sentimentAccountId']||!_0x1afe14[_0x11bd('0x29')]||!_0x1afe14['language']||!_0x1afe14[_0x11bd('0x35')]){throw new db[(_0x11bd('0x1c'))][(_0x11bd('0x1d'))](_0x11bd('0x36'));}if(!_0x87842a[_0x11bd('0x10')]){throw new Error(_0x11bd('0x22'));}if(_0x1afe14[_0x11bd('0x20')]===_0x2ceee2['id']){return _0x2ceee2;}else{return db['CloudProvider']['findOne']({'where':{'id':_settings[_0x11bd('0x20')]}});}})[_0x11bd('0x25')](function(_0x5ab52f){if(!_0x5ab52f){throw new db[(_0x11bd('0x1c'))]['ValidationError'](_0x11bd('0x26'));}if(!_0x5ab52f[_0x11bd('0xb')]||!_0x5ab52f[_0x11bd('0xc')]){throw new db[(_0x11bd('0x1c'))][(_0x11bd('0x1d'))](_0x11bd('0x27'));}_0x39b6b9=_0x5ab52f;logger['info'](util[_0x11bd('0xd')](_0x11bd('0x28'),_0x87842a['id']));return sentiment(_0x39b6b9[_0x11bd('0xb')],_0x39b6b9[_0x11bd('0xc')],_0x1afe14[_0x11bd('0x29')],_0x87842a['fileText'],_0x1afe14[_0x11bd('0x21')]);})['then'](function(_0x1ee1cd){logger[_0x11bd('0x9')](util[_0x11bd('0xd')]('[RECORDING:%d]\x20Sentiment\x20Analysis\x20available',_0x87842a['id']));return _0x87842a[_0x11bd('0x19')]({'sentiment':_0x1ee1cd[_0x11bd('0x2b')],'sPositive':_0x1ee1cd[_0x11bd('0x2c')][_0x11bd('0x2d')],'sNegative':_0x1ee1cd['SentimentScore'][_0x11bd('0x2e')],'sMixed':_0x1ee1cd[_0x11bd('0x2c')][_0x11bd('0x2f')],'sNeutral':_0x1ee1cd[_0x11bd('0x2c')][_0x11bd('0x30')],'transcribeStatus':_0x11bd('0x12')});})[_0x11bd('0x25')](function(){logger[_0x11bd('0x9')](util[_0x11bd('0xd')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x87842a['id']));_0x3d146b();});}})[_0x11bd('0x37')](function(_0x13c991){if(_0x13c991){if(!_0x13c991['name']||_0x13c991[_0x11bd('0x38')]!=='SequelizeValidationError'){logger['error'](util['format'](_0x11bd('0x39'),_0x87842a['id']),util[_0x11bd('0x3a')](_0x13c991,{'showHidden':![],'depth':null}));}}_0x3d146b();});});}function checkTranscribe(){var _0xf1a37;var _0x29e129;var _0x4725a3;return db[_0x11bd('0x3b')][_0x11bd('0x3c')]({'where':{'transcribeStatus':_0x11bd('0x3d')}})['then'](function(_0x51b47a){if(!_0x51b47a||!_0x51b47a[_0x11bd('0x17')]){throw new db[(_0x11bd('0x1c'))][(_0x11bd('0x1d'))](_0x11bd('0x3e'));}_0xf1a37=_0x51b47a;return db[_0x11bd('0x3f')][_0x11bd('0x24')]({'where':{'id':0x1}});})['then'](function(_0x31099c){if(!_0x31099c){throw new db[(_0x11bd('0x1c'))][(_0x11bd('0x1d'))]('Settings\x20not\x20available');}_0x29e129=_0x31099c;if(!_0x29e129[_0x11bd('0x40')]||!_0x29e129[_0x11bd('0x41')]||!_0x29e129[_0x11bd('0x42')]||!_0x29e129[_0x11bd('0x21')]||!_0x29e129[_0x11bd('0x35')]){throw new db[(_0x11bd('0x1c'))][(_0x11bd('0x1d'))](_0x11bd('0x43'));}return db[_0x11bd('0x23')][_0x11bd('0x24')]({'where':{'id':_0x29e129[_0x11bd('0x41')]}});})[_0x11bd('0x25')](function(_0x32fc2a){if(!_0x32fc2a){throw new db['Sequelize'][(_0x11bd('0x1d'))](_0x11bd('0x26'));}if(!_0x32fc2a[_0x11bd('0xb')]||!_0x32fc2a['data2']){throw new db[(_0x11bd('0x1c'))][(_0x11bd('0x1d'))](_0x11bd('0x27'));}_0x4725a3=_0x32fc2a;var _0x53e77a=[];_0xf1a37[_0x11bd('0x44')](function(_0x2f7304){_0x53e77a[_0x11bd('0x45')](checkTranscribeJob(_0x2f7304,_0x29e129,_0x4725a3));});return BPromise[_0x11bd('0x46')](_0x53e77a);})[_0x11bd('0x37')](function(_0x2d5a60){if(_0x2d5a60){if(!_0x2d5a60[_0x11bd('0x38')]||_0x2d5a60[_0x11bd('0x38')]!==_0x11bd('0x47')){logger[_0x11bd('0x48')](util[_0x11bd('0x3a')](_0x2d5a60,{'showHidden':![],'depth':null}));}}});}exports['start']=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};