83e65cf465569b6ac51e7ed1bcf02a31d36afbc5
[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 _0x74d1=['transcripts','length','transcript','update','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','tempSentiment','ValidationError','Sentiment\x20Analysis\x20not\x20requested','sentiment','sentimentAccountId','sentimentRegion','language','bucket','Sentiment\x20Analysis\x20not\x20configured','CloudProvider','findOne','Cloud\x20Provider\x20not\x20available','Sequelize','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','data1','data2','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','SentimentScore','Positive','Negative','Mixed','Neutral','FAILED','FailureReason','Transcript\x20not\x20available','Sentiment','catch','name','SequelizeValidationError','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','inspect','VoiceRecording','findAll','No\x20transcribe\x20job\x20to\x20check','Setting','Settings\x20not\x20available','transcribe','transcribeAccountId','Transcribe\x20not\x20configured','push','all','error','start','lodash','aws-sdk','request-promise','bluebird','../../config/logger','TranscribeService','getTranscriptionJob','Comprehend','detectSentiment','substring','format','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeName','transcribeRegion','then','info','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJobStatus','fileText','TranscriptionJob','COMPLETED','TranscriptFileUri','[RECORDING:%d]\x20Get\x20transcript','Transcript','results'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x74d1,0x1a3));var _0x174d=function(_0x5bbbf5,_0x2aee67){_0x5bbbf5=_0x5bbbf5-0x0;var _0x11f761=_0x74d1[_0x5bbbf5];return _0x11f761;};var _=require(_0x174d('0x0'));var AWS=require(_0x174d('0x1'));var rp=require(_0x174d('0x2'));var util=require('util');var BPromise=require(_0x174d('0x3'));var db=require('../../mysqldb')['db'];var logger=require(_0x174d('0x4'))('transcribe');function getTranscriptionJob(_0x4e2ef6,_0x63cb3e,_0x2ed6d3,_0x40a94c){return new Promise(function(_0x2a40cf,_0x22253e){var _0x413556=new AWS[(_0x174d('0x5'))]({'accessKeyId':_0x63cb3e,'secretAccessKey':_0x4e2ef6,'region':_0x2ed6d3});_0x413556[_0x174d('0x6')]({'TranscriptionJobName':_0x40a94c},function(_0x6010a6,_0x1929dd){if(_0x6010a6){return _0x22253e(_0x6010a6);}else{return _0x2a40cf(_0x1929dd);}});});}function sentiment(_0x1a5856,_0x404a6c,_0x31678b,_0xf9ad8a,_0x499b08){return new Promise(function(_0x5db3ff,_0x3ebf18){var _0x400602=new AWS[(_0x174d('0x7'))]({'accessKeyId':_0x404a6c,'secretAccessKey':_0x1a5856,'region':_0x31678b});_0x400602[_0x174d('0x8')]({'Text':_0xf9ad8a,'LanguageCode':_0x499b08[_0x174d('0x9')](0x0,0x2)},function(_0x5e5e6c,_0x43e57a){if(_0x5e5e6c){return _0x3ebf18(_0x5e5e6c);}else{return _0x5db3ff(_0x43e57a);}});});}function checkTranscribeJob(_0x52d98b,_0x5ca7b9,_0x1d748e){var _0x12ea26;return new BPromise(function(_0x4225a0,_0x3819f2){logger['info'](util[_0x174d('0xa')](_0x174d('0xb'),_0x52d98b['id'],_0x52d98b[_0x174d('0xc')]));return getTranscriptionJob(_0x1d748e['data1'],_0x1d748e['data2'],_0x5ca7b9[_0x174d('0xd')],_0x52d98b[_0x174d('0xc')])[_0x174d('0xe')](function(_0x583441){logger[_0x174d('0xf')](util['format'](_0x174d('0x10'),_0x52d98b['id'],_0x52d98b[_0x174d('0xc')],_0x583441['TranscriptionJob'][_0x174d('0x11')]));if(!_0x52d98b[_0x174d('0x12')]){switch(_0x583441[_0x174d('0x13')][_0x174d('0x11')]){case _0x174d('0x14'):var _0x453ab8={'transcribeStatus':_0x583441[_0x174d('0x13')][_0x174d('0x11')],'fileUri':_0x583441[_0x174d('0x13')]['Transcript'][_0x174d('0x15')]};logger['info'](util[_0x174d('0xa')](_0x174d('0x16'),_0x52d98b['id']));return rp({'uri':_0x583441[_0x174d('0x13')][_0x174d('0x17')][_0x174d('0x15')],'json':!![]})[_0x174d('0xe')](function(_0x34d958){logger[_0x174d('0xf')](util[_0x174d('0xa')]('[RECORDING:%d]\x20Transcript\x20downloaded',_0x52d98b['id']));if(_0x34d958&&_0x34d958[_0x174d('0x18')]&&_0x34d958[_0x174d('0x18')]['transcripts']&&_0x34d958[_0x174d('0x18')][_0x174d('0x19')][_0x174d('0x1a')]){_0x453ab8['fileText']='';for(var _0xb3b1cf=0x0;_0xb3b1cf<_0x34d958[_0x174d('0x18')][_0x174d('0x19')][_0x174d('0x1a')];_0xb3b1cf++){_0x453ab8[_0x174d('0x12')]+=_0x34d958['results'][_0x174d('0x19')][_0xb3b1cf][_0x174d('0x1b')]+'';}}return _0x52d98b[_0x174d('0x1c')](_0x453ab8);})['then'](function(){logger[_0x174d('0xf')](util[_0x174d('0xa')](_0x174d('0x1d'),_0x52d98b['id']));if(!_0x52d98b[_0x174d('0x1e')]){throw new db['Sequelize'][(_0x174d('0x1f'))](_0x174d('0x20'));}if(!_0x5ca7b9[_0x174d('0x21')]||!_0x5ca7b9[_0x174d('0x22')]||!_0x5ca7b9[_0x174d('0x23')]||!_0x5ca7b9[_0x174d('0x24')]||!_0x5ca7b9[_0x174d('0x25')]){throw new db['Sequelize']['ValidationError'](_0x174d('0x26'));}if(!_0x453ab8['fileText']){throw new Error('Transcript\x20not\x20available');}if(_0x5ca7b9[_0x174d('0x22')]===_0x1d748e['id']){return _0x1d748e;}else{return db[_0x174d('0x27')][_0x174d('0x28')]({'where':{'id':_settings['sentimentAccountId']}});}})['then'](function(_0x4c8f5a){if(!_0x4c8f5a){throw new db['Sequelize'][(_0x174d('0x1f'))](_0x174d('0x29'));}if(!_0x4c8f5a['data1']||!_0x4c8f5a['data2']){throw new db[(_0x174d('0x2a'))][(_0x174d('0x1f'))](_0x174d('0x2b'));}_0x12ea26=_0x4c8f5a;logger[_0x174d('0xf')](util[_0x174d('0xa')](_0x174d('0x2c'),_0x52d98b['id']));return sentiment(_0x12ea26[_0x174d('0x2d')],_0x12ea26[_0x174d('0x2e')],_0x5ca7b9['sentimentRegion'],_0x453ab8[_0x174d('0x12')],_0x5ca7b9[_0x174d('0x24')]);})[_0x174d('0xe')](function(_0x116f60){logger['info'](util[_0x174d('0xa')](_0x174d('0x2f'),_0x52d98b['id']));return _0x52d98b[_0x174d('0x1c')]({'sentiment':_0x116f60['Sentiment'],'sPositive':_0x116f60[_0x174d('0x30')][_0x174d('0x31')],'sNegative':_0x116f60[_0x174d('0x30')][_0x174d('0x32')],'sMixed':_0x116f60[_0x174d('0x30')][_0x174d('0x33')],'sNeutral':_0x116f60[_0x174d('0x30')][_0x174d('0x34')]});})[_0x174d('0xe')](function(){logger[_0x174d('0xf')](util['format'](_0x174d('0x1d'),_0x52d98b['id']));_0x4225a0();});case _0x174d('0x35'):return _0x52d98b['update']({'transcribeStatus':_0x174d('0x35'),'failureReason':_0x583441['TranscriptionJob'][_0x174d('0x36')]})['then'](function(){logger[_0x174d('0xf')](util['format'](_0x174d('0x1d'),_0x52d98b['id']));_0x4225a0();});default:logger[_0x174d('0xf')](util[_0x174d('0xa')]('[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed',_0x52d98b['id']));break;}}else{return BPromise['resolve']()['then'](function(){if(!_0x52d98b[_0x174d('0x1e')]){throw new db[(_0x174d('0x2a'))][(_0x174d('0x1f'))](_0x174d('0x20'));}if(!_0x5ca7b9[_0x174d('0x21')]||!_0x5ca7b9[_0x174d('0x22')]||!_0x5ca7b9[_0x174d('0x23')]||!_0x5ca7b9[_0x174d('0x24')]||!_0x5ca7b9[_0x174d('0x25')]){throw new db[(_0x174d('0x2a'))]['ValidationError'](_0x174d('0x26'));}if(!_0x52d98b[_0x174d('0x12')]){throw new Error(_0x174d('0x37'));}if(_0x5ca7b9[_0x174d('0x22')]===_0x1d748e['id']){return _0x1d748e;}else{return db[_0x174d('0x27')][_0x174d('0x28')]({'where':{'id':_settings['sentimentAccountId']}});}})['then'](function(_0x1a0abc){if(!_0x1a0abc){throw new db[(_0x174d('0x2a'))][(_0x174d('0x1f'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x1a0abc[_0x174d('0x2d')]||!_0x1a0abc[_0x174d('0x2e')]){throw new db['Sequelize'][(_0x174d('0x1f'))](_0x174d('0x2b'));}_0x12ea26=_0x1a0abc;logger[_0x174d('0xf')](util[_0x174d('0xa')](_0x174d('0x2c'),_0x52d98b['id']));return sentiment(_0x12ea26['data1'],_0x12ea26[_0x174d('0x2e')],_0x5ca7b9['sentimentRegion'],_0x52d98b[_0x174d('0x12')],_0x5ca7b9[_0x174d('0x24')]);})['then'](function(_0x287aad){logger['info'](util['format'](_0x174d('0x2f'),_0x52d98b['id']));return _0x52d98b[_0x174d('0x1c')]({'sentiment':_0x287aad[_0x174d('0x38')],'sPositive':_0x287aad[_0x174d('0x30')][_0x174d('0x31')],'sNegative':_0x287aad[_0x174d('0x30')]['Negative'],'sMixed':_0x287aad[_0x174d('0x30')][_0x174d('0x33')],'sNeutral':_0x287aad[_0x174d('0x30')][_0x174d('0x34')],'transcribeStatus':'COMPLETED'});})['then'](function(){logger[_0x174d('0xf')](util[_0x174d('0xa')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x52d98b['id']));_0x4225a0();});}})[_0x174d('0x39')](function(_0x35e2dd){if(_0x35e2dd){if(!_0x35e2dd[_0x174d('0x3a')]||_0x35e2dd[_0x174d('0x3a')]!==_0x174d('0x3b')){logger['error'](util[_0x174d('0xa')](_0x174d('0x3c'),_0x52d98b['id']),util[_0x174d('0x3d')](_0x35e2dd,{'showHidden':![],'depth':null}));}}_0x4225a0();});});}function checkTranscribe(){var _0x3239b4;var _0x1051cc;var _0x30a2ef;return db[_0x174d('0x3e')][_0x174d('0x3f')]({'where':{'transcribeStatus':'IN_PROGRESS'}})[_0x174d('0xe')](function(_0x57a48c){if(!_0x57a48c||!_0x57a48c[_0x174d('0x1a')]){throw new db['Sequelize'][(_0x174d('0x1f'))](_0x174d('0x40'));}_0x3239b4=_0x57a48c;return db[_0x174d('0x41')][_0x174d('0x28')]({'where':{'id':0x1}});})[_0x174d('0xe')](function(_0x51859d){if(!_0x51859d){throw new db[(_0x174d('0x2a'))][(_0x174d('0x1f'))](_0x174d('0x42'));}_0x1051cc=_0x51859d;if(!_0x1051cc[_0x174d('0x43')]||!_0x1051cc[_0x174d('0x44')]||!_0x1051cc[_0x174d('0xd')]||!_0x1051cc['language']||!_0x1051cc['bucket']){throw new db['Sequelize'][(_0x174d('0x1f'))](_0x174d('0x45'));}return db[_0x174d('0x27')][_0x174d('0x28')]({'where':{'id':_0x1051cc['transcribeAccountId']}});})[_0x174d('0xe')](function(_0x3f32d1){if(!_0x3f32d1){throw new db[(_0x174d('0x2a'))]['ValidationError'](_0x174d('0x29'));}if(!_0x3f32d1[_0x174d('0x2d')]||!_0x3f32d1[_0x174d('0x2e')]){throw new db[(_0x174d('0x2a'))][(_0x174d('0x1f'))](_0x174d('0x2b'));}_0x30a2ef=_0x3f32d1;var _0x405c5d=[];_0x3239b4['forEach'](function(_0x59bf46){_0x405c5d[_0x174d('0x46')](checkTranscribeJob(_0x59bf46,_0x1051cc,_0x30a2ef));});return BPromise[_0x174d('0x47')](_0x405c5d);})['catch'](function(_0x41697b){if(_0x41697b){if(!_0x41697b[_0x174d('0x3a')]||_0x41697b[_0x174d('0x3a')]!==_0x174d('0x3b')){logger[_0x174d('0x48')](util[_0x174d('0x3d')](_0x41697b,{'showHidden':![],'depth':null}));}}});}exports[_0x174d('0x49')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};