Built motion from commit 25580385.|2.6.2
[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 _0x7292=['TranscriptionJobStatus','Transcript','TranscriptFileUri','[RECORDING:%d]\x20Get\x20transcript','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','update','sentiment','sentimentAccountId','language','bucket','Sequelize','ValidationError','Transcript\x20not\x20available','Cloud\x20Provider\x20not\x20available','Cloud\x20Provider\x20not\x20configured','sentimentRegion','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Sentiment','SentimentScore','Negative','Neutral','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','FAILED','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','tempSentiment','Sentiment\x20Analysis\x20not\x20configured','CloudProvider','findOne','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','Positive','Mixed','name','SequelizeValidationError','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','VoiceRecording','IN_PROGRESS','Setting','Settings\x20not\x20available','transcribe','transcribeAccountId','transcribeRegion','Transcribe\x20not\x20configured','forEach','all','catch','error','inspect','lodash','aws-sdk','request-promise','util','bluebird','../../mysqldb','../../config/logger','TranscribeService','getTranscriptionJob','Comprehend','detectSentiment','substring','info','format','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeName','data1','data2','then','TranscriptionJob','fileText'];(function(_0x3b05b3,_0x381ef8){var _0x4f8256=function(_0x4ada06){while(--_0x4ada06){_0x3b05b3['push'](_0x3b05b3['shift']());}};_0x4f8256(++_0x381ef8);}(_0x7292,0x107));var _0x2729=function(_0x4d8ed9,_0x2ae284){_0x4d8ed9=_0x4d8ed9-0x0;var _0x1e2140=_0x7292[_0x4d8ed9];return _0x1e2140;};var _=require(_0x2729('0x0'));var AWS=require(_0x2729('0x1'));var rp=require(_0x2729('0x2'));var util=require(_0x2729('0x3'));var BPromise=require(_0x2729('0x4'));var db=require(_0x2729('0x5'))['db'];var logger=require(_0x2729('0x6'))('transcribe');function getTranscriptionJob(_0x400b66,_0x45977a,_0x1ca35f,_0x27cfe5){return new Promise(function(_0x26a3dc,_0x176a7c){var _0x3562b9=new AWS[(_0x2729('0x7'))]({'accessKeyId':_0x45977a,'secretAccessKey':_0x400b66,'region':_0x1ca35f});_0x3562b9[_0x2729('0x8')]({'TranscriptionJobName':_0x27cfe5},function(_0x4c0952,_0x5f4f01){if(_0x4c0952){return _0x176a7c(_0x4c0952);}else{return _0x26a3dc(_0x5f4f01);}});});}function sentiment(_0x1ea70b,_0x20d46b,_0x47be81,_0x39fcbf,_0x2562a5){return new Promise(function(_0x412ade,_0x1d3cd9){var _0x13de9a=new AWS[(_0x2729('0x9'))]({'accessKeyId':_0x20d46b,'secretAccessKey':_0x1ea70b,'region':_0x47be81});_0x13de9a[_0x2729('0xa')]({'Text':_0x39fcbf,'LanguageCode':_0x2562a5[_0x2729('0xb')](0x0,0x2)},function(_0x4376e7,_0x4cb389){if(_0x4376e7){return _0x1d3cd9(_0x4376e7);}else{return _0x412ade(_0x4cb389);}});});}function checkTranscribeJob(_0xaa930a,_0x37815a,_0x1449f9){var _0x5ae728;return new BPromise(function(_0x7c59b0,_0x15f590){logger[_0x2729('0xc')](util[_0x2729('0xd')](_0x2729('0xe'),_0xaa930a['id'],_0xaa930a[_0x2729('0xf')]));return getTranscriptionJob(_0x1449f9[_0x2729('0x10')],_0x1449f9[_0x2729('0x11')],_0x37815a['transcribeRegion'],_0xaa930a[_0x2729('0xf')])[_0x2729('0x12')](function(_0x235e71){logger['info'](util[_0x2729('0xd')]('[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s',_0xaa930a['id'],_0xaa930a['transcribeName'],_0x235e71[_0x2729('0x13')]['TranscriptionJobStatus']));if(!_0xaa930a[_0x2729('0x14')]){switch(_0x235e71['TranscriptionJob'][_0x2729('0x15')]){case'COMPLETED':var _0x58f312={'transcribeStatus':_0x235e71[_0x2729('0x13')][_0x2729('0x15')],'fileUri':_0x235e71[_0x2729('0x13')][_0x2729('0x16')][_0x2729('0x17')]};logger[_0x2729('0xc')](util[_0x2729('0xd')](_0x2729('0x18'),_0xaa930a['id']));return rp({'uri':_0x235e71['TranscriptionJob'][_0x2729('0x16')][_0x2729('0x17')],'json':!![]})[_0x2729('0x12')](function(_0x135186){logger['info'](util[_0x2729('0xd')](_0x2729('0x19'),_0xaa930a['id']));if(_0x135186&&_0x135186[_0x2729('0x1a')]&&_0x135186['results']['transcripts']&&_0x135186[_0x2729('0x1a')][_0x2729('0x1b')]['length']){_0x58f312[_0x2729('0x14')]='';for(var _0x72bdd2=0x0;_0x72bdd2<_0x135186[_0x2729('0x1a')][_0x2729('0x1b')][_0x2729('0x1c')];_0x72bdd2++){_0x58f312[_0x2729('0x14')]+=_0x135186[_0x2729('0x1a')][_0x2729('0x1b')][_0x72bdd2]['transcript']+'';}}return _0xaa930a[_0x2729('0x1d')](_0x58f312);})[_0x2729('0x12')](function(){logger['info'](util[_0x2729('0xd')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0xaa930a['id']));if(!_0xaa930a['tempSentiment']){throw new db['Sequelize']['ValidationError']('Sentiment\x20Analysis\x20not\x20requested');}if(!_0x37815a[_0x2729('0x1e')]||!_0x37815a[_0x2729('0x1f')]||!_0x37815a['sentimentRegion']||!_0x37815a[_0x2729('0x20')]||!_0x37815a[_0x2729('0x21')]){throw new db[(_0x2729('0x22'))][(_0x2729('0x23'))]('Sentiment\x20Analysis\x20not\x20configured');}if(!_0x58f312[_0x2729('0x14')]){throw new Error(_0x2729('0x24'));}if(_0x37815a[_0x2729('0x1f')]===_0x1449f9['id']){return _0x1449f9;}else{return db['CloudProvider']['findOne']({'where':{'id':_settings[_0x2729('0x1f')]}});}})[_0x2729('0x12')](function(_0x390145){if(!_0x390145){throw new db[(_0x2729('0x22'))]['ValidationError'](_0x2729('0x25'));}if(!_0x390145[_0x2729('0x10')]||!_0x390145['data2']){throw new db[(_0x2729('0x22'))][(_0x2729('0x23'))](_0x2729('0x26'));}_0x5ae728=_0x390145;logger[_0x2729('0xc')](util[_0x2729('0xd')]('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0xaa930a['id']));return sentiment(_0x5ae728[_0x2729('0x10')],_0x5ae728[_0x2729('0x11')],_0x37815a[_0x2729('0x27')],_0x58f312[_0x2729('0x14')],_0x37815a[_0x2729('0x20')]);})[_0x2729('0x12')](function(_0x4524ac){logger['info'](util[_0x2729('0xd')](_0x2729('0x28'),_0xaa930a['id']));return _0xaa930a['update']({'sentiment':_0x4524ac[_0x2729('0x29')],'sPositive':_0x4524ac['SentimentScore']['Positive'],'sNegative':_0x4524ac[_0x2729('0x2a')][_0x2729('0x2b')],'sMixed':_0x4524ac[_0x2729('0x2a')]['Mixed'],'sNeutral':_0x4524ac[_0x2729('0x2a')][_0x2729('0x2c')]});})['then'](function(){logger[_0x2729('0xc')](util[_0x2729('0xd')](_0x2729('0x2d'),_0xaa930a['id']));_0x7c59b0();});case _0x2729('0x2e'):return _0xaa930a[_0x2729('0x1d')]({'transcribeStatus':_0x2729('0x2e'),'failureReason':_0x235e71['TranscriptionJob']['FailureReason']})[_0x2729('0x12')](function(){logger['info'](util[_0x2729('0xd')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0xaa930a['id']));_0x7c59b0();});default:logger[_0x2729('0xc')](util['format'](_0x2729('0x2f'),_0xaa930a['id']));break;}}else{return BPromise['resolve']()[_0x2729('0x12')](function(){if(!_0xaa930a[_0x2729('0x30')]){throw new db[(_0x2729('0x22'))]['ValidationError']('Sentiment\x20Analysis\x20not\x20requested');}if(!_0x37815a[_0x2729('0x1e')]||!_0x37815a['sentimentAccountId']||!_0x37815a[_0x2729('0x27')]||!_0x37815a['language']||!_0x37815a['bucket']){throw new db[(_0x2729('0x22'))]['ValidationError'](_0x2729('0x31'));}if(!_0xaa930a['fileText']){throw new Error(_0x2729('0x24'));}if(_0x37815a[_0x2729('0x1f')]===_0x1449f9['id']){return _0x1449f9;}else{return db[_0x2729('0x32')][_0x2729('0x33')]({'where':{'id':_settings[_0x2729('0x1f')]}});}})['then'](function(_0x43e0fb){if(!_0x43e0fb){throw new db[(_0x2729('0x22'))]['ValidationError']('Cloud\x20Provider\x20not\x20available');}if(!_0x43e0fb[_0x2729('0x10')]||!_0x43e0fb[_0x2729('0x11')]){throw new db[(_0x2729('0x22'))][(_0x2729('0x23'))](_0x2729('0x26'));}_0x5ae728=_0x43e0fb;logger[_0x2729('0xc')](util[_0x2729('0xd')](_0x2729('0x34'),_0xaa930a['id']));return sentiment(_0x5ae728[_0x2729('0x10')],_0x5ae728[_0x2729('0x11')],_0x37815a[_0x2729('0x27')],_0xaa930a[_0x2729('0x14')],_0x37815a[_0x2729('0x20')]);})[_0x2729('0x12')](function(_0x5ceb88){logger[_0x2729('0xc')](util[_0x2729('0xd')](_0x2729('0x28'),_0xaa930a['id']));return _0xaa930a[_0x2729('0x1d')]({'sentiment':_0x5ceb88['Sentiment'],'sPositive':_0x5ceb88[_0x2729('0x2a')][_0x2729('0x35')],'sNegative':_0x5ceb88[_0x2729('0x2a')]['Negative'],'sMixed':_0x5ceb88['SentimentScore'][_0x2729('0x36')],'sNeutral':_0x5ceb88[_0x2729('0x2a')]['Neutral'],'transcribeStatus':'COMPLETED'});})[_0x2729('0x12')](function(){logger[_0x2729('0xc')](util[_0x2729('0xd')](_0x2729('0x2d'),_0xaa930a['id']));_0x7c59b0();});}})['catch'](function(_0x2d78d2){if(_0x2d78d2){if(!_0x2d78d2[_0x2729('0x37')]||_0x2d78d2['name']!==_0x2729('0x38')){logger['error'](util[_0x2729('0xd')](_0x2729('0x39'),_0xaa930a['id']),util['inspect'](_0x2d78d2,{'showHidden':![],'depth':null}));}}_0x7c59b0();});});}function checkTranscribe(){var _0xced9f6;var _0x4aa8cf;var _0x5d5c9d;return db[_0x2729('0x3a')]['findAll']({'where':{'transcribeStatus':_0x2729('0x3b')}})[_0x2729('0x12')](function(_0x3059fe){if(!_0x3059fe||!_0x3059fe[_0x2729('0x1c')]){throw new db[(_0x2729('0x22'))][(_0x2729('0x23'))]('No\x20transcribe\x20job\x20to\x20check');}_0xced9f6=_0x3059fe;return db[_0x2729('0x3c')]['findOne']({'where':{'id':0x1}});})[_0x2729('0x12')](function(_0x215494){if(!_0x215494){throw new db[(_0x2729('0x22'))]['ValidationError'](_0x2729('0x3d'));}_0x4aa8cf=_0x215494;if(!_0x4aa8cf[_0x2729('0x3e')]||!_0x4aa8cf[_0x2729('0x3f')]||!_0x4aa8cf[_0x2729('0x40')]||!_0x4aa8cf[_0x2729('0x20')]||!_0x4aa8cf[_0x2729('0x21')]){throw new db[(_0x2729('0x22'))]['ValidationError'](_0x2729('0x41'));}return db['CloudProvider'][_0x2729('0x33')]({'where':{'id':_0x4aa8cf['transcribeAccountId']}});})['then'](function(_0x4f7b04){if(!_0x4f7b04){throw new db[(_0x2729('0x22'))][(_0x2729('0x23'))](_0x2729('0x25'));}if(!_0x4f7b04[_0x2729('0x10')]||!_0x4f7b04[_0x2729('0x11')]){throw new db[(_0x2729('0x22'))][(_0x2729('0x23'))](_0x2729('0x26'));}_0x5d5c9d=_0x4f7b04;var _0x598d68=[];_0xced9f6[_0x2729('0x42')](function(_0x2ae039){_0x598d68['push'](checkTranscribeJob(_0x2ae039,_0x4aa8cf,_0x5d5c9d));});return BPromise[_0x2729('0x43')](_0x598d68);})[_0x2729('0x44')](function(_0x327291){if(_0x327291){if(!_0x327291[_0x2729('0x37')]||_0x327291[_0x2729('0x37')]!=='SequelizeValidationError'){logger[_0x2729('0x45')](util[_0x2729('0x46')](_0x327291,{'showHidden':![],'depth':null}));}}});}exports['start']=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};