c8679b72fb8151e227ff35651f5f6dcfcb6b0470
[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 _0xddb8=['request-promise','util','../../mysqldb','../../config/logger','transcribe','Comprehend','detectSentiment','info','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeName','data1','data2','transcribeRegion','then','format','TranscriptionJob','TranscriptionJobStatus','COMPLETED','Transcript','TranscriptFileUri','[RECORDING:%d]\x20Get\x20transcript','results','length','transcripts','fileText','update','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','Sequelize','Sentiment\x20Analysis\x20not\x20requested','sentimentRegion','language','bucket','ValidationError','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available','sentimentAccountId','findOne','Cloud\x20Provider\x20not\x20available','Cloud\x20Provider\x20not\x20configured','SentimentScore','Positive','Negative','Mixed','Neutral','FAILED','FailureReason','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','tempSentiment','sentiment','CloudProvider','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Sentiment','catch','name','SequelizeValidationError','error','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','inspect','findAll','IN_PROGRESS','No\x20transcribe\x20job\x20to\x20check','Setting','Settings\x20not\x20available','transcribeAccountId','Transcribe\x20not\x20configured','forEach','push','all','start','aws-sdk'];(function(_0x1e8eea,_0x2452fb){var _0x225263=function(_0x47393d){while(--_0x47393d){_0x1e8eea['push'](_0x1e8eea['shift']());}};_0x225263(++_0x2452fb);}(_0xddb8,0xd7));var _0x8ddb=function(_0x49f8a7,_0x2f06fa){_0x49f8a7=_0x49f8a7-0x0;var _0x551496=_0xddb8[_0x49f8a7];return _0x551496;};var _=require('lodash');var AWS=require(_0x8ddb('0x0'));var rp=require(_0x8ddb('0x1'));var util=require(_0x8ddb('0x2'));var BPromise=require('bluebird');var db=require(_0x8ddb('0x3'))['db'];var logger=require(_0x8ddb('0x4'))(_0x8ddb('0x5'));function getTranscriptionJob(_0xb61e9,_0x173cb3,_0x110046,_0x505f57){return new Promise(function(_0x5a52ec,_0x2ebc4b){var _0x1dcf86=new AWS['TranscribeService']({'accessKeyId':_0x173cb3,'secretAccessKey':_0xb61e9,'region':_0x110046});_0x1dcf86['getTranscriptionJob']({'TranscriptionJobName':_0x505f57},function(_0x27b901,_0x2af85c){if(_0x27b901){return _0x2ebc4b(_0x27b901);}else{return _0x5a52ec(_0x2af85c);}});});}function sentiment(_0x729998,_0x49b77e,_0x459f24,_0x21d488,_0x24d7af){return new Promise(function(_0x20ab58,_0x258ac4){var _0x53173f=new AWS[(_0x8ddb('0x6'))]({'accessKeyId':_0x49b77e,'secretAccessKey':_0x729998,'region':_0x459f24});_0x53173f[_0x8ddb('0x7')]({'Text':_0x21d488,'LanguageCode':_0x24d7af['substring'](0x0,0x2)},function(_0x2d743d,_0x14e699){if(_0x2d743d){return _0x258ac4(_0x2d743d);}else{return _0x20ab58(_0x14e699);}});});}function checkTranscribeJob(_0x36498f,_0x8f1670,_0x3f2832){var _0x2376a5;return new BPromise(function(_0xf567ca,_0x37277e){logger[_0x8ddb('0x8')](util['format'](_0x8ddb('0x9'),_0x36498f['id'],_0x36498f[_0x8ddb('0xa')]));return getTranscriptionJob(_0x3f2832[_0x8ddb('0xb')],_0x3f2832[_0x8ddb('0xc')],_0x8f1670[_0x8ddb('0xd')],_0x36498f[_0x8ddb('0xa')])[_0x8ddb('0xe')](function(_0x799e41){logger['info'](util[_0x8ddb('0xf')]('[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s',_0x36498f['id'],_0x36498f[_0x8ddb('0xa')],_0x799e41[_0x8ddb('0x10')][_0x8ddb('0x11')]));if(!_0x36498f['fileText']){switch(_0x799e41[_0x8ddb('0x10')][_0x8ddb('0x11')]){case _0x8ddb('0x12'):var _0x26cee6={'transcribeStatus':_0x799e41[_0x8ddb('0x10')][_0x8ddb('0x11')],'fileUri':_0x799e41[_0x8ddb('0x10')][_0x8ddb('0x13')][_0x8ddb('0x14')]};logger[_0x8ddb('0x8')](util['format'](_0x8ddb('0x15'),_0x36498f['id']));return rp({'uri':_0x799e41[_0x8ddb('0x10')][_0x8ddb('0x13')][_0x8ddb('0x14')],'json':!![]})['then'](function(_0x42b978){logger[_0x8ddb('0x8')](util['format']('[RECORDING:%d]\x20Transcript\x20downloaded',_0x36498f['id']));if(_0x42b978&&_0x42b978[_0x8ddb('0x16')]&&_0x42b978[_0x8ddb('0x16')]['transcripts']&&_0x42b978[_0x8ddb('0x16')]['transcripts'][_0x8ddb('0x17')]){_0x26cee6['fileText']='';for(var _0x53b199=0x0;_0x53b199<_0x42b978['results'][_0x8ddb('0x18')][_0x8ddb('0x17')];_0x53b199++){_0x26cee6[_0x8ddb('0x19')]+=_0x42b978[_0x8ddb('0x16')][_0x8ddb('0x18')][_0x53b199]['transcript']+'';}}return _0x36498f[_0x8ddb('0x1a')](_0x26cee6);})[_0x8ddb('0xe')](function(){logger[_0x8ddb('0x8')](util[_0x8ddb('0xf')](_0x8ddb('0x1b'),_0x36498f['id']));if(!_0x36498f['tempSentiment']){throw new db[(_0x8ddb('0x1c'))]['ValidationError'](_0x8ddb('0x1d'));}if(!_0x8f1670['sentiment']||!_0x8f1670['sentimentAccountId']||!_0x8f1670[_0x8ddb('0x1e')]||!_0x8f1670[_0x8ddb('0x1f')]||!_0x8f1670[_0x8ddb('0x20')]){throw new db[(_0x8ddb('0x1c'))][(_0x8ddb('0x21'))](_0x8ddb('0x22'));}if(!_0x26cee6[_0x8ddb('0x19')]){throw new Error(_0x8ddb('0x23'));}if(_0x8f1670[_0x8ddb('0x24')]===_0x3f2832['id']){return _0x3f2832;}else{return db['CloudProvider'][_0x8ddb('0x25')]({'where':{'id':_settings[_0x8ddb('0x24')]}});}})['then'](function(_0x46f47a){if(!_0x46f47a){throw new db[(_0x8ddb('0x1c'))][(_0x8ddb('0x21'))](_0x8ddb('0x26'));}if(!_0x46f47a[_0x8ddb('0xb')]||!_0x46f47a[_0x8ddb('0xc')]){throw new db['Sequelize'][(_0x8ddb('0x21'))](_0x8ddb('0x27'));}_0x2376a5=_0x46f47a;logger['info'](util[_0x8ddb('0xf')]('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0x36498f['id']));return sentiment(_0x2376a5['data1'],_0x2376a5[_0x8ddb('0xc')],_0x8f1670['sentimentRegion'],_0x26cee6['fileText'],_0x8f1670[_0x8ddb('0x1f')]);})['then'](function(_0x4a1772){logger[_0x8ddb('0x8')](util[_0x8ddb('0xf')]('[RECORDING:%d]\x20Sentiment\x20Analysis\x20available',_0x36498f['id']));return _0x36498f[_0x8ddb('0x1a')]({'sentiment':_0x4a1772['Sentiment'],'sPositive':_0x4a1772[_0x8ddb('0x28')][_0x8ddb('0x29')],'sNegative':_0x4a1772['SentimentScore'][_0x8ddb('0x2a')],'sMixed':_0x4a1772['SentimentScore'][_0x8ddb('0x2b')],'sNeutral':_0x4a1772[_0x8ddb('0x28')][_0x8ddb('0x2c')]});})[_0x8ddb('0xe')](function(){logger[_0x8ddb('0x8')](util[_0x8ddb('0xf')](_0x8ddb('0x1b'),_0x36498f['id']));_0xf567ca();});case _0x8ddb('0x2d'):return _0x36498f['update']({'transcribeStatus':_0x8ddb('0x2d'),'failureReason':_0x799e41[_0x8ddb('0x10')][_0x8ddb('0x2e')]})[_0x8ddb('0xe')](function(){logger[_0x8ddb('0x8')](util['format']('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x36498f['id']));_0xf567ca();});default:logger[_0x8ddb('0x8')](util['format'](_0x8ddb('0x2f'),_0x36498f['id']));break;}}else{return BPromise[_0x8ddb('0x30')]()[_0x8ddb('0xe')](function(){if(!_0x36498f[_0x8ddb('0x31')]){throw new db[(_0x8ddb('0x1c'))][(_0x8ddb('0x21'))](_0x8ddb('0x1d'));}if(!_0x8f1670[_0x8ddb('0x32')]||!_0x8f1670[_0x8ddb('0x24')]||!_0x8f1670['sentimentRegion']||!_0x8f1670[_0x8ddb('0x1f')]||!_0x8f1670[_0x8ddb('0x20')]){throw new db['Sequelize'][(_0x8ddb('0x21'))](_0x8ddb('0x22'));}if(!_0x36498f[_0x8ddb('0x19')]){throw new Error(_0x8ddb('0x23'));}if(_0x8f1670[_0x8ddb('0x24')]===_0x3f2832['id']){return _0x3f2832;}else{return db[_0x8ddb('0x33')][_0x8ddb('0x25')]({'where':{'id':_settings[_0x8ddb('0x24')]}});}})[_0x8ddb('0xe')](function(_0x502f63){if(!_0x502f63){throw new db[(_0x8ddb('0x1c'))]['ValidationError'](_0x8ddb('0x26'));}if(!_0x502f63['data1']||!_0x502f63[_0x8ddb('0xc')]){throw new db['Sequelize'][(_0x8ddb('0x21'))]('Cloud\x20Provider\x20not\x20configured');}_0x2376a5=_0x502f63;logger[_0x8ddb('0x8')](util[_0x8ddb('0xf')](_0x8ddb('0x34'),_0x36498f['id']));return sentiment(_0x2376a5[_0x8ddb('0xb')],_0x2376a5['data2'],_0x8f1670[_0x8ddb('0x1e')],_0x36498f[_0x8ddb('0x19')],_0x8f1670['language']);})['then'](function(_0x234ade){logger[_0x8ddb('0x8')](util[_0x8ddb('0xf')](_0x8ddb('0x35'),_0x36498f['id']));return _0x36498f[_0x8ddb('0x1a')]({'sentiment':_0x234ade[_0x8ddb('0x36')],'sPositive':_0x234ade[_0x8ddb('0x28')][_0x8ddb('0x29')],'sNegative':_0x234ade[_0x8ddb('0x28')][_0x8ddb('0x2a')],'sMixed':_0x234ade[_0x8ddb('0x28')][_0x8ddb('0x2b')],'sNeutral':_0x234ade[_0x8ddb('0x28')][_0x8ddb('0x2c')],'transcribeStatus':_0x8ddb('0x12')});})[_0x8ddb('0xe')](function(){logger[_0x8ddb('0x8')](util[_0x8ddb('0xf')](_0x8ddb('0x1b'),_0x36498f['id']));_0xf567ca();});}})[_0x8ddb('0x37')](function(_0x50a68e){if(_0x50a68e){if(!_0x50a68e[_0x8ddb('0x38')]||_0x50a68e[_0x8ddb('0x38')]!==_0x8ddb('0x39')){logger[_0x8ddb('0x3a')](util[_0x8ddb('0xf')](_0x8ddb('0x3b'),_0x36498f['id']),util[_0x8ddb('0x3c')](_0x50a68e,{'showHidden':![],'depth':null}));}}_0xf567ca();});});}function checkTranscribe(){var _0x5dd670;var _0xd619b6;var _0x2d6e6c;return db['VoiceRecording'][_0x8ddb('0x3d')]({'where':{'transcribeStatus':_0x8ddb('0x3e')}})[_0x8ddb('0xe')](function(_0x174b87){if(!_0x174b87||!_0x174b87['length']){throw new db[(_0x8ddb('0x1c'))]['ValidationError'](_0x8ddb('0x3f'));}_0x5dd670=_0x174b87;return db[_0x8ddb('0x40')][_0x8ddb('0x25')]({'where':{'id':0x1}});})[_0x8ddb('0xe')](function(_0x451b4b){if(!_0x451b4b){throw new db[(_0x8ddb('0x1c'))][(_0x8ddb('0x21'))](_0x8ddb('0x41'));}_0xd619b6=_0x451b4b;if(!_0xd619b6[_0x8ddb('0x5')]||!_0xd619b6[_0x8ddb('0x42')]||!_0xd619b6[_0x8ddb('0xd')]||!_0xd619b6[_0x8ddb('0x1f')]||!_0xd619b6['bucket']){throw new db[(_0x8ddb('0x1c'))]['ValidationError'](_0x8ddb('0x43'));}return db[_0x8ddb('0x33')][_0x8ddb('0x25')]({'where':{'id':_0xd619b6[_0x8ddb('0x42')]}});})[_0x8ddb('0xe')](function(_0x5bb8c6){if(!_0x5bb8c6){throw new db['Sequelize'][(_0x8ddb('0x21'))](_0x8ddb('0x26'));}if(!_0x5bb8c6['data1']||!_0x5bb8c6['data2']){throw new db[(_0x8ddb('0x1c'))][(_0x8ddb('0x21'))]('Cloud\x20Provider\x20not\x20configured');}_0x2d6e6c=_0x5bb8c6;var _0x26b448=[];_0x5dd670[_0x8ddb('0x44')](function(_0x9ae800){_0x26b448[_0x8ddb('0x45')](checkTranscribeJob(_0x9ae800,_0xd619b6,_0x2d6e6c));});return BPromise[_0x8ddb('0x46')](_0x26b448);})[_0x8ddb('0x37')](function(_0x4220b5){if(_0x4220b5){if(!_0x4220b5[_0x8ddb('0x38')]||_0x4220b5['name']!==_0x8ddb('0x39')){logger[_0x8ddb('0x3a')](util[_0x8ddb('0x3c')](_0x4220b5,{'showHidden':![],'depth':null}));}}});}exports[_0x8ddb('0x47')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};