56994db6aa135961765d205ebb65d9a7b43d9ea1
[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 _0x3264=['TranscriptionJobStatus','COMPLETED','Transcript','TranscriptFileUri','[RECORDING:%d]\x20Get\x20transcript','info','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','transcript','update','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','tempSentiment','ValidationError','sentiment','sentimentAccountId','language','bucket','Sequelize','CloudProvider','findOne','Cloud\x20Provider\x20not\x20available','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','sentimentRegion','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Sentiment','SentimentScore','Negative','Mixed','Neutral','FAILED','FailureReason','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available','Positive','catch','name','SequelizeValidationError','error','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','inspect','VoiceRecording','findAll','IN_PROGRESS','No\x20transcribe\x20job\x20to\x20check','transcribeAccountId','transcribeRegion','Transcribe\x20not\x20configured','forEach','push','all','start','aws-sdk','request-promise','util','bluebird','transcribe','TranscribeService','getTranscriptionJob','Comprehend','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeName','data1','data2','then','format','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJob','fileText'];(function(_0x952fa,_0x11d816){var _0x3f4301=function(_0x298668){while(--_0x298668){_0x952fa['push'](_0x952fa['shift']());}};_0x3f4301(++_0x11d816);}(_0x3264,0x7f));var _0x4326=function(_0x543084,_0x4337f5){_0x543084=_0x543084-0x0;var _0x306a57=_0x3264[_0x543084];return _0x306a57;};var _=require('lodash');var AWS=require(_0x4326('0x0'));var rp=require(_0x4326('0x1'));var util=require(_0x4326('0x2'));var BPromise=require(_0x4326('0x3'));var db=require('../../mysqldb')['db'];var logger=require('../../config/logger')(_0x4326('0x4'));function getTranscriptionJob(_0x510181,_0x5555ac,_0x27ff99,_0x34ce4f){return new Promise(function(_0xed0465,_0x3f8d4e){var _0x56bcce=new AWS[(_0x4326('0x5'))]({'accessKeyId':_0x5555ac,'secretAccessKey':_0x510181,'region':_0x27ff99});_0x56bcce[_0x4326('0x6')]({'TranscriptionJobName':_0x34ce4f},function(_0x22071c,_0x129365){if(_0x22071c){return _0x3f8d4e(_0x22071c);}else{return _0xed0465(_0x129365);}});});}function sentiment(_0x7a4796,_0x2b3f1e,_0x1609f,_0x5cde0b,_0x58bade){return new Promise(function(_0x51323a,_0x97d63e){var _0x9daa3f=new AWS[(_0x4326('0x7'))]({'accessKeyId':_0x2b3f1e,'secretAccessKey':_0x7a4796,'region':_0x1609f});_0x9daa3f['detectSentiment']({'Text':_0x5cde0b,'LanguageCode':_0x58bade['substring'](0x0,0x2)},function(_0x1bc3ff,_0x4d6d36){if(_0x1bc3ff){return _0x97d63e(_0x1bc3ff);}else{return _0x51323a(_0x4d6d36);}});});}function checkTranscribeJob(_0xd45b39,_0x2893f1,_0x3515af){var _0x4f8f3d;return new BPromise(function(_0x5f17ac,_0x1087d9){logger['info'](util['format'](_0x4326('0x8'),_0xd45b39['id'],_0xd45b39[_0x4326('0x9')]));return getTranscriptionJob(_0x3515af[_0x4326('0xa')],_0x3515af[_0x4326('0xb')],_0x2893f1['transcribeRegion'],_0xd45b39[_0x4326('0x9')])[_0x4326('0xc')](function(_0x33112f){logger['info'](util[_0x4326('0xd')](_0x4326('0xe'),_0xd45b39['id'],_0xd45b39[_0x4326('0x9')],_0x33112f[_0x4326('0xf')]['TranscriptionJobStatus']));if(!_0xd45b39[_0x4326('0x10')]){switch(_0x33112f['TranscriptionJob'][_0x4326('0x11')]){case _0x4326('0x12'):var _0x35f24b={'transcribeStatus':_0x33112f[_0x4326('0xf')][_0x4326('0x11')],'fileUri':_0x33112f['TranscriptionJob'][_0x4326('0x13')][_0x4326('0x14')]};logger['info'](util[_0x4326('0xd')](_0x4326('0x15'),_0xd45b39['id']));return rp({'uri':_0x33112f[_0x4326('0xf')]['Transcript'][_0x4326('0x14')],'json':!![]})[_0x4326('0xc')](function(_0xde8632){logger[_0x4326('0x16')](util[_0x4326('0xd')](_0x4326('0x17'),_0xd45b39['id']));if(_0xde8632&&_0xde8632[_0x4326('0x18')]&&_0xde8632[_0x4326('0x18')]['transcripts']&&_0xde8632[_0x4326('0x18')][_0x4326('0x19')]['length']){_0x35f24b[_0x4326('0x10')]='';for(var _0x3d5e8f=0x0;_0x3d5e8f<_0xde8632[_0x4326('0x18')][_0x4326('0x19')][_0x4326('0x1a')];_0x3d5e8f++){_0x35f24b['fileText']+=_0xde8632['results'][_0x4326('0x19')][_0x3d5e8f][_0x4326('0x1b')]+'';}}return _0xd45b39[_0x4326('0x1c')](_0x35f24b);})[_0x4326('0xc')](function(){logger['info'](util[_0x4326('0xd')](_0x4326('0x1d'),_0xd45b39['id']));if(!_0xd45b39[_0x4326('0x1e')]){throw new db['Sequelize'][(_0x4326('0x1f'))]('Sentiment\x20Analysis\x20not\x20requested');}if(!_0x2893f1[_0x4326('0x20')]||!_0x2893f1[_0x4326('0x21')]||!_0x2893f1['sentimentRegion']||!_0x2893f1[_0x4326('0x22')]||!_0x2893f1[_0x4326('0x23')]){throw new db[(_0x4326('0x24'))][(_0x4326('0x1f'))]('Sentiment\x20Analysis\x20not\x20configured');}if(!_0x35f24b['fileText']){throw new Error('Transcript\x20not\x20available');}if(_0x2893f1[_0x4326('0x21')]===_0x3515af['id']){return _0x3515af;}else{return db[_0x4326('0x25')][_0x4326('0x26')]({'where':{'id':_settings[_0x4326('0x21')]}});}})[_0x4326('0xc')](function(_0x2d0d14){if(!_0x2d0d14){throw new db[(_0x4326('0x24'))][(_0x4326('0x1f'))](_0x4326('0x27'));}if(!_0x2d0d14[_0x4326('0xa')]||!_0x2d0d14['data2']){throw new db[(_0x4326('0x24'))][(_0x4326('0x1f'))](_0x4326('0x28'));}_0x4f8f3d=_0x2d0d14;logger[_0x4326('0x16')](util['format'](_0x4326('0x29'),_0xd45b39['id']));return sentiment(_0x4f8f3d[_0x4326('0xa')],_0x4f8f3d[_0x4326('0xb')],_0x2893f1[_0x4326('0x2a')],_0x35f24b[_0x4326('0x10')],_0x2893f1[_0x4326('0x22')]);})['then'](function(_0x40c1a0){logger[_0x4326('0x16')](util[_0x4326('0xd')](_0x4326('0x2b'),_0xd45b39['id']));return _0xd45b39[_0x4326('0x1c')]({'sentiment':_0x40c1a0[_0x4326('0x2c')],'sPositive':_0x40c1a0[_0x4326('0x2d')]['Positive'],'sNegative':_0x40c1a0['SentimentScore'][_0x4326('0x2e')],'sMixed':_0x40c1a0['SentimentScore'][_0x4326('0x2f')],'sNeutral':_0x40c1a0[_0x4326('0x2d')][_0x4326('0x30')]});})[_0x4326('0xc')](function(){logger['info'](util['format'](_0x4326('0x1d'),_0xd45b39['id']));_0x5f17ac();});case _0x4326('0x31'):return _0xd45b39['update']({'transcribeStatus':_0x4326('0x31'),'failureReason':_0x33112f[_0x4326('0xf')][_0x4326('0x32')]})[_0x4326('0xc')](function(){logger[_0x4326('0x16')](util[_0x4326('0xd')](_0x4326('0x1d'),_0xd45b39['id']));_0x5f17ac();});default:logger[_0x4326('0x16')](util[_0x4326('0xd')](_0x4326('0x33'),_0xd45b39['id']));break;}}else{return BPromise['resolve']()['then'](function(){if(!_0xd45b39['tempSentiment']){throw new db[(_0x4326('0x24'))][(_0x4326('0x1f'))]('Sentiment\x20Analysis\x20not\x20requested');}if(!_0x2893f1[_0x4326('0x20')]||!_0x2893f1[_0x4326('0x21')]||!_0x2893f1[_0x4326('0x2a')]||!_0x2893f1[_0x4326('0x22')]||!_0x2893f1[_0x4326('0x23')]){throw new db['Sequelize'][(_0x4326('0x1f'))](_0x4326('0x34'));}if(!_0xd45b39[_0x4326('0x10')]){throw new Error(_0x4326('0x35'));}if(_0x2893f1[_0x4326('0x21')]===_0x3515af['id']){return _0x3515af;}else{return db[_0x4326('0x25')][_0x4326('0x26')]({'where':{'id':_settings[_0x4326('0x21')]}});}})[_0x4326('0xc')](function(_0x52d0d1){if(!_0x52d0d1){throw new db[(_0x4326('0x24'))][(_0x4326('0x1f'))](_0x4326('0x27'));}if(!_0x52d0d1['data1']||!_0x52d0d1[_0x4326('0xb')]){throw new db['Sequelize'][(_0x4326('0x1f'))](_0x4326('0x28'));}_0x4f8f3d=_0x52d0d1;logger[_0x4326('0x16')](util['format']('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0xd45b39['id']));return sentiment(_0x4f8f3d[_0x4326('0xa')],_0x4f8f3d[_0x4326('0xb')],_0x2893f1[_0x4326('0x2a')],_0xd45b39['fileText'],_0x2893f1[_0x4326('0x22')]);})[_0x4326('0xc')](function(_0x140651){logger[_0x4326('0x16')](util[_0x4326('0xd')](_0x4326('0x2b'),_0xd45b39['id']));return _0xd45b39[_0x4326('0x1c')]({'sentiment':_0x140651['Sentiment'],'sPositive':_0x140651[_0x4326('0x2d')][_0x4326('0x36')],'sNegative':_0x140651[_0x4326('0x2d')][_0x4326('0x2e')],'sMixed':_0x140651['SentimentScore']['Mixed'],'sNeutral':_0x140651[_0x4326('0x2d')][_0x4326('0x30')],'transcribeStatus':'COMPLETED'});})[_0x4326('0xc')](function(){logger[_0x4326('0x16')](util[_0x4326('0xd')](_0x4326('0x1d'),_0xd45b39['id']));_0x5f17ac();});}})[_0x4326('0x37')](function(_0x5d5983){if(_0x5d5983){if(!_0x5d5983['name']||_0x5d5983[_0x4326('0x38')]!==_0x4326('0x39')){logger[_0x4326('0x3a')](util[_0x4326('0xd')](_0x4326('0x3b'),_0xd45b39['id']),util[_0x4326('0x3c')](_0x5d5983,{'showHidden':![],'depth':null}));}}_0x5f17ac();});});}function checkTranscribe(){var _0x42cfac;var _0x491d3f;var _0x20796e;return db[_0x4326('0x3d')][_0x4326('0x3e')]({'where':{'transcribeStatus':_0x4326('0x3f')}})[_0x4326('0xc')](function(_0x487c7f){if(!_0x487c7f||!_0x487c7f['length']){throw new db[(_0x4326('0x24'))][(_0x4326('0x1f'))](_0x4326('0x40'));}_0x42cfac=_0x487c7f;return db['Setting'][_0x4326('0x26')]({'where':{'id':0x1}});})[_0x4326('0xc')](function(_0x264744){if(!_0x264744){throw new db[(_0x4326('0x24'))][(_0x4326('0x1f'))]('Settings\x20not\x20available');}_0x491d3f=_0x264744;if(!_0x491d3f[_0x4326('0x4')]||!_0x491d3f[_0x4326('0x41')]||!_0x491d3f[_0x4326('0x42')]||!_0x491d3f[_0x4326('0x22')]||!_0x491d3f['bucket']){throw new db['Sequelize'][(_0x4326('0x1f'))](_0x4326('0x43'));}return db['CloudProvider'][_0x4326('0x26')]({'where':{'id':_0x491d3f[_0x4326('0x41')]}});})['then'](function(_0x234f18){if(!_0x234f18){throw new db[(_0x4326('0x24'))][(_0x4326('0x1f'))](_0x4326('0x27'));}if(!_0x234f18['data1']||!_0x234f18[_0x4326('0xb')]){throw new db['Sequelize'][(_0x4326('0x1f'))](_0x4326('0x28'));}_0x20796e=_0x234f18;var _0x48c7ce=[];_0x42cfac[_0x4326('0x44')](function(_0x59a0be){_0x48c7ce[_0x4326('0x45')](checkTranscribeJob(_0x59a0be,_0x491d3f,_0x20796e));});return BPromise[_0x4326('0x46')](_0x48c7ce);})['catch'](function(_0x10c890){if(_0x10c890){if(!_0x10c890['name']||_0x10c890[_0x4326('0x38')]!==_0x4326('0x39')){logger[_0x4326('0x3a')](util[_0x4326('0x3c')](_0x10c890,{'showHidden':![],'depth':null}));}}});}exports[_0x4326('0x47')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};