4a6038ce928f9d2ef025114f956c616f8353c1f4
[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 _0x282b=['sentimentRegion','language','bucket','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available','CloudProvider','ValidationError','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','data2','Sentiment','SentimentScore','Positive','Negative','Mixed','Neutral','FailureReason','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','findOne','Cloud\x20Provider\x20not\x20available','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','COMPLETED','name','error','VoiceRecording','Setting','Settings\x20not\x20available','transcribeRegion','Transcribe\x20not\x20configured','all','catch','SequelizeValidationError','inspect','start','lodash','aws-sdk','request-promise','util','bluebird','transcribe','Comprehend','detectSentiment','substring','format','transcribeName','data1','then','info','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJob','TranscriptionJobStatus','fileText','Transcript','TranscriptFileUri','[RECORDING:%d]\x20Get\x20transcript','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','update','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','tempSentiment','Sequelize','Sentiment\x20Analysis\x20not\x20requested','sentiment','sentimentAccountId'];(function(_0x322e91,_0x2fb412){var _0x476877=function(_0x1ffac6){while(--_0x1ffac6){_0x322e91['push'](_0x322e91['shift']());}};_0x476877(++_0x2fb412);}(_0x282b,0xec));var _0xb282=function(_0x517221,_0x3027e7){_0x517221=_0x517221-0x0;var _0x43e191=_0x282b[_0x517221];return _0x43e191;};var _=require(_0xb282('0x0'));var AWS=require(_0xb282('0x1'));var rp=require(_0xb282('0x2'));var util=require(_0xb282('0x3'));var BPromise=require(_0xb282('0x4'));var db=require('../../mysqldb')['db'];var logger=require('../../config/logger')(_0xb282('0x5'));function getTranscriptionJob(_0x5cadd7,_0x3fbbaf,_0x175c83,_0x283325){return new Promise(function(_0x1dd19b,_0x3cad41){var _0x33635f=new AWS['TranscribeService']({'accessKeyId':_0x3fbbaf,'secretAccessKey':_0x5cadd7,'region':_0x175c83});_0x33635f['getTranscriptionJob']({'TranscriptionJobName':_0x283325},function(_0x17fba1,_0x436eaa){if(_0x17fba1){return _0x3cad41(_0x17fba1);}else{return _0x1dd19b(_0x436eaa);}});});}function sentiment(_0x4ef1c3,_0x2928cf,_0x20f517,_0x3435fc,_0x2d86ba){return new Promise(function(_0x56caf2,_0x47e62e){var _0x36b984=new AWS[(_0xb282('0x6'))]({'accessKeyId':_0x2928cf,'secretAccessKey':_0x4ef1c3,'region':_0x20f517});_0x36b984[_0xb282('0x7')]({'Text':_0x3435fc,'LanguageCode':_0x2d86ba[_0xb282('0x8')](0x0,0x2)},function(_0x8c4621,_0x5f1c71){if(_0x8c4621){return _0x47e62e(_0x8c4621);}else{return _0x56caf2(_0x5f1c71);}});});}function checkTranscribeJob(_0x5d52d2,_0x338bdb,_0xc08746){var _0x40d7b8;return new BPromise(function(_0x9e9072,_0x122372){logger['info'](util[_0xb282('0x9')]('[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)',_0x5d52d2['id'],_0x5d52d2[_0xb282('0xa')]));return getTranscriptionJob(_0xc08746[_0xb282('0xb')],_0xc08746['data2'],_0x338bdb['transcribeRegion'],_0x5d52d2['transcribeName'])[_0xb282('0xc')](function(_0x350676){logger[_0xb282('0xd')](util[_0xb282('0x9')](_0xb282('0xe'),_0x5d52d2['id'],_0x5d52d2['transcribeName'],_0x350676[_0xb282('0xf')][_0xb282('0x10')]));if(!_0x5d52d2[_0xb282('0x11')]){switch(_0x350676[_0xb282('0xf')][_0xb282('0x10')]){case'COMPLETED':var _0x52e305={'transcribeStatus':_0x350676[_0xb282('0xf')][_0xb282('0x10')],'fileUri':_0x350676['TranscriptionJob'][_0xb282('0x12')][_0xb282('0x13')]};logger[_0xb282('0xd')](util[_0xb282('0x9')](_0xb282('0x14'),_0x5d52d2['id']));return rp({'uri':_0x350676['TranscriptionJob'][_0xb282('0x12')][_0xb282('0x13')],'json':!![]})[_0xb282('0xc')](function(_0x4b79d7){logger[_0xb282('0xd')](util[_0xb282('0x9')](_0xb282('0x15'),_0x5d52d2['id']));if(_0x4b79d7&&_0x4b79d7[_0xb282('0x16')]&&_0x4b79d7[_0xb282('0x16')]['transcripts']&&_0x4b79d7['results'][_0xb282('0x17')][_0xb282('0x18')]){_0x52e305['fileText']='';for(var _0x5e828e=0x0;_0x5e828e<_0x4b79d7[_0xb282('0x16')][_0xb282('0x17')][_0xb282('0x18')];_0x5e828e++){_0x52e305[_0xb282('0x11')]+=_0x4b79d7[_0xb282('0x16')][_0xb282('0x17')][_0x5e828e]['transcript']+'';}}return _0x5d52d2[_0xb282('0x19')](_0x52e305);})[_0xb282('0xc')](function(){logger['info'](util[_0xb282('0x9')](_0xb282('0x1a'),_0x5d52d2['id']));if(!_0x5d52d2[_0xb282('0x1b')]){throw new db[(_0xb282('0x1c'))]['ValidationError'](_0xb282('0x1d'));}if(!_0x338bdb[_0xb282('0x1e')]||!_0x338bdb[_0xb282('0x1f')]||!_0x338bdb[_0xb282('0x20')]||!_0x338bdb[_0xb282('0x21')]||!_0x338bdb[_0xb282('0x22')]){throw new db[(_0xb282('0x1c'))]['ValidationError'](_0xb282('0x23'));}if(!_0x52e305[_0xb282('0x11')]){throw new Error(_0xb282('0x24'));}if(_0x338bdb[_0xb282('0x1f')]===_0xc08746['id']){return _0xc08746;}else{return db[_0xb282('0x25')]['findOne']({'where':{'id':_settings[_0xb282('0x1f')]}});}})['then'](function(_0x4b7660){if(!_0x4b7660){throw new db[(_0xb282('0x1c'))][(_0xb282('0x26'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x4b7660[_0xb282('0xb')]||!_0x4b7660['data2']){throw new db[(_0xb282('0x1c'))][(_0xb282('0x26'))](_0xb282('0x27'));}_0x40d7b8=_0x4b7660;logger[_0xb282('0xd')](util[_0xb282('0x9')](_0xb282('0x28'),_0x5d52d2['id']));return sentiment(_0x40d7b8['data1'],_0x40d7b8[_0xb282('0x29')],_0x338bdb[_0xb282('0x20')],_0x52e305['fileText'],_0x338bdb['language']);})[_0xb282('0xc')](function(_0x271643){logger[_0xb282('0xd')](util['format']('[RECORDING:%d]\x20Sentiment\x20Analysis\x20available',_0x5d52d2['id']));return _0x5d52d2['update']({'sentiment':_0x271643[_0xb282('0x2a')],'sPositive':_0x271643[_0xb282('0x2b')][_0xb282('0x2c')],'sNegative':_0x271643[_0xb282('0x2b')][_0xb282('0x2d')],'sMixed':_0x271643[_0xb282('0x2b')][_0xb282('0x2e')],'sNeutral':_0x271643['SentimentScore'][_0xb282('0x2f')]});})['then'](function(){logger[_0xb282('0xd')](util[_0xb282('0x9')](_0xb282('0x1a'),_0x5d52d2['id']));_0x9e9072();});case'FAILED':return _0x5d52d2[_0xb282('0x19')]({'transcribeStatus':'FAILED','failureReason':_0x350676[_0xb282('0xf')][_0xb282('0x30')]})[_0xb282('0xc')](function(){logger[_0xb282('0xd')](util['format']('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x5d52d2['id']));_0x9e9072();});default:logger[_0xb282('0xd')](util[_0xb282('0x9')](_0xb282('0x31'),_0x5d52d2['id']));break;}}else{return BPromise[_0xb282('0x32')]()['then'](function(){if(!_0x5d52d2[_0xb282('0x1b')]){throw new db['Sequelize'][(_0xb282('0x26'))](_0xb282('0x1d'));}if(!_0x338bdb['sentiment']||!_0x338bdb[_0xb282('0x1f')]||!_0x338bdb[_0xb282('0x20')]||!_0x338bdb[_0xb282('0x21')]||!_0x338bdb[_0xb282('0x22')]){throw new db[(_0xb282('0x1c'))][(_0xb282('0x26'))](_0xb282('0x23'));}if(!_0x5d52d2[_0xb282('0x11')]){throw new Error(_0xb282('0x24'));}if(_0x338bdb[_0xb282('0x1f')]===_0xc08746['id']){return _0xc08746;}else{return db[_0xb282('0x25')][_0xb282('0x33')]({'where':{'id':_settings[_0xb282('0x1f')]}});}})[_0xb282('0xc')](function(_0x309441){if(!_0x309441){throw new db[(_0xb282('0x1c'))][(_0xb282('0x26'))](_0xb282('0x34'));}if(!_0x309441['data1']||!_0x309441[_0xb282('0x29')]){throw new db['Sequelize'][(_0xb282('0x26'))](_0xb282('0x27'));}_0x40d7b8=_0x309441;logger[_0xb282('0xd')](util[_0xb282('0x9')](_0xb282('0x28'),_0x5d52d2['id']));return sentiment(_0x40d7b8[_0xb282('0xb')],_0x40d7b8['data2'],_0x338bdb['sentimentRegion'],_0x5d52d2[_0xb282('0x11')],_0x338bdb['language']);})[_0xb282('0xc')](function(_0x273c3e){logger['info'](util[_0xb282('0x9')](_0xb282('0x35'),_0x5d52d2['id']));return _0x5d52d2[_0xb282('0x19')]({'sentiment':_0x273c3e['Sentiment'],'sPositive':_0x273c3e['SentimentScore'][_0xb282('0x2c')],'sNegative':_0x273c3e['SentimentScore'][_0xb282('0x2d')],'sMixed':_0x273c3e[_0xb282('0x2b')][_0xb282('0x2e')],'sNeutral':_0x273c3e[_0xb282('0x2b')][_0xb282('0x2f')],'transcribeStatus':_0xb282('0x36')});})['then'](function(){logger[_0xb282('0xd')](util[_0xb282('0x9')](_0xb282('0x1a'),_0x5d52d2['id']));_0x9e9072();});}})['catch'](function(_0xacf42e){if(_0xacf42e){if(!_0xacf42e['name']||_0xacf42e[_0xb282('0x37')]!=='SequelizeValidationError'){logger[_0xb282('0x38')](util['format']('[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis',_0x5d52d2['id']),util['inspect'](_0xacf42e,{'showHidden':![],'depth':null}));}}_0x9e9072();});});}function checkTranscribe(){var _0x354fc9;var _0x32765f;var _0x42d99f;return db[_0xb282('0x39')]['findAll']({'where':{'transcribeStatus':'IN_PROGRESS'}})['then'](function(_0x40080e){if(!_0x40080e||!_0x40080e[_0xb282('0x18')]){throw new db[(_0xb282('0x1c'))][(_0xb282('0x26'))]('No\x20transcribe\x20job\x20to\x20check');}_0x354fc9=_0x40080e;return db[_0xb282('0x3a')][_0xb282('0x33')]({'where':{'id':0x1}});})['then'](function(_0x33bded){if(!_0x33bded){throw new db[(_0xb282('0x1c'))][(_0xb282('0x26'))](_0xb282('0x3b'));}_0x32765f=_0x33bded;if(!_0x32765f[_0xb282('0x5')]||!_0x32765f['transcribeAccountId']||!_0x32765f[_0xb282('0x3c')]||!_0x32765f[_0xb282('0x21')]||!_0x32765f[_0xb282('0x22')]){throw new db[(_0xb282('0x1c'))][(_0xb282('0x26'))](_0xb282('0x3d'));}return db['CloudProvider'][_0xb282('0x33')]({'where':{'id':_0x32765f['transcribeAccountId']}});})[_0xb282('0xc')](function(_0x1e6ade){if(!_0x1e6ade){throw new db['Sequelize'][(_0xb282('0x26'))](_0xb282('0x34'));}if(!_0x1e6ade[_0xb282('0xb')]||!_0x1e6ade['data2']){throw new db['Sequelize'][(_0xb282('0x26'))](_0xb282('0x27'));}_0x42d99f=_0x1e6ade;var _0x7e1525=[];_0x354fc9['forEach'](function(_0x2d3839){_0x7e1525['push'](checkTranscribeJob(_0x2d3839,_0x32765f,_0x42d99f));});return BPromise[_0xb282('0x3e')](_0x7e1525);})[_0xb282('0x3f')](function(_0x55c540){if(_0x55c540){if(!_0x55c540[_0xb282('0x37')]||_0x55c540['name']!==_0xb282('0x40')){logger[_0xb282('0x38')](util[_0xb282('0x41')](_0x55c540,{'showHidden':![],'depth':null}));}}});}exports[_0xb282('0x42')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};