Built motion from commit 4e7c323b.|2.5.34
[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 _0xd3f5=['sentimentRegion','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','SentimentScore','Negative','Neutral','FAILED','FailureReason','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','Sentiment\x20Analysis\x20not\x20configured','CloudProvider','findOne','Sentiment','Positive','Mixed','catch','name','SequelizeValidationError','error','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','VoiceRecording','findAll','IN_PROGRESS','No\x20transcribe\x20job\x20to\x20check','Setting','Settings\x20not\x20available','transcribeAccountId','transcribeRegion','forEach','push','start','lodash','aws-sdk','util','bluebird','../../mysqldb','../../config/logger','transcribe','TranscribeService','Comprehend','detectSentiment','substring','info','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeName','data2','then','format','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJobStatus','TranscriptionJob','COMPLETED','Transcript','TranscriptFileUri','[RECORDING:%d]\x20Get\x20transcript','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','fileText','length','update','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','Sentiment\x20Analysis\x20not\x20requested','sentiment','sentimentAccountId','language','bucket','Sequelize','ValidationError','Transcript\x20not\x20available','Cloud\x20Provider\x20not\x20available','data1','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis'];(function(_0x5e99ce,_0xc6df2){var _0x556a48=function(_0x38ea04){while(--_0x38ea04){_0x5e99ce['push'](_0x5e99ce['shift']());}};_0x556a48(++_0xc6df2);}(_0xd3f5,0x147));var _0x5d3f=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0xd3f5[_0x397e5f];return _0x5302b8;};var _=require(_0x5d3f('0x0'));var AWS=require(_0x5d3f('0x1'));var rp=require('request-promise');var util=require(_0x5d3f('0x2'));var BPromise=require(_0x5d3f('0x3'));var db=require(_0x5d3f('0x4'))['db'];var logger=require(_0x5d3f('0x5'))(_0x5d3f('0x6'));function getTranscriptionJob(_0x3f663f,_0x413cf4,_0x27cc35,_0x576bbd){return new Promise(function(_0x1d7b89,_0x4b7986){var _0x2e0ad6=new AWS[(_0x5d3f('0x7'))]({'accessKeyId':_0x413cf4,'secretAccessKey':_0x3f663f,'region':_0x27cc35});_0x2e0ad6['getTranscriptionJob']({'TranscriptionJobName':_0x576bbd},function(_0x1b18bb,_0x4f64d0){if(_0x1b18bb){return _0x4b7986(_0x1b18bb);}else{return _0x1d7b89(_0x4f64d0);}});});}function sentiment(_0x43ea9c,_0x5c01b2,_0x3f29c9,_0x4e68cf,_0x60aa6c){return new Promise(function(_0x234c29,_0x114de0){var _0x1e7af6=new AWS[(_0x5d3f('0x8'))]({'accessKeyId':_0x5c01b2,'secretAccessKey':_0x43ea9c,'region':_0x3f29c9});_0x1e7af6[_0x5d3f('0x9')]({'Text':_0x4e68cf,'LanguageCode':_0x60aa6c[_0x5d3f('0xa')](0x0,0x2)},function(_0x1ad56e,_0x12d3c9){if(_0x1ad56e){return _0x114de0(_0x1ad56e);}else{return _0x234c29(_0x12d3c9);}});});}function checkTranscribeJob(_0x2157be,_0x41afec,_0x513884){var _0x2359ae;return new BPromise(function(_0x3135c8,_0x1def4d){logger[_0x5d3f('0xb')](util['format'](_0x5d3f('0xc'),_0x2157be['id'],_0x2157be[_0x5d3f('0xd')]));return getTranscriptionJob(_0x513884['data1'],_0x513884[_0x5d3f('0xe')],_0x41afec['transcribeRegion'],_0x2157be[_0x5d3f('0xd')])[_0x5d3f('0xf')](function(_0x1f55bb){logger[_0x5d3f('0xb')](util[_0x5d3f('0x10')](_0x5d3f('0x11'),_0x2157be['id'],_0x2157be[_0x5d3f('0xd')],_0x1f55bb['TranscriptionJob'][_0x5d3f('0x12')]));if(!_0x2157be['fileText']){switch(_0x1f55bb[_0x5d3f('0x13')][_0x5d3f('0x12')]){case _0x5d3f('0x14'):var _0x547df2={'transcribeStatus':_0x1f55bb['TranscriptionJob'][_0x5d3f('0x12')],'fileUri':_0x1f55bb['TranscriptionJob'][_0x5d3f('0x15')][_0x5d3f('0x16')]};logger['info'](util['format'](_0x5d3f('0x17'),_0x2157be['id']));return rp({'uri':_0x1f55bb[_0x5d3f('0x13')][_0x5d3f('0x15')][_0x5d3f('0x16')],'json':!![]})['then'](function(_0x4b0a35){logger[_0x5d3f('0xb')](util[_0x5d3f('0x10')](_0x5d3f('0x18'),_0x2157be['id']));if(_0x4b0a35&&_0x4b0a35['results']&&_0x4b0a35[_0x5d3f('0x19')][_0x5d3f('0x1a')]&&_0x4b0a35['results'][_0x5d3f('0x1a')]['length']){_0x547df2[_0x5d3f('0x1b')]='';for(var _0x56634d=0x0;_0x56634d<_0x4b0a35[_0x5d3f('0x19')][_0x5d3f('0x1a')][_0x5d3f('0x1c')];_0x56634d++){_0x547df2[_0x5d3f('0x1b')]+=_0x4b0a35[_0x5d3f('0x19')][_0x5d3f('0x1a')][_0x56634d]['transcript']+'';}}return _0x2157be[_0x5d3f('0x1d')](_0x547df2);})[_0x5d3f('0xf')](function(){logger[_0x5d3f('0xb')](util['format'](_0x5d3f('0x1e'),_0x2157be['id']));if(!_0x2157be['tempSentiment']){throw new db['Sequelize']['ValidationError'](_0x5d3f('0x1f'));}if(!_0x41afec[_0x5d3f('0x20')]||!_0x41afec[_0x5d3f('0x21')]||!_0x41afec['sentimentRegion']||!_0x41afec[_0x5d3f('0x22')]||!_0x41afec[_0x5d3f('0x23')]){throw new db[(_0x5d3f('0x24'))][(_0x5d3f('0x25'))]('Sentiment\x20Analysis\x20not\x20configured');}if(!_0x547df2['fileText']){throw new Error(_0x5d3f('0x26'));}if(_0x41afec[_0x5d3f('0x21')]===_0x513884['id']){return _0x513884;}else{return db['CloudProvider']['findOne']({'where':{'id':_settings[_0x5d3f('0x21')]}});}})[_0x5d3f('0xf')](function(_0x4e00b5){if(!_0x4e00b5){throw new db[(_0x5d3f('0x24'))][(_0x5d3f('0x25'))](_0x5d3f('0x27'));}if(!_0x4e00b5[_0x5d3f('0x28')]||!_0x4e00b5[_0x5d3f('0xe')]){throw new db[(_0x5d3f('0x24'))][(_0x5d3f('0x25'))](_0x5d3f('0x29'));}_0x2359ae=_0x4e00b5;logger['info'](util[_0x5d3f('0x10')](_0x5d3f('0x2a'),_0x2157be['id']));return sentiment(_0x2359ae[_0x5d3f('0x28')],_0x2359ae['data2'],_0x41afec[_0x5d3f('0x2b')],_0x547df2[_0x5d3f('0x1b')],_0x41afec[_0x5d3f('0x22')]);})[_0x5d3f('0xf')](function(_0x2dde15){logger[_0x5d3f('0xb')](util[_0x5d3f('0x10')](_0x5d3f('0x2c'),_0x2157be['id']));return _0x2157be[_0x5d3f('0x1d')]({'sentiment':_0x2dde15['Sentiment'],'sPositive':_0x2dde15[_0x5d3f('0x2d')]['Positive'],'sNegative':_0x2dde15[_0x5d3f('0x2d')][_0x5d3f('0x2e')],'sMixed':_0x2dde15[_0x5d3f('0x2d')]['Mixed'],'sNeutral':_0x2dde15[_0x5d3f('0x2d')][_0x5d3f('0x2f')]});})['then'](function(){logger[_0x5d3f('0xb')](util[_0x5d3f('0x10')](_0x5d3f('0x1e'),_0x2157be['id']));_0x3135c8();});case _0x5d3f('0x30'):return _0x2157be[_0x5d3f('0x1d')]({'transcribeStatus':_0x5d3f('0x30'),'failureReason':_0x1f55bb[_0x5d3f('0x13')][_0x5d3f('0x31')]})['then'](function(){logger[_0x5d3f('0xb')](util[_0x5d3f('0x10')](_0x5d3f('0x1e'),_0x2157be['id']));_0x3135c8();});default:logger[_0x5d3f('0xb')](util[_0x5d3f('0x10')](_0x5d3f('0x32'),_0x2157be['id']));break;}}else{return BPromise[_0x5d3f('0x33')]()[_0x5d3f('0xf')](function(){if(!_0x2157be['tempSentiment']){throw new db[(_0x5d3f('0x24'))]['ValidationError'](_0x5d3f('0x1f'));}if(!_0x41afec['sentiment']||!_0x41afec[_0x5d3f('0x21')]||!_0x41afec[_0x5d3f('0x2b')]||!_0x41afec[_0x5d3f('0x22')]||!_0x41afec['bucket']){throw new db['Sequelize'][(_0x5d3f('0x25'))](_0x5d3f('0x34'));}if(!_0x2157be[_0x5d3f('0x1b')]){throw new Error(_0x5d3f('0x26'));}if(_0x41afec['sentimentAccountId']===_0x513884['id']){return _0x513884;}else{return db[_0x5d3f('0x35')][_0x5d3f('0x36')]({'where':{'id':_settings[_0x5d3f('0x21')]}});}})[_0x5d3f('0xf')](function(_0x5ec293){if(!_0x5ec293){throw new db['Sequelize'][(_0x5d3f('0x25'))](_0x5d3f('0x27'));}if(!_0x5ec293[_0x5d3f('0x28')]||!_0x5ec293[_0x5d3f('0xe')]){throw new db['Sequelize'][(_0x5d3f('0x25'))](_0x5d3f('0x29'));}_0x2359ae=_0x5ec293;logger[_0x5d3f('0xb')](util[_0x5d3f('0x10')](_0x5d3f('0x2a'),_0x2157be['id']));return sentiment(_0x2359ae['data1'],_0x2359ae[_0x5d3f('0xe')],_0x41afec[_0x5d3f('0x2b')],_0x2157be['fileText'],_0x41afec[_0x5d3f('0x22')]);})[_0x5d3f('0xf')](function(_0x4e89df){logger[_0x5d3f('0xb')](util['format'](_0x5d3f('0x2c'),_0x2157be['id']));return _0x2157be[_0x5d3f('0x1d')]({'sentiment':_0x4e89df[_0x5d3f('0x37')],'sPositive':_0x4e89df['SentimentScore'][_0x5d3f('0x38')],'sNegative':_0x4e89df[_0x5d3f('0x2d')][_0x5d3f('0x2e')],'sMixed':_0x4e89df[_0x5d3f('0x2d')][_0x5d3f('0x39')],'sNeutral':_0x4e89df[_0x5d3f('0x2d')][_0x5d3f('0x2f')],'transcribeStatus':_0x5d3f('0x14')});})[_0x5d3f('0xf')](function(){logger[_0x5d3f('0xb')](util[_0x5d3f('0x10')](_0x5d3f('0x1e'),_0x2157be['id']));_0x3135c8();});}})[_0x5d3f('0x3a')](function(_0x4e9a46){if(_0x4e9a46){if(!_0x4e9a46[_0x5d3f('0x3b')]||_0x4e9a46[_0x5d3f('0x3b')]!==_0x5d3f('0x3c')){logger[_0x5d3f('0x3d')](util['format'](_0x5d3f('0x3e'),_0x2157be['id']),util['inspect'](_0x4e9a46,{'showHidden':![],'depth':null}));}}_0x3135c8();});});}function checkTranscribe(){var _0x3e4c62;var _0x5ab761;var _0x124456;return db[_0x5d3f('0x3f')][_0x5d3f('0x40')]({'where':{'transcribeStatus':_0x5d3f('0x41')}})[_0x5d3f('0xf')](function(_0x3796b8){if(!_0x3796b8||!_0x3796b8[_0x5d3f('0x1c')]){throw new db[(_0x5d3f('0x24'))]['ValidationError'](_0x5d3f('0x42'));}_0x3e4c62=_0x3796b8;return db[_0x5d3f('0x43')][_0x5d3f('0x36')]({'where':{'id':0x1}});})['then'](function(_0x58932e){if(!_0x58932e){throw new db[(_0x5d3f('0x24'))][(_0x5d3f('0x25'))](_0x5d3f('0x44'));}_0x5ab761=_0x58932e;if(!_0x5ab761[_0x5d3f('0x6')]||!_0x5ab761[_0x5d3f('0x45')]||!_0x5ab761[_0x5d3f('0x46')]||!_0x5ab761[_0x5d3f('0x22')]||!_0x5ab761[_0x5d3f('0x23')]){throw new db[(_0x5d3f('0x24'))][(_0x5d3f('0x25'))]('Transcribe\x20not\x20configured');}return db[_0x5d3f('0x35')][_0x5d3f('0x36')]({'where':{'id':_0x5ab761[_0x5d3f('0x45')]}});})[_0x5d3f('0xf')](function(_0x164fbd){if(!_0x164fbd){throw new db[(_0x5d3f('0x24'))][(_0x5d3f('0x25'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x164fbd[_0x5d3f('0x28')]||!_0x164fbd[_0x5d3f('0xe')]){throw new db[(_0x5d3f('0x24'))][(_0x5d3f('0x25'))]('Cloud\x20Provider\x20not\x20configured');}_0x124456=_0x164fbd;var _0x231c0d=[];_0x3e4c62[_0x5d3f('0x47')](function(_0x3914cc){_0x231c0d[_0x5d3f('0x48')](checkTranscribeJob(_0x3914cc,_0x5ab761,_0x124456));});return BPromise['all'](_0x231c0d);})[_0x5d3f('0x3a')](function(_0x2c5321){if(_0x2c5321){if(!_0x2c5321[_0x5d3f('0x3b')]||_0x2c5321[_0x5d3f('0x3b')]!==_0x5d3f('0x3c')){logger[_0x5d3f('0x3d')](util['inspect'](_0x2c5321,{'showHidden':![],'depth':null}));}}});}exports[_0x5d3f('0x49')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};