c93bde4d3490c64ddcf6893e1856aff87659c1fb
[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 _0x49aa=['inspect','VoiceRecording','findAll','IN_PROGRESS','Setting','Settings\x20not\x20available','transcribeAccountId','push','all','catch','start','lodash','aws-sdk','request-promise','bluebird','../../mysqldb','../../config/logger','transcribe','TranscribeService','Comprehend','detectSentiment','substring','info','format','transcribeName','data1','data2','transcribeRegion','then','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJob','TranscriptionJobStatus','fileText','COMPLETED','Transcript','TranscriptFileUri','results','transcripts','length','transcript','update','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','tempSentiment','Sequelize','Sentiment\x20Analysis\x20not\x20requested','sentiment','sentimentAccountId','sentimentRegion','language','bucket','ValidationError','Sentiment\x20Analysis\x20not\x20configured','CloudProvider','Cloud\x20Provider\x20not\x20available','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Sentiment','SentimentScore','Positive','Negative','Mixed','FAILED','FailureReason','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','Transcript\x20not\x20available','findOne','Neutral','name','SequelizeValidationError','error','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis'];(function(_0x4d2d5c,_0x2171d9){var _0x2b2eb5=function(_0x2bd636){while(--_0x2bd636){_0x4d2d5c['push'](_0x4d2d5c['shift']());}};_0x2b2eb5(++_0x2171d9);}(_0x49aa,0x173));var _0xa49a=function(_0x1393b7,_0x53caed){_0x1393b7=_0x1393b7-0x0;var _0x369bcc=_0x49aa[_0x1393b7];return _0x369bcc;};var _=require(_0xa49a('0x0'));var AWS=require(_0xa49a('0x1'));var rp=require(_0xa49a('0x2'));var util=require('util');var BPromise=require(_0xa49a('0x3'));var db=require(_0xa49a('0x4'))['db'];var logger=require(_0xa49a('0x5'))(_0xa49a('0x6'));function getTranscriptionJob(_0x336285,_0x3a7eb2,_0x50e487,_0xa48025){return new Promise(function(_0x3889ad,_0x3a2283){var _0x40ea52=new AWS[(_0xa49a('0x7'))]({'accessKeyId':_0x3a7eb2,'secretAccessKey':_0x336285,'region':_0x50e487});_0x40ea52['getTranscriptionJob']({'TranscriptionJobName':_0xa48025},function(_0x5f2fa4,_0x4aef33){if(_0x5f2fa4){return _0x3a2283(_0x5f2fa4);}else{return _0x3889ad(_0x4aef33);}});});}function sentiment(_0x38b9b0,_0x4d7922,_0x76de4c,_0x2a576d,_0x2d618b){return new Promise(function(_0x4dd843,_0x316e34){var _0x23ce0f=new AWS[(_0xa49a('0x8'))]({'accessKeyId':_0x4d7922,'secretAccessKey':_0x38b9b0,'region':_0x76de4c});_0x23ce0f[_0xa49a('0x9')]({'Text':_0x2a576d,'LanguageCode':_0x2d618b[_0xa49a('0xa')](0x0,0x2)},function(_0x1d7440,_0x19c830){if(_0x1d7440){return _0x316e34(_0x1d7440);}else{return _0x4dd843(_0x19c830);}});});}function checkTranscribeJob(_0x5a76cc,_0x36d1af,_0x355785){var _0x1755ad;return new BPromise(function(_0x406e6c,_0x404604){logger[_0xa49a('0xb')](util[_0xa49a('0xc')]('[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)',_0x5a76cc['id'],_0x5a76cc[_0xa49a('0xd')]));return getTranscriptionJob(_0x355785[_0xa49a('0xe')],_0x355785[_0xa49a('0xf')],_0x36d1af[_0xa49a('0x10')],_0x5a76cc['transcribeName'])[_0xa49a('0x11')](function(_0x70baa6){logger['info'](util[_0xa49a('0xc')](_0xa49a('0x12'),_0x5a76cc['id'],_0x5a76cc['transcribeName'],_0x70baa6[_0xa49a('0x13')][_0xa49a('0x14')]));if(!_0x5a76cc[_0xa49a('0x15')]){switch(_0x70baa6['TranscriptionJob']['TranscriptionJobStatus']){case _0xa49a('0x16'):var _0x9408c4={'transcribeStatus':_0x70baa6[_0xa49a('0x13')][_0xa49a('0x14')],'fileUri':_0x70baa6[_0xa49a('0x13')][_0xa49a('0x17')][_0xa49a('0x18')]};logger[_0xa49a('0xb')](util[_0xa49a('0xc')]('[RECORDING:%d]\x20Get\x20transcript',_0x5a76cc['id']));return rp({'uri':_0x70baa6[_0xa49a('0x13')][_0xa49a('0x17')][_0xa49a('0x18')],'json':!![]})['then'](function(_0x1b9029){logger['info'](util[_0xa49a('0xc')]('[RECORDING:%d]\x20Transcript\x20downloaded',_0x5a76cc['id']));if(_0x1b9029&&_0x1b9029[_0xa49a('0x19')]&&_0x1b9029[_0xa49a('0x19')][_0xa49a('0x1a')]&&_0x1b9029[_0xa49a('0x19')][_0xa49a('0x1a')][_0xa49a('0x1b')]){_0x9408c4['fileText']='';for(var _0x16a35a=0x0;_0x16a35a<_0x1b9029[_0xa49a('0x19')]['transcripts'][_0xa49a('0x1b')];_0x16a35a++){_0x9408c4[_0xa49a('0x15')]+=_0x1b9029[_0xa49a('0x19')]['transcripts'][_0x16a35a][_0xa49a('0x1c')]+'';}}return _0x5a76cc[_0xa49a('0x1d')](_0x9408c4);})[_0xa49a('0x11')](function(){logger['info'](util[_0xa49a('0xc')](_0xa49a('0x1e'),_0x5a76cc['id']));if(!_0x5a76cc[_0xa49a('0x1f')]){throw new db[(_0xa49a('0x20'))]['ValidationError'](_0xa49a('0x21'));}if(!_0x36d1af[_0xa49a('0x22')]||!_0x36d1af[_0xa49a('0x23')]||!_0x36d1af[_0xa49a('0x24')]||!_0x36d1af[_0xa49a('0x25')]||!_0x36d1af[_0xa49a('0x26')]){throw new db['Sequelize'][(_0xa49a('0x27'))](_0xa49a('0x28'));}if(!_0x9408c4[_0xa49a('0x15')]){throw new Error('Transcript\x20not\x20available');}if(_0x36d1af[_0xa49a('0x23')]===_0x355785['id']){return _0x355785;}else{return db[_0xa49a('0x29')]['findOne']({'where':{'id':_settings['sentimentAccountId']}});}})[_0xa49a('0x11')](function(_0x1ebca4){if(!_0x1ebca4){throw new db['Sequelize'][(_0xa49a('0x27'))](_0xa49a('0x2a'));}if(!_0x1ebca4['data1']||!_0x1ebca4[_0xa49a('0xf')]){throw new db[(_0xa49a('0x20'))][(_0xa49a('0x27'))](_0xa49a('0x2b'));}_0x1755ad=_0x1ebca4;logger[_0xa49a('0xb')](util['format'](_0xa49a('0x2c'),_0x5a76cc['id']));return sentiment(_0x1755ad['data1'],_0x1755ad[_0xa49a('0xf')],_0x36d1af[_0xa49a('0x24')],_0x9408c4[_0xa49a('0x15')],_0x36d1af[_0xa49a('0x25')]);})[_0xa49a('0x11')](function(_0x1e7606){logger[_0xa49a('0xb')](util[_0xa49a('0xc')](_0xa49a('0x2d'),_0x5a76cc['id']));return _0x5a76cc[_0xa49a('0x1d')]({'sentiment':_0x1e7606[_0xa49a('0x2e')],'sPositive':_0x1e7606[_0xa49a('0x2f')][_0xa49a('0x30')],'sNegative':_0x1e7606[_0xa49a('0x2f')][_0xa49a('0x31')],'sMixed':_0x1e7606['SentimentScore'][_0xa49a('0x32')],'sNeutral':_0x1e7606[_0xa49a('0x2f')]['Neutral']});})[_0xa49a('0x11')](function(){logger[_0xa49a('0xb')](util[_0xa49a('0xc')](_0xa49a('0x1e'),_0x5a76cc['id']));_0x406e6c();});case _0xa49a('0x33'):return _0x5a76cc[_0xa49a('0x1d')]({'transcribeStatus':_0xa49a('0x33'),'failureReason':_0x70baa6[_0xa49a('0x13')][_0xa49a('0x34')]})[_0xa49a('0x11')](function(){logger['info'](util[_0xa49a('0xc')](_0xa49a('0x1e'),_0x5a76cc['id']));_0x406e6c();});default:logger[_0xa49a('0xb')](util[_0xa49a('0xc')](_0xa49a('0x35'),_0x5a76cc['id']));break;}}else{return BPromise['resolve']()['then'](function(){if(!_0x5a76cc[_0xa49a('0x1f')]){throw new db['Sequelize'][(_0xa49a('0x27'))]('Sentiment\x20Analysis\x20not\x20requested');}if(!_0x36d1af[_0xa49a('0x22')]||!_0x36d1af['sentimentAccountId']||!_0x36d1af[_0xa49a('0x24')]||!_0x36d1af[_0xa49a('0x25')]||!_0x36d1af['bucket']){throw new db[(_0xa49a('0x20'))][(_0xa49a('0x27'))](_0xa49a('0x28'));}if(!_0x5a76cc[_0xa49a('0x15')]){throw new Error(_0xa49a('0x36'));}if(_0x36d1af['sentimentAccountId']===_0x355785['id']){return _0x355785;}else{return db['CloudProvider'][_0xa49a('0x37')]({'where':{'id':_settings[_0xa49a('0x23')]}});}})[_0xa49a('0x11')](function(_0x277f53){if(!_0x277f53){throw new db[(_0xa49a('0x20'))]['ValidationError'](_0xa49a('0x2a'));}if(!_0x277f53[_0xa49a('0xe')]||!_0x277f53[_0xa49a('0xf')]){throw new db[(_0xa49a('0x20'))]['ValidationError'](_0xa49a('0x2b'));}_0x1755ad=_0x277f53;logger[_0xa49a('0xb')](util['format'](_0xa49a('0x2c'),_0x5a76cc['id']));return sentiment(_0x1755ad[_0xa49a('0xe')],_0x1755ad[_0xa49a('0xf')],_0x36d1af[_0xa49a('0x24')],_0x5a76cc['fileText'],_0x36d1af['language']);})['then'](function(_0x6b628e){logger['info'](util[_0xa49a('0xc')]('[RECORDING:%d]\x20Sentiment\x20Analysis\x20available',_0x5a76cc['id']));return _0x5a76cc[_0xa49a('0x1d')]({'sentiment':_0x6b628e['Sentiment'],'sPositive':_0x6b628e[_0xa49a('0x2f')][_0xa49a('0x30')],'sNegative':_0x6b628e[_0xa49a('0x2f')]['Negative'],'sMixed':_0x6b628e[_0xa49a('0x2f')]['Mixed'],'sNeutral':_0x6b628e[_0xa49a('0x2f')][_0xa49a('0x38')],'transcribeStatus':_0xa49a('0x16')});})[_0xa49a('0x11')](function(){logger[_0xa49a('0xb')](util['format'](_0xa49a('0x1e'),_0x5a76cc['id']));_0x406e6c();});}})['catch'](function(_0x4ce64f){if(_0x4ce64f){if(!_0x4ce64f[_0xa49a('0x39')]||_0x4ce64f[_0xa49a('0x39')]!==_0xa49a('0x3a')){logger[_0xa49a('0x3b')](util[_0xa49a('0xc')](_0xa49a('0x3c'),_0x5a76cc['id']),util[_0xa49a('0x3d')](_0x4ce64f,{'showHidden':![],'depth':null}));}}_0x406e6c();});});}function checkTranscribe(){var _0x50294d;var _0x2c8642;var _0x3f4ac4;return db[_0xa49a('0x3e')][_0xa49a('0x3f')]({'where':{'transcribeStatus':_0xa49a('0x40')}})[_0xa49a('0x11')](function(_0x185056){if(!_0x185056||!_0x185056['length']){throw new db['Sequelize']['ValidationError']('No\x20transcribe\x20job\x20to\x20check');}_0x50294d=_0x185056;return db[_0xa49a('0x41')][_0xa49a('0x37')]({'where':{'id':0x1}});})[_0xa49a('0x11')](function(_0xf0ae85){if(!_0xf0ae85){throw new db[(_0xa49a('0x20'))][(_0xa49a('0x27'))](_0xa49a('0x42'));}_0x2c8642=_0xf0ae85;if(!_0x2c8642[_0xa49a('0x6')]||!_0x2c8642[_0xa49a('0x43')]||!_0x2c8642[_0xa49a('0x10')]||!_0x2c8642['language']||!_0x2c8642[_0xa49a('0x26')]){throw new db[(_0xa49a('0x20'))]['ValidationError']('Transcribe\x20not\x20configured');}return db[_0xa49a('0x29')][_0xa49a('0x37')]({'where':{'id':_0x2c8642[_0xa49a('0x43')]}});})[_0xa49a('0x11')](function(_0x559c77){if(!_0x559c77){throw new db[(_0xa49a('0x20'))]['ValidationError'](_0xa49a('0x2a'));}if(!_0x559c77[_0xa49a('0xe')]||!_0x559c77['data2']){throw new db[(_0xa49a('0x20'))][(_0xa49a('0x27'))](_0xa49a('0x2b'));}_0x3f4ac4=_0x559c77;var _0x2def8f=[];_0x50294d['forEach'](function(_0x37569b){_0x2def8f[_0xa49a('0x44')](checkTranscribeJob(_0x37569b,_0x2c8642,_0x3f4ac4));});return BPromise[_0xa49a('0x45')](_0x2def8f);})[_0xa49a('0x46')](function(_0x4eb5b5){if(_0x4eb5b5){if(!_0x4eb5b5['name']||_0x4eb5b5['name']!==_0xa49a('0x3a')){logger[_0xa49a('0x3b')](util['inspect'](_0x4eb5b5,{'showHidden':![],'depth':null}));}}});}exports[_0xa49a('0x47')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};