Built motion from commit 9d1906d1.|2.5.40
[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 _0x3611=['COMPLETED','Transcript','TranscriptFileUri','[RECORDING:%d]\x20Get\x20transcript','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','transcript','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','Sequelize','sentiment','sentimentAccountId','sentimentRegion','language','bucket','ValidationError','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available','findOne','Cloud\x20Provider\x20not\x20available','data2','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','update','SentimentScore','Negative','Mixed','Neutral','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','tempSentiment','Sentiment','catch','name','SequelizeValidationError','error','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','VoiceRecording','IN_PROGRESS','No\x20transcribe\x20job\x20to\x20check','Settings\x20not\x20available','transcribeAccountId','transcribeRegion','Transcribe\x20not\x20configured','CloudProvider','forEach','all','inspect','start','lodash','util','../../config/logger','transcribe','getTranscriptionJob','Comprehend','info','format','data1','transcribeName','then','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJob','TranscriptionJobStatus','fileText'];(function(_0x463362,_0x3bad99){var _0x346553=function(_0x590c4a){while(--_0x590c4a){_0x463362['push'](_0x463362['shift']());}};_0x346553(++_0x3bad99);}(_0x3611,0x136));var _0x1361=function(_0x597ea7,_0x2c4c1f){_0x597ea7=_0x597ea7-0x0;var _0x413a54=_0x3611[_0x597ea7];return _0x413a54;};var _=require(_0x1361('0x0'));var AWS=require('aws-sdk');var rp=require('request-promise');var util=require(_0x1361('0x1'));var BPromise=require('bluebird');var db=require('../../mysqldb')['db'];var logger=require(_0x1361('0x2'))(_0x1361('0x3'));function getTranscriptionJob(_0x25db42,_0x383a70,_0x5c4262,_0x289e07){return new Promise(function(_0x304832,_0x5aa5dc){var _0x216d22=new AWS['TranscribeService']({'accessKeyId':_0x383a70,'secretAccessKey':_0x25db42,'region':_0x5c4262});_0x216d22[_0x1361('0x4')]({'TranscriptionJobName':_0x289e07},function(_0x49cfad,_0x5cc29f){if(_0x49cfad){return _0x5aa5dc(_0x49cfad);}else{return _0x304832(_0x5cc29f);}});});}function sentiment(_0xc43b7e,_0x253b3a,_0x146242,_0x3f02de,_0x43acbd){return new Promise(function(_0x410a2b,_0x14756b){var _0x519638=new AWS[(_0x1361('0x5'))]({'accessKeyId':_0x253b3a,'secretAccessKey':_0xc43b7e,'region':_0x146242});_0x519638['detectSentiment']({'Text':_0x3f02de,'LanguageCode':_0x43acbd['substring'](0x0,0x2)},function(_0x10b9e7,_0x4a98fe){if(_0x10b9e7){return _0x14756b(_0x10b9e7);}else{return _0x410a2b(_0x4a98fe);}});});}function checkTranscribeJob(_0x27dd65,_0x2cecd6,_0xbc9d68){var _0x1a36e9;return new BPromise(function(_0x459788,_0x2e05ce){logger[_0x1361('0x6')](util[_0x1361('0x7')]('[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)',_0x27dd65['id'],_0x27dd65['transcribeName']));return getTranscriptionJob(_0xbc9d68[_0x1361('0x8')],_0xbc9d68['data2'],_0x2cecd6['transcribeRegion'],_0x27dd65[_0x1361('0x9')])[_0x1361('0xa')](function(_0x31e1c7){logger[_0x1361('0x6')](util['format'](_0x1361('0xb'),_0x27dd65['id'],_0x27dd65[_0x1361('0x9')],_0x31e1c7[_0x1361('0xc')][_0x1361('0xd')]));if(!_0x27dd65[_0x1361('0xe')]){switch(_0x31e1c7[_0x1361('0xc')]['TranscriptionJobStatus']){case _0x1361('0xf'):var _0x49e768={'transcribeStatus':_0x31e1c7[_0x1361('0xc')][_0x1361('0xd')],'fileUri':_0x31e1c7[_0x1361('0xc')][_0x1361('0x10')][_0x1361('0x11')]};logger['info'](util[_0x1361('0x7')](_0x1361('0x12'),_0x27dd65['id']));return rp({'uri':_0x31e1c7[_0x1361('0xc')][_0x1361('0x10')]['TranscriptFileUri'],'json':!![]})['then'](function(_0xa3f1f8){logger['info'](util[_0x1361('0x7')](_0x1361('0x13'),_0x27dd65['id']));if(_0xa3f1f8&&_0xa3f1f8[_0x1361('0x14')]&&_0xa3f1f8[_0x1361('0x14')][_0x1361('0x15')]&&_0xa3f1f8['results'][_0x1361('0x15')][_0x1361('0x16')]){_0x49e768[_0x1361('0xe')]='';for(var _0x1d9c1d=0x0;_0x1d9c1d<_0xa3f1f8['results'][_0x1361('0x15')][_0x1361('0x16')];_0x1d9c1d++){_0x49e768[_0x1361('0xe')]+=_0xa3f1f8['results'][_0x1361('0x15')][_0x1d9c1d][_0x1361('0x17')]+'';}}return _0x27dd65['update'](_0x49e768);})[_0x1361('0xa')](function(){logger[_0x1361('0x6')](util[_0x1361('0x7')](_0x1361('0x18'),_0x27dd65['id']));if(!_0x27dd65['tempSentiment']){throw new db[(_0x1361('0x19'))]['ValidationError']('Sentiment\x20Analysis\x20not\x20requested');}if(!_0x2cecd6[_0x1361('0x1a')]||!_0x2cecd6[_0x1361('0x1b')]||!_0x2cecd6[_0x1361('0x1c')]||!_0x2cecd6[_0x1361('0x1d')]||!_0x2cecd6[_0x1361('0x1e')]){throw new db[(_0x1361('0x19'))][(_0x1361('0x1f'))](_0x1361('0x20'));}if(!_0x49e768[_0x1361('0xe')]){throw new Error(_0x1361('0x21'));}if(_0x2cecd6[_0x1361('0x1b')]===_0xbc9d68['id']){return _0xbc9d68;}else{return db['CloudProvider'][_0x1361('0x22')]({'where':{'id':_settings[_0x1361('0x1b')]}});}})[_0x1361('0xa')](function(_0x187f85){if(!_0x187f85){throw new db[(_0x1361('0x19'))][(_0x1361('0x1f'))](_0x1361('0x23'));}if(!_0x187f85[_0x1361('0x8')]||!_0x187f85[_0x1361('0x24')]){throw new db[(_0x1361('0x19'))][(_0x1361('0x1f'))](_0x1361('0x25'));}_0x1a36e9=_0x187f85;logger[_0x1361('0x6')](util[_0x1361('0x7')](_0x1361('0x26'),_0x27dd65['id']));return sentiment(_0x1a36e9[_0x1361('0x8')],_0x1a36e9[_0x1361('0x24')],_0x2cecd6['sentimentRegion'],_0x49e768[_0x1361('0xe')],_0x2cecd6[_0x1361('0x1d')]);})['then'](function(_0x234be2){logger[_0x1361('0x6')](util[_0x1361('0x7')]('[RECORDING:%d]\x20Sentiment\x20Analysis\x20available',_0x27dd65['id']));return _0x27dd65[_0x1361('0x27')]({'sentiment':_0x234be2['Sentiment'],'sPositive':_0x234be2[_0x1361('0x28')]['Positive'],'sNegative':_0x234be2['SentimentScore'][_0x1361('0x29')],'sMixed':_0x234be2['SentimentScore'][_0x1361('0x2a')],'sNeutral':_0x234be2[_0x1361('0x28')][_0x1361('0x2b')]});})[_0x1361('0xa')](function(){logger['info'](util[_0x1361('0x7')](_0x1361('0x18'),_0x27dd65['id']));_0x459788();});case'FAILED':return _0x27dd65[_0x1361('0x27')]({'transcribeStatus':'FAILED','failureReason':_0x31e1c7[_0x1361('0xc')]['FailureReason']})['then'](function(){logger[_0x1361('0x6')](util[_0x1361('0x7')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x27dd65['id']));_0x459788();});default:logger[_0x1361('0x6')](util[_0x1361('0x7')](_0x1361('0x2c'),_0x27dd65['id']));break;}}else{return BPromise[_0x1361('0x2d')]()[_0x1361('0xa')](function(){if(!_0x27dd65[_0x1361('0x2e')]){throw new db['Sequelize'][(_0x1361('0x1f'))]('Sentiment\x20Analysis\x20not\x20requested');}if(!_0x2cecd6['sentiment']||!_0x2cecd6[_0x1361('0x1b')]||!_0x2cecd6[_0x1361('0x1c')]||!_0x2cecd6[_0x1361('0x1d')]||!_0x2cecd6[_0x1361('0x1e')]){throw new db[(_0x1361('0x19'))]['ValidationError'](_0x1361('0x20'));}if(!_0x27dd65[_0x1361('0xe')]){throw new Error(_0x1361('0x21'));}if(_0x2cecd6[_0x1361('0x1b')]===_0xbc9d68['id']){return _0xbc9d68;}else{return db['CloudProvider'][_0x1361('0x22')]({'where':{'id':_settings[_0x1361('0x1b')]}});}})[_0x1361('0xa')](function(_0x490c95){if(!_0x490c95){throw new db[(_0x1361('0x19'))][(_0x1361('0x1f'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x490c95['data1']||!_0x490c95['data2']){throw new db[(_0x1361('0x19'))][(_0x1361('0x1f'))]('Cloud\x20Provider\x20not\x20configured');}_0x1a36e9=_0x490c95;logger[_0x1361('0x6')](util[_0x1361('0x7')]('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0x27dd65['id']));return sentiment(_0x1a36e9['data1'],_0x1a36e9[_0x1361('0x24')],_0x2cecd6[_0x1361('0x1c')],_0x27dd65[_0x1361('0xe')],_0x2cecd6[_0x1361('0x1d')]);})[_0x1361('0xa')](function(_0x193581){logger[_0x1361('0x6')](util['format']('[RECORDING:%d]\x20Sentiment\x20Analysis\x20available',_0x27dd65['id']));return _0x27dd65[_0x1361('0x27')]({'sentiment':_0x193581[_0x1361('0x2f')],'sPositive':_0x193581['SentimentScore']['Positive'],'sNegative':_0x193581[_0x1361('0x28')][_0x1361('0x29')],'sMixed':_0x193581[_0x1361('0x28')][_0x1361('0x2a')],'sNeutral':_0x193581['SentimentScore'][_0x1361('0x2b')],'transcribeStatus':_0x1361('0xf')});})['then'](function(){logger[_0x1361('0x6')](util[_0x1361('0x7')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x27dd65['id']));_0x459788();});}})[_0x1361('0x30')](function(_0x5c4f56){if(_0x5c4f56){if(!_0x5c4f56[_0x1361('0x31')]||_0x5c4f56[_0x1361('0x31')]!==_0x1361('0x32')){logger[_0x1361('0x33')](util[_0x1361('0x7')](_0x1361('0x34'),_0x27dd65['id']),util['inspect'](_0x5c4f56,{'showHidden':![],'depth':null}));}}_0x459788();});});}function checkTranscribe(){var _0x21324c;var _0x4412c2;var _0x4b8114;return db[_0x1361('0x35')]['findAll']({'where':{'transcribeStatus':_0x1361('0x36')}})['then'](function(_0x1d8703){if(!_0x1d8703||!_0x1d8703['length']){throw new db['Sequelize'][(_0x1361('0x1f'))](_0x1361('0x37'));}_0x21324c=_0x1d8703;return db['Setting']['findOne']({'where':{'id':0x1}});})[_0x1361('0xa')](function(_0x3bd647){if(!_0x3bd647){throw new db[(_0x1361('0x19'))][(_0x1361('0x1f'))](_0x1361('0x38'));}_0x4412c2=_0x3bd647;if(!_0x4412c2[_0x1361('0x3')]||!_0x4412c2[_0x1361('0x39')]||!_0x4412c2[_0x1361('0x3a')]||!_0x4412c2['language']||!_0x4412c2['bucket']){throw new db[(_0x1361('0x19'))][(_0x1361('0x1f'))](_0x1361('0x3b'));}return db[_0x1361('0x3c')][_0x1361('0x22')]({'where':{'id':_0x4412c2[_0x1361('0x39')]}});})['then'](function(_0x1a7120){if(!_0x1a7120){throw new db['Sequelize'][(_0x1361('0x1f'))](_0x1361('0x23'));}if(!_0x1a7120[_0x1361('0x8')]||!_0x1a7120['data2']){throw new db[(_0x1361('0x19'))][(_0x1361('0x1f'))](_0x1361('0x25'));}_0x4b8114=_0x1a7120;var _0x96ca99=[];_0x21324c[_0x1361('0x3d')](function(_0x5ec794){_0x96ca99['push'](checkTranscribeJob(_0x5ec794,_0x4412c2,_0x4b8114));});return BPromise[_0x1361('0x3e')](_0x96ca99);})[_0x1361('0x30')](function(_0x307704){if(_0x307704){if(!_0x307704[_0x1361('0x31')]||_0x307704['name']!==_0x1361('0x32')){logger[_0x1361('0x33')](util[_0x1361('0x3f')](_0x307704,{'showHidden':![],'depth':null}));}}});}exports[_0x1361('0x40')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};