f88fd3a91fde2edaa0562d26ea82bb3d010a15ef
[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 _0xb8d1=['TranscriptFileUri','[RECORDING:%d]\x20Get\x20transcript','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','tempSentiment','Sequelize','Sentiment\x20Analysis\x20not\x20requested','sentiment','sentimentAccountId','sentimentRegion','language','bucket','ValidationError','Transcript\x20not\x20available','CloudProvider','Cloud\x20Provider\x20not\x20available','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','update','Sentiment','Positive','SentimentScore','Negative','Mixed','Neutral','FailureReason','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','Sentiment\x20Analysis\x20not\x20configured','findOne','Cloud\x20Provider\x20not\x20configured','catch','SequelizeValidationError','error','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','inspect','VoiceRecording','findAll','IN_PROGRESS','length','No\x20transcribe\x20job\x20to\x20check','Setting','transcribe','transcribeAccountId','Transcribe\x20not\x20configured','forEach','name','lodash','aws-sdk','util','../../mysqldb','../../config/logger','getTranscriptionJob','info','format','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','data1','data2','transcribeRegion','transcribeName','then','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJob','TranscriptionJobStatus','fileText','COMPLETED','Transcript'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0xb8d1,0xbb));var _0x1b8d=function(_0x10a904,_0x2bf292){_0x10a904=_0x10a904-0x0;var _0x53815a=_0xb8d1[_0x10a904];return _0x53815a;};var _=require(_0x1b8d('0x0'));var AWS=require(_0x1b8d('0x1'));var rp=require('request-promise');var util=require(_0x1b8d('0x2'));var BPromise=require('bluebird');var db=require(_0x1b8d('0x3'))['db'];var logger=require(_0x1b8d('0x4'))('transcribe');function getTranscriptionJob(_0x40c1e3,_0x1491dc,_0x3cfced,_0x150f4b){return new Promise(function(_0x17965b,_0x581d3f){var _0x4a2175=new AWS['TranscribeService']({'accessKeyId':_0x1491dc,'secretAccessKey':_0x40c1e3,'region':_0x3cfced});_0x4a2175[_0x1b8d('0x5')]({'TranscriptionJobName':_0x150f4b},function(_0x25947a,_0x3e757e){if(_0x25947a){return _0x581d3f(_0x25947a);}else{return _0x17965b(_0x3e757e);}});});}function sentiment(_0xb48296,_0x3e8b02,_0x592be9,_0x44869b,_0x1b716b){return new Promise(function(_0x1bb023,_0x77ce35){var _0x3aa4d0=new AWS['Comprehend']({'accessKeyId':_0x3e8b02,'secretAccessKey':_0xb48296,'region':_0x592be9});_0x3aa4d0['detectSentiment']({'Text':_0x44869b,'LanguageCode':_0x1b716b['substring'](0x0,0x2)},function(_0x322e72,_0x5ac4a6){if(_0x322e72){return _0x77ce35(_0x322e72);}else{return _0x1bb023(_0x5ac4a6);}});});}function checkTranscribeJob(_0x21fab1,_0x3124af,_0x270bc0){var _0x155fc3;return new BPromise(function(_0x3beee2,_0x467330){logger[_0x1b8d('0x6')](util[_0x1b8d('0x7')](_0x1b8d('0x8'),_0x21fab1['id'],_0x21fab1['transcribeName']));return getTranscriptionJob(_0x270bc0[_0x1b8d('0x9')],_0x270bc0[_0x1b8d('0xa')],_0x3124af[_0x1b8d('0xb')],_0x21fab1[_0x1b8d('0xc')])[_0x1b8d('0xd')](function(_0x4aa247){logger[_0x1b8d('0x6')](util[_0x1b8d('0x7')](_0x1b8d('0xe'),_0x21fab1['id'],_0x21fab1['transcribeName'],_0x4aa247[_0x1b8d('0xf')][_0x1b8d('0x10')]));if(!_0x21fab1[_0x1b8d('0x11')]){switch(_0x4aa247[_0x1b8d('0xf')][_0x1b8d('0x10')]){case _0x1b8d('0x12'):var _0x5ebc15={'transcribeStatus':_0x4aa247[_0x1b8d('0xf')][_0x1b8d('0x10')],'fileUri':_0x4aa247['TranscriptionJob'][_0x1b8d('0x13')][_0x1b8d('0x14')]};logger['info'](util['format'](_0x1b8d('0x15'),_0x21fab1['id']));return rp({'uri':_0x4aa247[_0x1b8d('0xf')][_0x1b8d('0x13')][_0x1b8d('0x14')],'json':!![]})[_0x1b8d('0xd')](function(_0x41817b){logger[_0x1b8d('0x6')](util['format'](_0x1b8d('0x16'),_0x21fab1['id']));if(_0x41817b&&_0x41817b['results']&&_0x41817b[_0x1b8d('0x17')]['transcripts']&&_0x41817b['results'][_0x1b8d('0x18')]['length']){_0x5ebc15[_0x1b8d('0x11')]='';for(var _0x26b9f0=0x0;_0x26b9f0<_0x41817b['results'][_0x1b8d('0x18')]['length'];_0x26b9f0++){_0x5ebc15[_0x1b8d('0x11')]+=_0x41817b[_0x1b8d('0x17')][_0x1b8d('0x18')][_0x26b9f0]['transcript']+'';}}return _0x21fab1['update'](_0x5ebc15);})[_0x1b8d('0xd')](function(){logger['info'](util['format'](_0x1b8d('0x19'),_0x21fab1['id']));if(!_0x21fab1[_0x1b8d('0x1a')]){throw new db[(_0x1b8d('0x1b'))]['ValidationError'](_0x1b8d('0x1c'));}if(!_0x3124af[_0x1b8d('0x1d')]||!_0x3124af[_0x1b8d('0x1e')]||!_0x3124af[_0x1b8d('0x1f')]||!_0x3124af[_0x1b8d('0x20')]||!_0x3124af[_0x1b8d('0x21')]){throw new db[(_0x1b8d('0x1b'))][(_0x1b8d('0x22'))]('Sentiment\x20Analysis\x20not\x20configured');}if(!_0x5ebc15[_0x1b8d('0x11')]){throw new Error(_0x1b8d('0x23'));}if(_0x3124af[_0x1b8d('0x1e')]===_0x270bc0['id']){return _0x270bc0;}else{return db[_0x1b8d('0x24')]['findOne']({'where':{'id':_settings[_0x1b8d('0x1e')]}});}})[_0x1b8d('0xd')](function(_0x215958){if(!_0x215958){throw new db[(_0x1b8d('0x1b'))]['ValidationError'](_0x1b8d('0x25'));}if(!_0x215958[_0x1b8d('0x9')]||!_0x215958[_0x1b8d('0xa')]){throw new db[(_0x1b8d('0x1b'))][(_0x1b8d('0x22'))]('Cloud\x20Provider\x20not\x20configured');}_0x155fc3=_0x215958;logger[_0x1b8d('0x6')](util[_0x1b8d('0x7')](_0x1b8d('0x26'),_0x21fab1['id']));return sentiment(_0x155fc3['data1'],_0x155fc3[_0x1b8d('0xa')],_0x3124af[_0x1b8d('0x1f')],_0x5ebc15[_0x1b8d('0x11')],_0x3124af['language']);})['then'](function(_0x20828e){logger['info'](util[_0x1b8d('0x7')](_0x1b8d('0x27'),_0x21fab1['id']));return _0x21fab1[_0x1b8d('0x28')]({'sentiment':_0x20828e[_0x1b8d('0x29')],'sPositive':_0x20828e['SentimentScore'][_0x1b8d('0x2a')],'sNegative':_0x20828e[_0x1b8d('0x2b')][_0x1b8d('0x2c')],'sMixed':_0x20828e[_0x1b8d('0x2b')][_0x1b8d('0x2d')],'sNeutral':_0x20828e[_0x1b8d('0x2b')][_0x1b8d('0x2e')]});})[_0x1b8d('0xd')](function(){logger[_0x1b8d('0x6')](util[_0x1b8d('0x7')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x21fab1['id']));_0x3beee2();});case'FAILED':return _0x21fab1['update']({'transcribeStatus':'FAILED','failureReason':_0x4aa247[_0x1b8d('0xf')][_0x1b8d('0x2f')]})[_0x1b8d('0xd')](function(){logger[_0x1b8d('0x6')](util[_0x1b8d('0x7')](_0x1b8d('0x19'),_0x21fab1['id']));_0x3beee2();});default:logger[_0x1b8d('0x6')](util[_0x1b8d('0x7')](_0x1b8d('0x30'),_0x21fab1['id']));break;}}else{return BPromise[_0x1b8d('0x31')]()[_0x1b8d('0xd')](function(){if(!_0x21fab1['tempSentiment']){throw new db[(_0x1b8d('0x1b'))]['ValidationError'](_0x1b8d('0x1c'));}if(!_0x3124af[_0x1b8d('0x1d')]||!_0x3124af[_0x1b8d('0x1e')]||!_0x3124af[_0x1b8d('0x1f')]||!_0x3124af[_0x1b8d('0x20')]||!_0x3124af['bucket']){throw new db[(_0x1b8d('0x1b'))]['ValidationError'](_0x1b8d('0x32'));}if(!_0x21fab1[_0x1b8d('0x11')]){throw new Error(_0x1b8d('0x23'));}if(_0x3124af[_0x1b8d('0x1e')]===_0x270bc0['id']){return _0x270bc0;}else{return db['CloudProvider'][_0x1b8d('0x33')]({'where':{'id':_settings[_0x1b8d('0x1e')]}});}})[_0x1b8d('0xd')](function(_0x23ed1e){if(!_0x23ed1e){throw new db[(_0x1b8d('0x1b'))][(_0x1b8d('0x22'))](_0x1b8d('0x25'));}if(!_0x23ed1e[_0x1b8d('0x9')]||!_0x23ed1e[_0x1b8d('0xa')]){throw new db[(_0x1b8d('0x1b'))]['ValidationError'](_0x1b8d('0x34'));}_0x155fc3=_0x23ed1e;logger[_0x1b8d('0x6')](util[_0x1b8d('0x7')](_0x1b8d('0x26'),_0x21fab1['id']));return sentiment(_0x155fc3[_0x1b8d('0x9')],_0x155fc3[_0x1b8d('0xa')],_0x3124af['sentimentRegion'],_0x21fab1[_0x1b8d('0x11')],_0x3124af[_0x1b8d('0x20')]);})['then'](function(_0x1ffe0b){logger[_0x1b8d('0x6')](util[_0x1b8d('0x7')](_0x1b8d('0x27'),_0x21fab1['id']));return _0x21fab1[_0x1b8d('0x28')]({'sentiment':_0x1ffe0b[_0x1b8d('0x29')],'sPositive':_0x1ffe0b[_0x1b8d('0x2b')][_0x1b8d('0x2a')],'sNegative':_0x1ffe0b[_0x1b8d('0x2b')][_0x1b8d('0x2c')],'sMixed':_0x1ffe0b[_0x1b8d('0x2b')][_0x1b8d('0x2d')],'sNeutral':_0x1ffe0b[_0x1b8d('0x2b')]['Neutral'],'transcribeStatus':_0x1b8d('0x12')});})[_0x1b8d('0xd')](function(){logger['info'](util['format'](_0x1b8d('0x19'),_0x21fab1['id']));_0x3beee2();});}})[_0x1b8d('0x35')](function(_0x24f575){if(_0x24f575){if(!_0x24f575['name']||_0x24f575['name']!==_0x1b8d('0x36')){logger[_0x1b8d('0x37')](util['format'](_0x1b8d('0x38'),_0x21fab1['id']),util[_0x1b8d('0x39')](_0x24f575,{'showHidden':![],'depth':null}));}}_0x3beee2();});});}function checkTranscribe(){var _0x328c17;var _0x4441da;var _0x1d51f1;return db[_0x1b8d('0x3a')][_0x1b8d('0x3b')]({'where':{'transcribeStatus':_0x1b8d('0x3c')}})['then'](function(_0x139cc7){if(!_0x139cc7||!_0x139cc7[_0x1b8d('0x3d')]){throw new db[(_0x1b8d('0x1b'))][(_0x1b8d('0x22'))](_0x1b8d('0x3e'));}_0x328c17=_0x139cc7;return db[_0x1b8d('0x3f')][_0x1b8d('0x33')]({'where':{'id':0x1}});})['then'](function(_0x27c59b){if(!_0x27c59b){throw new db[(_0x1b8d('0x1b'))]['ValidationError']('Settings\x20not\x20available');}_0x4441da=_0x27c59b;if(!_0x4441da[_0x1b8d('0x40')]||!_0x4441da[_0x1b8d('0x41')]||!_0x4441da[_0x1b8d('0xb')]||!_0x4441da['language']||!_0x4441da[_0x1b8d('0x21')]){throw new db[(_0x1b8d('0x1b'))]['ValidationError'](_0x1b8d('0x42'));}return db[_0x1b8d('0x24')][_0x1b8d('0x33')]({'where':{'id':_0x4441da['transcribeAccountId']}});})['then'](function(_0xbb5fb2){if(!_0xbb5fb2){throw new db[(_0x1b8d('0x1b'))][(_0x1b8d('0x22'))]('Cloud\x20Provider\x20not\x20available');}if(!_0xbb5fb2['data1']||!_0xbb5fb2[_0x1b8d('0xa')]){throw new db[(_0x1b8d('0x1b'))][(_0x1b8d('0x22'))](_0x1b8d('0x34'));}_0x1d51f1=_0xbb5fb2;var _0xe9d301=[];_0x328c17[_0x1b8d('0x43')](function(_0x196244){_0xe9d301['push'](checkTranscribeJob(_0x196244,_0x4441da,_0x1d51f1));});return BPromise['all'](_0xe9d301);})[_0x1b8d('0x35')](function(_0x5bb083){if(_0x5bb083){if(!_0x5bb083[_0x1b8d('0x44')]||_0x5bb083[_0x1b8d('0x44')]!==_0x1b8d('0x36')){logger[_0x1b8d('0x37')](util[_0x1b8d('0x39')](_0x5bb083,{'showHidden':![],'depth':null}));}}});}exports['start']=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};