Built motion from commit (unavailable).|2.5.5
[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 _0x50ef=['IN_PROGRESS','No\x20transcribe\x20job\x20to\x20check','Setting','Settings\x20not\x20available','transcribeAccountId','Transcribe\x20not\x20configured','CloudProvider','Cloud\x20Provider\x20not\x20configured','forEach','push','all','lodash','aws-sdk','request-promise','../../mysqldb','transcribe','TranscribeService','getTranscriptionJob','Comprehend','detectSentiment','substring','format','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeName','data1','transcribeRegion','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJob','TranscriptionJobStatus','fileText','COMPLETED','TranscriptFileUri','info','Transcript','then','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','transcript','update','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','tempSentiment','Sequelize','ValidationError','sentiment','sentimentAccountId','sentimentRegion','language','bucket','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available','Cloud\x20Provider\x20not\x20available','data2','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Positive','SentimentScore','Mixed','Neutral','FAILED','FailureReason','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','Sentiment\x20Analysis\x20not\x20requested','findOne','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','Sentiment','Negative','catch','name','SequelizeValidationError','error','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','inspect','VoiceRecording','findAll'];(function(_0x37dbdc,_0x1407ce){var _0x5f18b7=function(_0x477a19){while(--_0x477a19){_0x37dbdc['push'](_0x37dbdc['shift']());}};_0x5f18b7(++_0x1407ce);}(_0x50ef,0xef));var _0xf50e=function(_0x18fd07,_0x557076){_0x18fd07=_0x18fd07-0x0;var _0x3d498c=_0x50ef[_0x18fd07];return _0x3d498c;};var _=require(_0xf50e('0x0'));var AWS=require(_0xf50e('0x1'));var rp=require(_0xf50e('0x2'));var util=require('util');var BPromise=require('bluebird');var db=require(_0xf50e('0x3'))['db'];var logger=require('../../config/logger')(_0xf50e('0x4'));function getTranscriptionJob(_0x4b4425,_0x4171c7,_0x47a3b6,_0x2adf0f){return new Promise(function(_0x72e841,_0x2ade14){var _0x1e340c=new AWS[(_0xf50e('0x5'))]({'accessKeyId':_0x4171c7,'secretAccessKey':_0x4b4425,'region':_0x47a3b6});_0x1e340c[_0xf50e('0x6')]({'TranscriptionJobName':_0x2adf0f},function(_0x386162,_0x2d8dcd){if(_0x386162){return _0x2ade14(_0x386162);}else{return _0x72e841(_0x2d8dcd);}});});}function sentiment(_0x4ae65b,_0x47f10f,_0x1948a7,_0x30e2cc,_0x959741){return new Promise(function(_0x139b17,_0x489d09){var _0x76c327=new AWS[(_0xf50e('0x7'))]({'accessKeyId':_0x47f10f,'secretAccessKey':_0x4ae65b,'region':_0x1948a7});_0x76c327[_0xf50e('0x8')]({'Text':_0x30e2cc,'LanguageCode':_0x959741[_0xf50e('0x9')](0x0,0x2)},function(_0x94dccd,_0x7aee93){if(_0x94dccd){return _0x489d09(_0x94dccd);}else{return _0x139b17(_0x7aee93);}});});}function checkTranscribeJob(_0x3ba559,_0x15a611,_0x4b6d4c){var _0xebfc4e;return new BPromise(function(_0x594a25,_0x17dfa5){logger['info'](util[_0xf50e('0xa')](_0xf50e('0xb'),_0x3ba559['id'],_0x3ba559[_0xf50e('0xc')]));return getTranscriptionJob(_0x4b6d4c[_0xf50e('0xd')],_0x4b6d4c['data2'],_0x15a611[_0xf50e('0xe')],_0x3ba559[_0xf50e('0xc')])['then'](function(_0x57358b){logger['info'](util['format'](_0xf50e('0xf'),_0x3ba559['id'],_0x3ba559[_0xf50e('0xc')],_0x57358b[_0xf50e('0x10')][_0xf50e('0x11')]));if(!_0x3ba559[_0xf50e('0x12')]){switch(_0x57358b[_0xf50e('0x10')][_0xf50e('0x11')]){case _0xf50e('0x13'):var _0x4652f8={'transcribeStatus':_0x57358b[_0xf50e('0x10')][_0xf50e('0x11')],'fileUri':_0x57358b['TranscriptionJob']['Transcript'][_0xf50e('0x14')]};logger[_0xf50e('0x15')](util[_0xf50e('0xa')]('[RECORDING:%d]\x20Get\x20transcript',_0x3ba559['id']));return rp({'uri':_0x57358b[_0xf50e('0x10')][_0xf50e('0x16')][_0xf50e('0x14')],'json':!![]})[_0xf50e('0x17')](function(_0x429a63){logger['info'](util[_0xf50e('0xa')](_0xf50e('0x18'),_0x3ba559['id']));if(_0x429a63&&_0x429a63[_0xf50e('0x19')]&&_0x429a63['results'][_0xf50e('0x1a')]&&_0x429a63['results'][_0xf50e('0x1a')][_0xf50e('0x1b')]){_0x4652f8['fileText']='';for(var _0x437187=0x0;_0x437187<_0x429a63[_0xf50e('0x19')][_0xf50e('0x1a')]['length'];_0x437187++){_0x4652f8[_0xf50e('0x12')]+=_0x429a63[_0xf50e('0x19')][_0xf50e('0x1a')][_0x437187][_0xf50e('0x1c')]+'';}}return _0x3ba559[_0xf50e('0x1d')](_0x4652f8);})[_0xf50e('0x17')](function(){logger[_0xf50e('0x15')](util[_0xf50e('0xa')](_0xf50e('0x1e'),_0x3ba559['id']));if(!_0x3ba559[_0xf50e('0x1f')]){throw new db[(_0xf50e('0x20'))][(_0xf50e('0x21'))]('Sentiment\x20Analysis\x20not\x20requested');}if(!_0x15a611[_0xf50e('0x22')]||!_0x15a611[_0xf50e('0x23')]||!_0x15a611[_0xf50e('0x24')]||!_0x15a611[_0xf50e('0x25')]||!_0x15a611[_0xf50e('0x26')]){throw new db[(_0xf50e('0x20'))][(_0xf50e('0x21'))](_0xf50e('0x27'));}if(!_0x4652f8['fileText']){throw new Error(_0xf50e('0x28'));}if(_0x15a611[_0xf50e('0x23')]===_0x4b6d4c['id']){return _0x4b6d4c;}else{return db['CloudProvider']['findOne']({'where':{'id':_settings[_0xf50e('0x23')]}});}})[_0xf50e('0x17')](function(_0x554f04){if(!_0x554f04){throw new db[(_0xf50e('0x20'))][(_0xf50e('0x21'))](_0xf50e('0x29'));}if(!_0x554f04[_0xf50e('0xd')]||!_0x554f04['data2']){throw new db['Sequelize'][(_0xf50e('0x21'))]('Cloud\x20Provider\x20not\x20configured');}_0xebfc4e=_0x554f04;logger[_0xf50e('0x15')](util[_0xf50e('0xa')]('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0x3ba559['id']));return sentiment(_0xebfc4e[_0xf50e('0xd')],_0xebfc4e[_0xf50e('0x2a')],_0x15a611[_0xf50e('0x24')],_0x4652f8['fileText'],_0x15a611[_0xf50e('0x25')]);})['then'](function(_0x596fb9){logger[_0xf50e('0x15')](util['format'](_0xf50e('0x2b'),_0x3ba559['id']));return _0x3ba559[_0xf50e('0x1d')]({'sentiment':_0x596fb9['Sentiment'],'sPositive':_0x596fb9['SentimentScore'][_0xf50e('0x2c')],'sNegative':_0x596fb9['SentimentScore']['Negative'],'sMixed':_0x596fb9[_0xf50e('0x2d')][_0xf50e('0x2e')],'sNeutral':_0x596fb9[_0xf50e('0x2d')][_0xf50e('0x2f')]});})[_0xf50e('0x17')](function(){logger['info'](util['format'](_0xf50e('0x1e'),_0x3ba559['id']));_0x594a25();});case _0xf50e('0x30'):return _0x3ba559[_0xf50e('0x1d')]({'transcribeStatus':_0xf50e('0x30'),'failureReason':_0x57358b[_0xf50e('0x10')][_0xf50e('0x31')]})[_0xf50e('0x17')](function(){logger[_0xf50e('0x15')](util[_0xf50e('0xa')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x3ba559['id']));_0x594a25();});default:logger[_0xf50e('0x15')](util['format'](_0xf50e('0x32'),_0x3ba559['id']));break;}}else{return BPromise[_0xf50e('0x33')]()['then'](function(){if(!_0x3ba559['tempSentiment']){throw new db[(_0xf50e('0x20'))][(_0xf50e('0x21'))](_0xf50e('0x34'));}if(!_0x15a611[_0xf50e('0x22')]||!_0x15a611['sentimentAccountId']||!_0x15a611[_0xf50e('0x24')]||!_0x15a611[_0xf50e('0x25')]||!_0x15a611['bucket']){throw new db[(_0xf50e('0x20'))][(_0xf50e('0x21'))](_0xf50e('0x27'));}if(!_0x3ba559[_0xf50e('0x12')]){throw new Error(_0xf50e('0x28'));}if(_0x15a611[_0xf50e('0x23')]===_0x4b6d4c['id']){return _0x4b6d4c;}else{return db['CloudProvider'][_0xf50e('0x35')]({'where':{'id':_settings[_0xf50e('0x23')]}});}})[_0xf50e('0x17')](function(_0x5cd1c0){if(!_0x5cd1c0){throw new db[(_0xf50e('0x20'))][(_0xf50e('0x21'))](_0xf50e('0x29'));}if(!_0x5cd1c0[_0xf50e('0xd')]||!_0x5cd1c0['data2']){throw new db[(_0xf50e('0x20'))][(_0xf50e('0x21'))]('Cloud\x20Provider\x20not\x20configured');}_0xebfc4e=_0x5cd1c0;logger[_0xf50e('0x15')](util[_0xf50e('0xa')](_0xf50e('0x36'),_0x3ba559['id']));return sentiment(_0xebfc4e[_0xf50e('0xd')],_0xebfc4e[_0xf50e('0x2a')],_0x15a611['sentimentRegion'],_0x3ba559['fileText'],_0x15a611[_0xf50e('0x25')]);})[_0xf50e('0x17')](function(_0x55d7e5){logger[_0xf50e('0x15')](util['format'](_0xf50e('0x2b'),_0x3ba559['id']));return _0x3ba559[_0xf50e('0x1d')]({'sentiment':_0x55d7e5[_0xf50e('0x37')],'sPositive':_0x55d7e5['SentimentScore'][_0xf50e('0x2c')],'sNegative':_0x55d7e5[_0xf50e('0x2d')][_0xf50e('0x38')],'sMixed':_0x55d7e5[_0xf50e('0x2d')][_0xf50e('0x2e')],'sNeutral':_0x55d7e5[_0xf50e('0x2d')]['Neutral'],'transcribeStatus':'COMPLETED'});})[_0xf50e('0x17')](function(){logger['info'](util[_0xf50e('0xa')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x3ba559['id']));_0x594a25();});}})[_0xf50e('0x39')](function(_0x249c28){if(_0x249c28){if(!_0x249c28['name']||_0x249c28[_0xf50e('0x3a')]!==_0xf50e('0x3b')){logger[_0xf50e('0x3c')](util[_0xf50e('0xa')](_0xf50e('0x3d'),_0x3ba559['id']),util[_0xf50e('0x3e')](_0x249c28,{'showHidden':![],'depth':null}));}}_0x594a25();});});}function checkTranscribe(){var _0x3acbe4;var _0xc8c13e;var _0x5c752c;return db[_0xf50e('0x3f')][_0xf50e('0x40')]({'where':{'transcribeStatus':_0xf50e('0x41')}})[_0xf50e('0x17')](function(_0x225863){if(!_0x225863||!_0x225863['length']){throw new db[(_0xf50e('0x20'))][(_0xf50e('0x21'))](_0xf50e('0x42'));}_0x3acbe4=_0x225863;return db[_0xf50e('0x43')][_0xf50e('0x35')]({'where':{'id':0x1}});})['then'](function(_0x144609){if(!_0x144609){throw new db[(_0xf50e('0x20'))][(_0xf50e('0x21'))](_0xf50e('0x44'));}_0xc8c13e=_0x144609;if(!_0xc8c13e['transcribe']||!_0xc8c13e[_0xf50e('0x45')]||!_0xc8c13e[_0xf50e('0xe')]||!_0xc8c13e[_0xf50e('0x25')]||!_0xc8c13e[_0xf50e('0x26')]){throw new db['Sequelize'][(_0xf50e('0x21'))](_0xf50e('0x46'));}return db[_0xf50e('0x47')][_0xf50e('0x35')]({'where':{'id':_0xc8c13e[_0xf50e('0x45')]}});})['then'](function(_0x37f1da){if(!_0x37f1da){throw new db['Sequelize']['ValidationError']('Cloud\x20Provider\x20not\x20available');}if(!_0x37f1da['data1']||!_0x37f1da[_0xf50e('0x2a')]){throw new db[(_0xf50e('0x20'))][(_0xf50e('0x21'))](_0xf50e('0x48'));}_0x5c752c=_0x37f1da;var _0x840fa6=[];_0x3acbe4[_0xf50e('0x49')](function(_0x46b0c6){_0x840fa6[_0xf50e('0x4a')](checkTranscribeJob(_0x46b0c6,_0xc8c13e,_0x5c752c));});return BPromise[_0xf50e('0x4b')](_0x840fa6);})[_0xf50e('0x39')](function(_0x56a01a){if(_0x56a01a){if(!_0x56a01a[_0xf50e('0x3a')]||_0x56a01a[_0xf50e('0x3a')]!==_0xf50e('0x3b')){logger['error'](util[_0xf50e('0x3e')](_0x56a01a,{'showHidden':![],'depth':null}));}}});}exports['start']=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};