4e57e5826d369f74766641abd7106d1cd1b050aa
[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 _0x6e10=['transcribeAccountId','Transcribe\x20not\x20configured','CloudProvider','forEach','push','all','lodash','request-promise','../../config/logger','transcribe','detectSentiment','substring','format','data1','data2','transcribeRegion','transcribeName','then','info','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJob','TranscriptionJobStatus','fileText','COMPLETED','TranscriptFileUri','[RECORDING:%d]\x20Get\x20transcript','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','transcript','update','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','tempSentiment','Sequelize','Sentiment\x20Analysis\x20not\x20requested','sentiment','sentimentRegion','bucket','ValidationError','sentimentAccountId','findOne','Cloud\x20Provider\x20not\x20available','Cloud\x20Provider\x20not\x20configured','language','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','SentimentScore','Positive','Negative','Mixed','Neutral','FAILED','FailureReason','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available','Sentiment','catch','name','SequelizeValidationError','error','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','inspect','findAll','IN_PROGRESS','No\x20transcribe\x20job\x20to\x20check'];(function(_0x209eda,_0x5776cf){var _0x1fe649=function(_0x3b5c46){while(--_0x3b5c46){_0x209eda['push'](_0x209eda['shift']());}};_0x1fe649(++_0x5776cf);}(_0x6e10,0x18c));var _0x06e1=function(_0x1102c8,_0x53723f){_0x1102c8=_0x1102c8-0x0;var _0x166cf8=_0x6e10[_0x1102c8];return _0x166cf8;};var _=require(_0x06e1('0x0'));var AWS=require('aws-sdk');var rp=require(_0x06e1('0x1'));var util=require('util');var BPromise=require('bluebird');var db=require('../../mysqldb')['db'];var logger=require(_0x06e1('0x2'))(_0x06e1('0x3'));function getTranscriptionJob(_0x4ad624,_0x2c545a,_0xefd823,_0x414402){return new Promise(function(_0x1b7bc0,_0x290416){var _0x5c9ba2=new AWS['TranscribeService']({'accessKeyId':_0x2c545a,'secretAccessKey':_0x4ad624,'region':_0xefd823});_0x5c9ba2['getTranscriptionJob']({'TranscriptionJobName':_0x414402},function(_0x461c0b,_0x4d076e){if(_0x461c0b){return _0x290416(_0x461c0b);}else{return _0x1b7bc0(_0x4d076e);}});});}function sentiment(_0x376eb7,_0x2550fc,_0x2d40ac,_0x291a19,_0x450907){return new Promise(function(_0x3d1c28,_0x141ad4){var _0x14cad3=new AWS['Comprehend']({'accessKeyId':_0x2550fc,'secretAccessKey':_0x376eb7,'region':_0x2d40ac});_0x14cad3[_0x06e1('0x4')]({'Text':_0x291a19,'LanguageCode':_0x450907[_0x06e1('0x5')](0x0,0x2)},function(_0xe72c8d,_0x35da37){if(_0xe72c8d){return _0x141ad4(_0xe72c8d);}else{return _0x3d1c28(_0x35da37);}});});}function checkTranscribeJob(_0xdf0d5c,_0x59b4aa,_0x2981dd){var _0x475d29;return new BPromise(function(_0x55e34e,_0x4d1ebb){logger['info'](util[_0x06e1('0x6')]('[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)',_0xdf0d5c['id'],_0xdf0d5c['transcribeName']));return getTranscriptionJob(_0x2981dd[_0x06e1('0x7')],_0x2981dd[_0x06e1('0x8')],_0x59b4aa[_0x06e1('0x9')],_0xdf0d5c[_0x06e1('0xa')])[_0x06e1('0xb')](function(_0x5268e2){logger[_0x06e1('0xc')](util['format'](_0x06e1('0xd'),_0xdf0d5c['id'],_0xdf0d5c[_0x06e1('0xa')],_0x5268e2[_0x06e1('0xe')][_0x06e1('0xf')]));if(!_0xdf0d5c[_0x06e1('0x10')]){switch(_0x5268e2[_0x06e1('0xe')][_0x06e1('0xf')]){case _0x06e1('0x11'):var _0x2394d6={'transcribeStatus':_0x5268e2['TranscriptionJob'][_0x06e1('0xf')],'fileUri':_0x5268e2[_0x06e1('0xe')]['Transcript'][_0x06e1('0x12')]};logger[_0x06e1('0xc')](util[_0x06e1('0x6')](_0x06e1('0x13'),_0xdf0d5c['id']));return rp({'uri':_0x5268e2['TranscriptionJob']['Transcript']['TranscriptFileUri'],'json':!![]})[_0x06e1('0xb')](function(_0x497abc){logger[_0x06e1('0xc')](util[_0x06e1('0x6')](_0x06e1('0x14'),_0xdf0d5c['id']));if(_0x497abc&&_0x497abc[_0x06e1('0x15')]&&_0x497abc[_0x06e1('0x15')][_0x06e1('0x16')]&&_0x497abc[_0x06e1('0x15')][_0x06e1('0x16')][_0x06e1('0x17')]){_0x2394d6['fileText']='';for(var _0xe65e7f=0x0;_0xe65e7f<_0x497abc[_0x06e1('0x15')][_0x06e1('0x16')][_0x06e1('0x17')];_0xe65e7f++){_0x2394d6[_0x06e1('0x10')]+=_0x497abc[_0x06e1('0x15')]['transcripts'][_0xe65e7f][_0x06e1('0x18')]+'';}}return _0xdf0d5c[_0x06e1('0x19')](_0x2394d6);})[_0x06e1('0xb')](function(){logger[_0x06e1('0xc')](util['format'](_0x06e1('0x1a'),_0xdf0d5c['id']));if(!_0xdf0d5c[_0x06e1('0x1b')]){throw new db[(_0x06e1('0x1c'))]['ValidationError'](_0x06e1('0x1d'));}if(!_0x59b4aa[_0x06e1('0x1e')]||!_0x59b4aa['sentimentAccountId']||!_0x59b4aa[_0x06e1('0x1f')]||!_0x59b4aa['language']||!_0x59b4aa[_0x06e1('0x20')]){throw new db[(_0x06e1('0x1c'))][(_0x06e1('0x21'))]('Sentiment\x20Analysis\x20not\x20configured');}if(!_0x2394d6[_0x06e1('0x10')]){throw new Error('Transcript\x20not\x20available');}if(_0x59b4aa[_0x06e1('0x22')]===_0x2981dd['id']){return _0x2981dd;}else{return db['CloudProvider'][_0x06e1('0x23')]({'where':{'id':_settings[_0x06e1('0x22')]}});}})[_0x06e1('0xb')](function(_0x3e400a){if(!_0x3e400a){throw new db[(_0x06e1('0x1c'))][(_0x06e1('0x21'))](_0x06e1('0x24'));}if(!_0x3e400a['data1']||!_0x3e400a['data2']){throw new db[(_0x06e1('0x1c'))][(_0x06e1('0x21'))](_0x06e1('0x25'));}_0x475d29=_0x3e400a;logger[_0x06e1('0xc')](util[_0x06e1('0x6')]('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0xdf0d5c['id']));return sentiment(_0x475d29[_0x06e1('0x7')],_0x475d29[_0x06e1('0x8')],_0x59b4aa[_0x06e1('0x1f')],_0x2394d6[_0x06e1('0x10')],_0x59b4aa[_0x06e1('0x26')]);})[_0x06e1('0xb')](function(_0x1fa828){logger[_0x06e1('0xc')](util[_0x06e1('0x6')](_0x06e1('0x27'),_0xdf0d5c['id']));return _0xdf0d5c[_0x06e1('0x19')]({'sentiment':_0x1fa828['Sentiment'],'sPositive':_0x1fa828[_0x06e1('0x28')][_0x06e1('0x29')],'sNegative':_0x1fa828[_0x06e1('0x28')][_0x06e1('0x2a')],'sMixed':_0x1fa828['SentimentScore'][_0x06e1('0x2b')],'sNeutral':_0x1fa828[_0x06e1('0x28')][_0x06e1('0x2c')]});})[_0x06e1('0xb')](function(){logger[_0x06e1('0xc')](util[_0x06e1('0x6')](_0x06e1('0x1a'),_0xdf0d5c['id']));_0x55e34e();});case'FAILED':return _0xdf0d5c['update']({'transcribeStatus':_0x06e1('0x2d'),'failureReason':_0x5268e2['TranscriptionJob'][_0x06e1('0x2e')]})[_0x06e1('0xb')](function(){logger[_0x06e1('0xc')](util[_0x06e1('0x6')](_0x06e1('0x1a'),_0xdf0d5c['id']));_0x55e34e();});default:logger[_0x06e1('0xc')](util[_0x06e1('0x6')]('[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed',_0xdf0d5c['id']));break;}}else{return BPromise['resolve']()[_0x06e1('0xb')](function(){if(!_0xdf0d5c['tempSentiment']){throw new db[(_0x06e1('0x1c'))]['ValidationError'](_0x06e1('0x1d'));}if(!_0x59b4aa[_0x06e1('0x1e')]||!_0x59b4aa[_0x06e1('0x22')]||!_0x59b4aa['sentimentRegion']||!_0x59b4aa[_0x06e1('0x26')]||!_0x59b4aa[_0x06e1('0x20')]){throw new db[(_0x06e1('0x1c'))][(_0x06e1('0x21'))](_0x06e1('0x2f'));}if(!_0xdf0d5c[_0x06e1('0x10')]){throw new Error(_0x06e1('0x30'));}if(_0x59b4aa[_0x06e1('0x22')]===_0x2981dd['id']){return _0x2981dd;}else{return db['CloudProvider']['findOne']({'where':{'id':_settings[_0x06e1('0x22')]}});}})['then'](function(_0x147e6c){if(!_0x147e6c){throw new db['Sequelize'][(_0x06e1('0x21'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x147e6c[_0x06e1('0x7')]||!_0x147e6c['data2']){throw new db[(_0x06e1('0x1c'))]['ValidationError'](_0x06e1('0x25'));}_0x475d29=_0x147e6c;logger['info'](util['format']('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0xdf0d5c['id']));return sentiment(_0x475d29[_0x06e1('0x7')],_0x475d29[_0x06e1('0x8')],_0x59b4aa[_0x06e1('0x1f')],_0xdf0d5c[_0x06e1('0x10')],_0x59b4aa['language']);})[_0x06e1('0xb')](function(_0x38905b){logger[_0x06e1('0xc')](util[_0x06e1('0x6')]('[RECORDING:%d]\x20Sentiment\x20Analysis\x20available',_0xdf0d5c['id']));return _0xdf0d5c[_0x06e1('0x19')]({'sentiment':_0x38905b[_0x06e1('0x31')],'sPositive':_0x38905b[_0x06e1('0x28')][_0x06e1('0x29')],'sNegative':_0x38905b[_0x06e1('0x28')]['Negative'],'sMixed':_0x38905b['SentimentScore']['Mixed'],'sNeutral':_0x38905b[_0x06e1('0x28')][_0x06e1('0x2c')],'transcribeStatus':'COMPLETED'});})[_0x06e1('0xb')](function(){logger[_0x06e1('0xc')](util[_0x06e1('0x6')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0xdf0d5c['id']));_0x55e34e();});}})[_0x06e1('0x32')](function(_0x2114de){if(_0x2114de){if(!_0x2114de[_0x06e1('0x33')]||_0x2114de[_0x06e1('0x33')]!==_0x06e1('0x34')){logger[_0x06e1('0x35')](util['format'](_0x06e1('0x36'),_0xdf0d5c['id']),util[_0x06e1('0x37')](_0x2114de,{'showHidden':![],'depth':null}));}}_0x55e34e();});});}function checkTranscribe(){var _0x29f2dd;var _0x295818;var _0x520408;return db['VoiceRecording'][_0x06e1('0x38')]({'where':{'transcribeStatus':_0x06e1('0x39')}})[_0x06e1('0xb')](function(_0x462cd0){if(!_0x462cd0||!_0x462cd0[_0x06e1('0x17')]){throw new db[(_0x06e1('0x1c'))][(_0x06e1('0x21'))](_0x06e1('0x3a'));}_0x29f2dd=_0x462cd0;return db['Setting'][_0x06e1('0x23')]({'where':{'id':0x1}});})[_0x06e1('0xb')](function(_0x11a256){if(!_0x11a256){throw new db[(_0x06e1('0x1c'))][(_0x06e1('0x21'))]('Settings\x20not\x20available');}_0x295818=_0x11a256;if(!_0x295818[_0x06e1('0x3')]||!_0x295818[_0x06e1('0x3b')]||!_0x295818[_0x06e1('0x9')]||!_0x295818[_0x06e1('0x26')]||!_0x295818[_0x06e1('0x20')]){throw new db[(_0x06e1('0x1c'))][(_0x06e1('0x21'))](_0x06e1('0x3c'));}return db[_0x06e1('0x3d')][_0x06e1('0x23')]({'where':{'id':_0x295818[_0x06e1('0x3b')]}});})[_0x06e1('0xb')](function(_0x38751a){if(!_0x38751a){throw new db[(_0x06e1('0x1c'))][(_0x06e1('0x21'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x38751a['data1']||!_0x38751a['data2']){throw new db['Sequelize'][(_0x06e1('0x21'))](_0x06e1('0x25'));}_0x520408=_0x38751a;var _0x2f97c1=[];_0x29f2dd[_0x06e1('0x3e')](function(_0x4a90ec){_0x2f97c1[_0x06e1('0x3f')](checkTranscribeJob(_0x4a90ec,_0x295818,_0x520408));});return BPromise[_0x06e1('0x40')](_0x2f97c1);})[_0x06e1('0x32')](function(_0x4a523b){if(_0x4a523b){if(!_0x4a523b[_0x06e1('0x33')]||_0x4a523b['name']!==_0x06e1('0x34')){logger[_0x06e1('0x35')](util[_0x06e1('0x37')](_0x4a523b,{'showHidden':![],'depth':null}));}}});}exports['start']=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};