Built motion from commit 19a84241.|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 _0x22dd=['No\x20transcribe\x20job\x20to\x20check','Setting','Settings\x20not\x20available','transcribeAccountId','forEach','push','all','catch','start','lodash','aws-sdk','request-promise','../../mysqldb','../../config/logger','transcribe','getTranscriptionJob','Comprehend','detectSentiment','substring','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','data1','transcribeRegion','then','format','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','transcribeName','TranscriptionJob','TranscriptionJobStatus','Transcript','TranscriptFileUri','info','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','fileText','length','transcript','update','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','tempSentiment','ValidationError','sentimentAccountId','sentimentRegion','language','bucket','Sequelize','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available','CloudProvider','findOne','Cloud\x20Provider\x20not\x20available','data2','Cloud\x20Provider\x20not\x20configured','Sentiment','SentimentScore','Positive','Negative','Mixed','FAILED','FailureReason','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','sentiment','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Neutral','COMPLETED','name','SequelizeValidationError','error','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','inspect','VoiceRecording','findAll'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0x22dd,0xe4));var _0xd22d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x22dd[_0x3dd15e];return _0x231fd0;};var _=require(_0xd22d('0x0'));var AWS=require(_0xd22d('0x1'));var rp=require(_0xd22d('0x2'));var util=require('util');var BPromise=require('bluebird');var db=require(_0xd22d('0x3'))['db'];var logger=require(_0xd22d('0x4'))(_0xd22d('0x5'));function getTranscriptionJob(_0x166f52,_0x26e4ba,_0x1c5cb2,_0x135142){return new Promise(function(_0x2df700,_0x3f4197){var _0x3a466f=new AWS['TranscribeService']({'accessKeyId':_0x26e4ba,'secretAccessKey':_0x166f52,'region':_0x1c5cb2});_0x3a466f[_0xd22d('0x6')]({'TranscriptionJobName':_0x135142},function(_0x3649df,_0x57fc19){if(_0x3649df){return _0x3f4197(_0x3649df);}else{return _0x2df700(_0x57fc19);}});});}function sentiment(_0xa5b71a,_0x5c90f5,_0x19064d,_0x570b8e,_0x2318ce){return new Promise(function(_0x16625a,_0x3be7da){var _0x434c35=new AWS[(_0xd22d('0x7'))]({'accessKeyId':_0x5c90f5,'secretAccessKey':_0xa5b71a,'region':_0x19064d});_0x434c35[_0xd22d('0x8')]({'Text':_0x570b8e,'LanguageCode':_0x2318ce[_0xd22d('0x9')](0x0,0x2)},function(_0xaa2978,_0x4e2fe3){if(_0xaa2978){return _0x3be7da(_0xaa2978);}else{return _0x16625a(_0x4e2fe3);}});});}function checkTranscribeJob(_0xb6df6c,_0x46f164,_0x51a8ea){var _0x38978b;return new BPromise(function(_0xf15d9,_0x565828){logger['info'](util['format'](_0xd22d('0xa'),_0xb6df6c['id'],_0xb6df6c['transcribeName']));return getTranscriptionJob(_0x51a8ea[_0xd22d('0xb')],_0x51a8ea['data2'],_0x46f164[_0xd22d('0xc')],_0xb6df6c['transcribeName'])[_0xd22d('0xd')](function(_0x377e75){logger['info'](util[_0xd22d('0xe')](_0xd22d('0xf'),_0xb6df6c['id'],_0xb6df6c[_0xd22d('0x10')],_0x377e75[_0xd22d('0x11')]['TranscriptionJobStatus']));if(!_0xb6df6c['fileText']){switch(_0x377e75[_0xd22d('0x11')]['TranscriptionJobStatus']){case'COMPLETED':var _0x5a1df4={'transcribeStatus':_0x377e75[_0xd22d('0x11')][_0xd22d('0x12')],'fileUri':_0x377e75[_0xd22d('0x11')][_0xd22d('0x13')][_0xd22d('0x14')]};logger['info'](util[_0xd22d('0xe')]('[RECORDING:%d]\x20Get\x20transcript',_0xb6df6c['id']));return rp({'uri':_0x377e75['TranscriptionJob']['Transcript'][_0xd22d('0x14')],'json':!![]})[_0xd22d('0xd')](function(_0x1ecab6){logger[_0xd22d('0x15')](util[_0xd22d('0xe')](_0xd22d('0x16'),_0xb6df6c['id']));if(_0x1ecab6&&_0x1ecab6[_0xd22d('0x17')]&&_0x1ecab6['results'][_0xd22d('0x18')]&&_0x1ecab6[_0xd22d('0x17')]['transcripts']['length']){_0x5a1df4[_0xd22d('0x19')]='';for(var _0x5a2e1a=0x0;_0x5a2e1a<_0x1ecab6['results'][_0xd22d('0x18')][_0xd22d('0x1a')];_0x5a2e1a++){_0x5a1df4[_0xd22d('0x19')]+=_0x1ecab6[_0xd22d('0x17')][_0xd22d('0x18')][_0x5a2e1a][_0xd22d('0x1b')]+'';}}return _0xb6df6c[_0xd22d('0x1c')](_0x5a1df4);})[_0xd22d('0xd')](function(){logger[_0xd22d('0x15')](util['format'](_0xd22d('0x1d'),_0xb6df6c['id']));if(!_0xb6df6c[_0xd22d('0x1e')]){throw new db['Sequelize'][(_0xd22d('0x1f'))]('Sentiment\x20Analysis\x20not\x20requested');}if(!_0x46f164['sentiment']||!_0x46f164[_0xd22d('0x20')]||!_0x46f164[_0xd22d('0x21')]||!_0x46f164[_0xd22d('0x22')]||!_0x46f164[_0xd22d('0x23')]){throw new db[(_0xd22d('0x24'))]['ValidationError'](_0xd22d('0x25'));}if(!_0x5a1df4['fileText']){throw new Error(_0xd22d('0x26'));}if(_0x46f164[_0xd22d('0x20')]===_0x51a8ea['id']){return _0x51a8ea;}else{return db[_0xd22d('0x27')][_0xd22d('0x28')]({'where':{'id':_settings[_0xd22d('0x20')]}});}})['then'](function(_0x14857c){if(!_0x14857c){throw new db[(_0xd22d('0x24'))]['ValidationError'](_0xd22d('0x29'));}if(!_0x14857c['data1']||!_0x14857c[_0xd22d('0x2a')]){throw new db[(_0xd22d('0x24'))]['ValidationError'](_0xd22d('0x2b'));}_0x38978b=_0x14857c;logger[_0xd22d('0x15')](util[_0xd22d('0xe')]('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0xb6df6c['id']));return sentiment(_0x38978b[_0xd22d('0xb')],_0x38978b['data2'],_0x46f164['sentimentRegion'],_0x5a1df4[_0xd22d('0x19')],_0x46f164['language']);})[_0xd22d('0xd')](function(_0x570b18){logger[_0xd22d('0x15')](util[_0xd22d('0xe')]('[RECORDING:%d]\x20Sentiment\x20Analysis\x20available',_0xb6df6c['id']));return _0xb6df6c['update']({'sentiment':_0x570b18[_0xd22d('0x2c')],'sPositive':_0x570b18[_0xd22d('0x2d')][_0xd22d('0x2e')],'sNegative':_0x570b18[_0xd22d('0x2d')][_0xd22d('0x2f')],'sMixed':_0x570b18[_0xd22d('0x2d')][_0xd22d('0x30')],'sNeutral':_0x570b18['SentimentScore']['Neutral']});})[_0xd22d('0xd')](function(){logger[_0xd22d('0x15')](util['format'](_0xd22d('0x1d'),_0xb6df6c['id']));_0xf15d9();});case _0xd22d('0x31'):return _0xb6df6c['update']({'transcribeStatus':'FAILED','failureReason':_0x377e75['TranscriptionJob'][_0xd22d('0x32')]})[_0xd22d('0xd')](function(){logger[_0xd22d('0x15')](util['format'](_0xd22d('0x1d'),_0xb6df6c['id']));_0xf15d9();});default:logger['info'](util['format'](_0xd22d('0x33'),_0xb6df6c['id']));break;}}else{return BPromise[_0xd22d('0x34')]()['then'](function(){if(!_0xb6df6c[_0xd22d('0x1e')]){throw new db[(_0xd22d('0x24'))][(_0xd22d('0x1f'))]('Sentiment\x20Analysis\x20not\x20requested');}if(!_0x46f164[_0xd22d('0x35')]||!_0x46f164[_0xd22d('0x20')]||!_0x46f164[_0xd22d('0x21')]||!_0x46f164[_0xd22d('0x22')]||!_0x46f164[_0xd22d('0x23')]){throw new db[(_0xd22d('0x24'))][(_0xd22d('0x1f'))](_0xd22d('0x25'));}if(!_0xb6df6c['fileText']){throw new Error(_0xd22d('0x26'));}if(_0x46f164[_0xd22d('0x20')]===_0x51a8ea['id']){return _0x51a8ea;}else{return db[_0xd22d('0x27')][_0xd22d('0x28')]({'where':{'id':_settings['sentimentAccountId']}});}})[_0xd22d('0xd')](function(_0x38a2bd){if(!_0x38a2bd){throw new db['Sequelize'][(_0xd22d('0x1f'))](_0xd22d('0x29'));}if(!_0x38a2bd[_0xd22d('0xb')]||!_0x38a2bd[_0xd22d('0x2a')]){throw new db[(_0xd22d('0x24'))][(_0xd22d('0x1f'))](_0xd22d('0x2b'));}_0x38978b=_0x38a2bd;logger['info'](util[_0xd22d('0xe')]('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0xb6df6c['id']));return sentiment(_0x38978b[_0xd22d('0xb')],_0x38978b[_0xd22d('0x2a')],_0x46f164[_0xd22d('0x21')],_0xb6df6c[_0xd22d('0x19')],_0x46f164['language']);})[_0xd22d('0xd')](function(_0x24557e){logger['info'](util[_0xd22d('0xe')](_0xd22d('0x36'),_0xb6df6c['id']));return _0xb6df6c[_0xd22d('0x1c')]({'sentiment':_0x24557e['Sentiment'],'sPositive':_0x24557e[_0xd22d('0x2d')][_0xd22d('0x2e')],'sNegative':_0x24557e[_0xd22d('0x2d')][_0xd22d('0x2f')],'sMixed':_0x24557e[_0xd22d('0x2d')]['Mixed'],'sNeutral':_0x24557e[_0xd22d('0x2d')][_0xd22d('0x37')],'transcribeStatus':_0xd22d('0x38')});})[_0xd22d('0xd')](function(){logger[_0xd22d('0x15')](util[_0xd22d('0xe')](_0xd22d('0x1d'),_0xb6df6c['id']));_0xf15d9();});}})['catch'](function(_0x57d1d){if(_0x57d1d){if(!_0x57d1d[_0xd22d('0x39')]||_0x57d1d[_0xd22d('0x39')]!==_0xd22d('0x3a')){logger[_0xd22d('0x3b')](util['format'](_0xd22d('0x3c'),_0xb6df6c['id']),util[_0xd22d('0x3d')](_0x57d1d,{'showHidden':![],'depth':null}));}}_0xf15d9();});});}function checkTranscribe(){var _0x43c163;var _0x2f49da;var _0x1ac8e9;return db[_0xd22d('0x3e')][_0xd22d('0x3f')]({'where':{'transcribeStatus':'IN_PROGRESS'}})['then'](function(_0x5adc42){if(!_0x5adc42||!_0x5adc42[_0xd22d('0x1a')]){throw new db[(_0xd22d('0x24'))]['ValidationError'](_0xd22d('0x40'));}_0x43c163=_0x5adc42;return db[_0xd22d('0x41')][_0xd22d('0x28')]({'where':{'id':0x1}});})[_0xd22d('0xd')](function(_0x125b86){if(!_0x125b86){throw new db[(_0xd22d('0x24'))]['ValidationError'](_0xd22d('0x42'));}_0x2f49da=_0x125b86;if(!_0x2f49da['transcribe']||!_0x2f49da[_0xd22d('0x43')]||!_0x2f49da[_0xd22d('0xc')]||!_0x2f49da[_0xd22d('0x22')]||!_0x2f49da['bucket']){throw new db[(_0xd22d('0x24'))][(_0xd22d('0x1f'))]('Transcribe\x20not\x20configured');}return db['CloudProvider'][_0xd22d('0x28')]({'where':{'id':_0x2f49da[_0xd22d('0x43')]}});})[_0xd22d('0xd')](function(_0x577870){if(!_0x577870){throw new db[(_0xd22d('0x24'))][(_0xd22d('0x1f'))](_0xd22d('0x29'));}if(!_0x577870[_0xd22d('0xb')]||!_0x577870[_0xd22d('0x2a')]){throw new db[(_0xd22d('0x24'))][(_0xd22d('0x1f'))](_0xd22d('0x2b'));}_0x1ac8e9=_0x577870;var _0x2bccea=[];_0x43c163[_0xd22d('0x44')](function(_0x4c78a8){_0x2bccea[_0xd22d('0x45')](checkTranscribeJob(_0x4c78a8,_0x2f49da,_0x1ac8e9));});return BPromise[_0xd22d('0x46')](_0x2bccea);})[_0xd22d('0x47')](function(_0x39d9c0){if(_0x39d9c0){if(!_0x39d9c0[_0xd22d('0x39')]||_0x39d9c0['name']!==_0xd22d('0x3a')){logger[_0xd22d('0x3b')](util[_0xd22d('0x3d')](_0x39d9c0,{'showHidden':![],'depth':null}));}}});}exports[_0xd22d('0x48')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};