17c7076898e52bb3b96869e738c68118e4e0e93d
[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 _0x98d8=['data2','then','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJob','TranscriptionJobStatus','fileText','COMPLETED','Transcript','TranscriptFileUri','[RECORDING:%d]\x20Get\x20transcript','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','transcript','update','tempSentiment','Sequelize','ValidationError','Sentiment\x20Analysis\x20not\x20requested','sentiment','sentimentAccountId','language','bucket','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available','Cloud\x20Provider\x20not\x20available','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','sentimentRegion','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Sentiment','SentimentScore','Positive','Negative','Mixed','Neutral','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','FAILED','FailureReason','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','CloudProvider','findOne','name','SequelizeValidationError','error','inspect','VoiceRecording','findAll','IN_PROGRESS','No\x20transcribe\x20job\x20to\x20check','Setting','Settings\x20not\x20available','transcribeAccountId','transcribeRegion','forEach','push','lodash','aws-sdk','request-promise','util','bluebird','../../mysqldb','../../config/logger','getTranscriptionJob','Comprehend','detectSentiment','substring','info','format','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeName','data1'];(function(_0x4c6306,_0x23a357){var _0x19c3d3=function(_0x17ccb8){while(--_0x17ccb8){_0x4c6306['push'](_0x4c6306['shift']());}};_0x19c3d3(++_0x23a357);}(_0x98d8,0xce));var _0x898d=function(_0x10e3f7,_0x353b97){_0x10e3f7=_0x10e3f7-0x0;var _0x3ee398=_0x98d8[_0x10e3f7];return _0x3ee398;};var _=require(_0x898d('0x0'));var AWS=require(_0x898d('0x1'));var rp=require(_0x898d('0x2'));var util=require(_0x898d('0x3'));var BPromise=require(_0x898d('0x4'));var db=require(_0x898d('0x5'))['db'];var logger=require(_0x898d('0x6'))('transcribe');function getTranscriptionJob(_0x4c1cf8,_0x1058e7,_0x480dd9,_0x4a1bc3){return new Promise(function(_0x4047bd,_0x5215bf){var _0x16b99a=new AWS['TranscribeService']({'accessKeyId':_0x1058e7,'secretAccessKey':_0x4c1cf8,'region':_0x480dd9});_0x16b99a[_0x898d('0x7')]({'TranscriptionJobName':_0x4a1bc3},function(_0x4fe1bf,_0x3e9ba6){if(_0x4fe1bf){return _0x5215bf(_0x4fe1bf);}else{return _0x4047bd(_0x3e9ba6);}});});}function sentiment(_0xabfc6e,_0x2fedc8,_0x40f217,_0x5cbe58,_0x3c0a37){return new Promise(function(_0x230481,_0x3d2669){var _0x316b5a=new AWS[(_0x898d('0x8'))]({'accessKeyId':_0x2fedc8,'secretAccessKey':_0xabfc6e,'region':_0x40f217});_0x316b5a[_0x898d('0x9')]({'Text':_0x5cbe58,'LanguageCode':_0x3c0a37[_0x898d('0xa')](0x0,0x2)},function(_0x4742c1,_0x27b9df){if(_0x4742c1){return _0x3d2669(_0x4742c1);}else{return _0x230481(_0x27b9df);}});});}function checkTranscribeJob(_0x14767e,_0x53d7d2,_0x182067){var _0x2f0844;return new BPromise(function(_0x4aea8e,_0x29c083){logger[_0x898d('0xb')](util[_0x898d('0xc')](_0x898d('0xd'),_0x14767e['id'],_0x14767e[_0x898d('0xe')]));return getTranscriptionJob(_0x182067[_0x898d('0xf')],_0x182067[_0x898d('0x10')],_0x53d7d2['transcribeRegion'],_0x14767e[_0x898d('0xe')])[_0x898d('0x11')](function(_0x5deafe){logger['info'](util[_0x898d('0xc')](_0x898d('0x12'),_0x14767e['id'],_0x14767e[_0x898d('0xe')],_0x5deafe[_0x898d('0x13')][_0x898d('0x14')]));if(!_0x14767e[_0x898d('0x15')]){switch(_0x5deafe['TranscriptionJob']['TranscriptionJobStatus']){case _0x898d('0x16'):var _0x3d040a={'transcribeStatus':_0x5deafe[_0x898d('0x13')][_0x898d('0x14')],'fileUri':_0x5deafe[_0x898d('0x13')][_0x898d('0x17')][_0x898d('0x18')]};logger[_0x898d('0xb')](util[_0x898d('0xc')](_0x898d('0x19'),_0x14767e['id']));return rp({'uri':_0x5deafe[_0x898d('0x13')]['Transcript'][_0x898d('0x18')],'json':!![]})[_0x898d('0x11')](function(_0x7113ca){logger['info'](util['format'](_0x898d('0x1a'),_0x14767e['id']));if(_0x7113ca&&_0x7113ca[_0x898d('0x1b')]&&_0x7113ca[_0x898d('0x1b')][_0x898d('0x1c')]&&_0x7113ca[_0x898d('0x1b')][_0x898d('0x1c')][_0x898d('0x1d')]){_0x3d040a[_0x898d('0x15')]='';for(var _0x30c415=0x0;_0x30c415<_0x7113ca['results']['transcripts'][_0x898d('0x1d')];_0x30c415++){_0x3d040a[_0x898d('0x15')]+=_0x7113ca[_0x898d('0x1b')][_0x898d('0x1c')][_0x30c415][_0x898d('0x1e')]+'';}}return _0x14767e[_0x898d('0x1f')](_0x3d040a);})[_0x898d('0x11')](function(){logger['info'](util[_0x898d('0xc')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x14767e['id']));if(!_0x14767e[_0x898d('0x20')]){throw new db[(_0x898d('0x21'))][(_0x898d('0x22'))](_0x898d('0x23'));}if(!_0x53d7d2[_0x898d('0x24')]||!_0x53d7d2[_0x898d('0x25')]||!_0x53d7d2['sentimentRegion']||!_0x53d7d2[_0x898d('0x26')]||!_0x53d7d2[_0x898d('0x27')]){throw new db[(_0x898d('0x21'))]['ValidationError'](_0x898d('0x28'));}if(!_0x3d040a[_0x898d('0x15')]){throw new Error(_0x898d('0x29'));}if(_0x53d7d2[_0x898d('0x25')]===_0x182067['id']){return _0x182067;}else{return db['CloudProvider']['findOne']({'where':{'id':_settings['sentimentAccountId']}});}})[_0x898d('0x11')](function(_0x41e979){if(!_0x41e979){throw new db[(_0x898d('0x21'))]['ValidationError'](_0x898d('0x2a'));}if(!_0x41e979[_0x898d('0xf')]||!_0x41e979[_0x898d('0x10')]){throw new db[(_0x898d('0x21'))]['ValidationError'](_0x898d('0x2b'));}_0x2f0844=_0x41e979;logger['info'](util[_0x898d('0xc')](_0x898d('0x2c'),_0x14767e['id']));return sentiment(_0x2f0844[_0x898d('0xf')],_0x2f0844[_0x898d('0x10')],_0x53d7d2[_0x898d('0x2d')],_0x3d040a['fileText'],_0x53d7d2['language']);})[_0x898d('0x11')](function(_0x1628e5){logger['info'](util[_0x898d('0xc')](_0x898d('0x2e'),_0x14767e['id']));return _0x14767e[_0x898d('0x1f')]({'sentiment':_0x1628e5[_0x898d('0x2f')],'sPositive':_0x1628e5[_0x898d('0x30')][_0x898d('0x31')],'sNegative':_0x1628e5['SentimentScore'][_0x898d('0x32')],'sMixed':_0x1628e5[_0x898d('0x30')][_0x898d('0x33')],'sNeutral':_0x1628e5['SentimentScore'][_0x898d('0x34')]});})[_0x898d('0x11')](function(){logger[_0x898d('0xb')](util['format'](_0x898d('0x35'),_0x14767e['id']));_0x4aea8e();});case _0x898d('0x36'):return _0x14767e[_0x898d('0x1f')]({'transcribeStatus':_0x898d('0x36'),'failureReason':_0x5deafe[_0x898d('0x13')][_0x898d('0x37')]})[_0x898d('0x11')](function(){logger['info'](util['format'](_0x898d('0x35'),_0x14767e['id']));_0x4aea8e();});default:logger[_0x898d('0xb')](util['format'](_0x898d('0x38'),_0x14767e['id']));break;}}else{return BPromise[_0x898d('0x39')]()[_0x898d('0x11')](function(){if(!_0x14767e[_0x898d('0x20')]){throw new db[(_0x898d('0x21'))][(_0x898d('0x22'))](_0x898d('0x23'));}if(!_0x53d7d2[_0x898d('0x24')]||!_0x53d7d2[_0x898d('0x25')]||!_0x53d7d2[_0x898d('0x2d')]||!_0x53d7d2[_0x898d('0x26')]||!_0x53d7d2[_0x898d('0x27')]){throw new db[(_0x898d('0x21'))][(_0x898d('0x22'))]('Sentiment\x20Analysis\x20not\x20configured');}if(!_0x14767e[_0x898d('0x15')]){throw new Error(_0x898d('0x29'));}if(_0x53d7d2['sentimentAccountId']===_0x182067['id']){return _0x182067;}else{return db[_0x898d('0x3a')][_0x898d('0x3b')]({'where':{'id':_settings['sentimentAccountId']}});}})[_0x898d('0x11')](function(_0xb6d19c){if(!_0xb6d19c){throw new db[(_0x898d('0x21'))][(_0x898d('0x22'))](_0x898d('0x2a'));}if(!_0xb6d19c['data1']||!_0xb6d19c[_0x898d('0x10')]){throw new db[(_0x898d('0x21'))][(_0x898d('0x22'))](_0x898d('0x2b'));}_0x2f0844=_0xb6d19c;logger[_0x898d('0xb')](util[_0x898d('0xc')](_0x898d('0x2c'),_0x14767e['id']));return sentiment(_0x2f0844[_0x898d('0xf')],_0x2f0844['data2'],_0x53d7d2[_0x898d('0x2d')],_0x14767e['fileText'],_0x53d7d2[_0x898d('0x26')]);})[_0x898d('0x11')](function(_0x594b4c){logger[_0x898d('0xb')](util[_0x898d('0xc')](_0x898d('0x2e'),_0x14767e['id']));return _0x14767e[_0x898d('0x1f')]({'sentiment':_0x594b4c[_0x898d('0x2f')],'sPositive':_0x594b4c[_0x898d('0x30')][_0x898d('0x31')],'sNegative':_0x594b4c[_0x898d('0x30')][_0x898d('0x32')],'sMixed':_0x594b4c[_0x898d('0x30')][_0x898d('0x33')],'sNeutral':_0x594b4c[_0x898d('0x30')][_0x898d('0x34')],'transcribeStatus':_0x898d('0x16')});})[_0x898d('0x11')](function(){logger[_0x898d('0xb')](util['format'](_0x898d('0x35'),_0x14767e['id']));_0x4aea8e();});}})['catch'](function(_0x1f91ad){if(_0x1f91ad){if(!_0x1f91ad[_0x898d('0x3c')]||_0x1f91ad[_0x898d('0x3c')]!==_0x898d('0x3d')){logger[_0x898d('0x3e')](util[_0x898d('0xc')]('[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis',_0x14767e['id']),util[_0x898d('0x3f')](_0x1f91ad,{'showHidden':![],'depth':null}));}}_0x4aea8e();});});}function checkTranscribe(){var _0x12b03d;var _0x13e7a4;var _0x13f169;return db[_0x898d('0x40')][_0x898d('0x41')]({'where':{'transcribeStatus':_0x898d('0x42')}})[_0x898d('0x11')](function(_0xcddca8){if(!_0xcddca8||!_0xcddca8['length']){throw new db['Sequelize']['ValidationError'](_0x898d('0x43'));}_0x12b03d=_0xcddca8;return db[_0x898d('0x44')][_0x898d('0x3b')]({'where':{'id':0x1}});})[_0x898d('0x11')](function(_0x5ec4d6){if(!_0x5ec4d6){throw new db[(_0x898d('0x21'))]['ValidationError'](_0x898d('0x45'));}_0x13e7a4=_0x5ec4d6;if(!_0x13e7a4['transcribe']||!_0x13e7a4[_0x898d('0x46')]||!_0x13e7a4[_0x898d('0x47')]||!_0x13e7a4['language']||!_0x13e7a4[_0x898d('0x27')]){throw new db[(_0x898d('0x21'))][(_0x898d('0x22'))]('Transcribe\x20not\x20configured');}return db[_0x898d('0x3a')][_0x898d('0x3b')]({'where':{'id':_0x13e7a4[_0x898d('0x46')]}});})[_0x898d('0x11')](function(_0x47d0e6){if(!_0x47d0e6){throw new db['Sequelize'][(_0x898d('0x22'))](_0x898d('0x2a'));}if(!_0x47d0e6[_0x898d('0xf')]||!_0x47d0e6[_0x898d('0x10')]){throw new db['Sequelize'][(_0x898d('0x22'))]('Cloud\x20Provider\x20not\x20configured');}_0x13f169=_0x47d0e6;var _0x4d634a=[];_0x12b03d[_0x898d('0x48')](function(_0x146c3c){_0x4d634a[_0x898d('0x49')](checkTranscribeJob(_0x146c3c,_0x13e7a4,_0x13f169));});return BPromise['all'](_0x4d634a);})['catch'](function(_0x533077){if(_0x533077){if(!_0x533077[_0x898d('0x3c')]||_0x533077[_0x898d('0x3c')]!==_0x898d('0x3d')){logger[_0x898d('0x3e')](util[_0x898d('0x3f')](_0x533077,{'showHidden':![],'depth':null}));}}});}exports['start']=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};