Built motion from commit 994c64e1.|2.6.1
[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 _0x536f=['tempSentiment','Sequelize','Sentiment\x20Analysis\x20not\x20requested','sentimentAccountId','sentimentRegion','language','bucket','ValidationError','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available','CloudProvider','findOne','Cloud\x20Provider\x20not\x20available','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','Sentiment','SentimentScore','Positive','Negative','FAILED','FailureReason','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','sentiment','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Mixed','Neutral','catch','name','SequelizeValidationError','error','inspect','VoiceRecording','findAll','IN_PROGRESS','No\x20transcribe\x20job\x20to\x20check','Settings\x20not\x20available','transcribeAccountId','Transcribe\x20not\x20configured','all','start','lodash','../../mysqldb','../../config/logger','transcribe','Comprehend','detectSentiment','substring','info','format','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeName','data1','data2','transcribeRegion','then','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJob','TranscriptionJobStatus','fileText','COMPLETED','Transcript','[RECORDING:%d]\x20Get\x20transcript','TranscriptFileUri','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','transcript','update','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated'];(function(_0x3e82ad,_0x58b591){var _0xcbff22=function(_0x5412c7){while(--_0x5412c7){_0x3e82ad['push'](_0x3e82ad['shift']());}};_0xcbff22(++_0x58b591);}(_0x536f,0x70));var _0xf536=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x536f[_0x20a584];return _0x4b41a8;};var _=require(_0xf536('0x0'));var AWS=require('aws-sdk');var rp=require('request-promise');var util=require('util');var BPromise=require('bluebird');var db=require(_0xf536('0x1'))['db'];var logger=require(_0xf536('0x2'))(_0xf536('0x3'));function getTranscriptionJob(_0x29426d,_0x52bead,_0x1560d8,_0x4e90e2){return new Promise(function(_0xbe060e,_0x7e339b){var _0x2fc517=new AWS['TranscribeService']({'accessKeyId':_0x52bead,'secretAccessKey':_0x29426d,'region':_0x1560d8});_0x2fc517['getTranscriptionJob']({'TranscriptionJobName':_0x4e90e2},function(_0x3b5191,_0x422541){if(_0x3b5191){return _0x7e339b(_0x3b5191);}else{return _0xbe060e(_0x422541);}});});}function sentiment(_0x2f5b45,_0x12673f,_0x4f2eaf,_0x4e7088,_0xbfbdfc){return new Promise(function(_0x1e0ebc,_0x550a82){var _0x4868bd=new AWS[(_0xf536('0x4'))]({'accessKeyId':_0x12673f,'secretAccessKey':_0x2f5b45,'region':_0x4f2eaf});_0x4868bd[_0xf536('0x5')]({'Text':_0x4e7088,'LanguageCode':_0xbfbdfc[_0xf536('0x6')](0x0,0x2)},function(_0x20da1d,_0x204a7f){if(_0x20da1d){return _0x550a82(_0x20da1d);}else{return _0x1e0ebc(_0x204a7f);}});});}function checkTranscribeJob(_0x507632,_0x398700,_0x539d44){var _0x146970;return new BPromise(function(_0xd76d38,_0x11136e){logger[_0xf536('0x7')](util[_0xf536('0x8')](_0xf536('0x9'),_0x507632['id'],_0x507632[_0xf536('0xa')]));return getTranscriptionJob(_0x539d44[_0xf536('0xb')],_0x539d44[_0xf536('0xc')],_0x398700[_0xf536('0xd')],_0x507632[_0xf536('0xa')])[_0xf536('0xe')](function(_0x5cf70d){logger[_0xf536('0x7')](util['format'](_0xf536('0xf'),_0x507632['id'],_0x507632['transcribeName'],_0x5cf70d[_0xf536('0x10')][_0xf536('0x11')]));if(!_0x507632[_0xf536('0x12')]){switch(_0x5cf70d[_0xf536('0x10')][_0xf536('0x11')]){case _0xf536('0x13'):var _0x271e4d={'transcribeStatus':_0x5cf70d[_0xf536('0x10')]['TranscriptionJobStatus'],'fileUri':_0x5cf70d[_0xf536('0x10')][_0xf536('0x14')]['TranscriptFileUri']};logger['info'](util[_0xf536('0x8')](_0xf536('0x15'),_0x507632['id']));return rp({'uri':_0x5cf70d[_0xf536('0x10')][_0xf536('0x14')][_0xf536('0x16')],'json':!![]})[_0xf536('0xe')](function(_0x2b850a){logger[_0xf536('0x7')](util[_0xf536('0x8')](_0xf536('0x17'),_0x507632['id']));if(_0x2b850a&&_0x2b850a['results']&&_0x2b850a[_0xf536('0x18')][_0xf536('0x19')]&&_0x2b850a['results'][_0xf536('0x19')][_0xf536('0x1a')]){_0x271e4d[_0xf536('0x12')]='';for(var _0x252cae=0x0;_0x252cae<_0x2b850a[_0xf536('0x18')][_0xf536('0x19')][_0xf536('0x1a')];_0x252cae++){_0x271e4d['fileText']+=_0x2b850a[_0xf536('0x18')][_0xf536('0x19')][_0x252cae][_0xf536('0x1b')]+'';}}return _0x507632[_0xf536('0x1c')](_0x271e4d);})[_0xf536('0xe')](function(){logger['info'](util[_0xf536('0x8')](_0xf536('0x1d'),_0x507632['id']));if(!_0x507632[_0xf536('0x1e')]){throw new db[(_0xf536('0x1f'))]['ValidationError'](_0xf536('0x20'));}if(!_0x398700['sentiment']||!_0x398700[_0xf536('0x21')]||!_0x398700[_0xf536('0x22')]||!_0x398700[_0xf536('0x23')]||!_0x398700[_0xf536('0x24')]){throw new db[(_0xf536('0x1f'))][(_0xf536('0x25'))](_0xf536('0x26'));}if(!_0x271e4d[_0xf536('0x12')]){throw new Error(_0xf536('0x27'));}if(_0x398700[_0xf536('0x21')]===_0x539d44['id']){return _0x539d44;}else{return db[_0xf536('0x28')][_0xf536('0x29')]({'where':{'id':_settings['sentimentAccountId']}});}})[_0xf536('0xe')](function(_0x24634b){if(!_0x24634b){throw new db['Sequelize'][(_0xf536('0x25'))](_0xf536('0x2a'));}if(!_0x24634b['data1']||!_0x24634b[_0xf536('0xc')]){throw new db[(_0xf536('0x1f'))][(_0xf536('0x25'))](_0xf536('0x2b'));}_0x146970=_0x24634b;logger['info'](util[_0xf536('0x8')](_0xf536('0x2c'),_0x507632['id']));return sentiment(_0x146970[_0xf536('0xb')],_0x146970['data2'],_0x398700[_0xf536('0x22')],_0x271e4d[_0xf536('0x12')],_0x398700[_0xf536('0x23')]);})[_0xf536('0xe')](function(_0x6a8aab){logger['info'](util[_0xf536('0x8')]('[RECORDING:%d]\x20Sentiment\x20Analysis\x20available',_0x507632['id']));return _0x507632[_0xf536('0x1c')]({'sentiment':_0x6a8aab[_0xf536('0x2d')],'sPositive':_0x6a8aab[_0xf536('0x2e')][_0xf536('0x2f')],'sNegative':_0x6a8aab[_0xf536('0x2e')][_0xf536('0x30')],'sMixed':_0x6a8aab['SentimentScore']['Mixed'],'sNeutral':_0x6a8aab[_0xf536('0x2e')]['Neutral']});})[_0xf536('0xe')](function(){logger[_0xf536('0x7')](util['format']('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x507632['id']));_0xd76d38();});case _0xf536('0x31'):return _0x507632[_0xf536('0x1c')]({'transcribeStatus':_0xf536('0x31'),'failureReason':_0x5cf70d['TranscriptionJob'][_0xf536('0x32')]})[_0xf536('0xe')](function(){logger[_0xf536('0x7')](util[_0xf536('0x8')](_0xf536('0x1d'),_0x507632['id']));_0xd76d38();});default:logger[_0xf536('0x7')](util[_0xf536('0x8')](_0xf536('0x33'),_0x507632['id']));break;}}else{return BPromise[_0xf536('0x34')]()[_0xf536('0xe')](function(){if(!_0x507632[_0xf536('0x1e')]){throw new db[(_0xf536('0x1f'))][(_0xf536('0x25'))](_0xf536('0x20'));}if(!_0x398700[_0xf536('0x35')]||!_0x398700['sentimentAccountId']||!_0x398700[_0xf536('0x22')]||!_0x398700[_0xf536('0x23')]||!_0x398700[_0xf536('0x24')]){throw new db['Sequelize'][(_0xf536('0x25'))](_0xf536('0x26'));}if(!_0x507632[_0xf536('0x12')]){throw new Error(_0xf536('0x27'));}if(_0x398700['sentimentAccountId']===_0x539d44['id']){return _0x539d44;}else{return db[_0xf536('0x28')][_0xf536('0x29')]({'where':{'id':_settings[_0xf536('0x21')]}});}})[_0xf536('0xe')](function(_0x3386c2){if(!_0x3386c2){throw new db['Sequelize'][(_0xf536('0x25'))](_0xf536('0x2a'));}if(!_0x3386c2[_0xf536('0xb')]||!_0x3386c2['data2']){throw new db[(_0xf536('0x1f'))][(_0xf536('0x25'))](_0xf536('0x2b'));}_0x146970=_0x3386c2;logger[_0xf536('0x7')](util['format'](_0xf536('0x2c'),_0x507632['id']));return sentiment(_0x146970[_0xf536('0xb')],_0x146970[_0xf536('0xc')],_0x398700[_0xf536('0x22')],_0x507632['fileText'],_0x398700[_0xf536('0x23')]);})['then'](function(_0x47a193){logger[_0xf536('0x7')](util[_0xf536('0x8')](_0xf536('0x36'),_0x507632['id']));return _0x507632['update']({'sentiment':_0x47a193[_0xf536('0x2d')],'sPositive':_0x47a193[_0xf536('0x2e')][_0xf536('0x2f')],'sNegative':_0x47a193[_0xf536('0x2e')]['Negative'],'sMixed':_0x47a193[_0xf536('0x2e')][_0xf536('0x37')],'sNeutral':_0x47a193[_0xf536('0x2e')][_0xf536('0x38')],'transcribeStatus':_0xf536('0x13')});})['then'](function(){logger['info'](util['format'](_0xf536('0x1d'),_0x507632['id']));_0xd76d38();});}})[_0xf536('0x39')](function(_0x5ca3e2){if(_0x5ca3e2){if(!_0x5ca3e2[_0xf536('0x3a')]||_0x5ca3e2[_0xf536('0x3a')]!==_0xf536('0x3b')){logger[_0xf536('0x3c')](util['format']('[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis',_0x507632['id']),util[_0xf536('0x3d')](_0x5ca3e2,{'showHidden':![],'depth':null}));}}_0xd76d38();});});}function checkTranscribe(){var _0x485bc8;var _0x16091b;var _0x557a28;return db[_0xf536('0x3e')][_0xf536('0x3f')]({'where':{'transcribeStatus':_0xf536('0x40')}})[_0xf536('0xe')](function(_0x4796a6){if(!_0x4796a6||!_0x4796a6[_0xf536('0x1a')]){throw new db[(_0xf536('0x1f'))][(_0xf536('0x25'))](_0xf536('0x41'));}_0x485bc8=_0x4796a6;return db['Setting'][_0xf536('0x29')]({'where':{'id':0x1}});})['then'](function(_0x4d00bd){if(!_0x4d00bd){throw new db[(_0xf536('0x1f'))][(_0xf536('0x25'))](_0xf536('0x42'));}_0x16091b=_0x4d00bd;if(!_0x16091b['transcribe']||!_0x16091b[_0xf536('0x43')]||!_0x16091b[_0xf536('0xd')]||!_0x16091b[_0xf536('0x23')]||!_0x16091b[_0xf536('0x24')]){throw new db['Sequelize']['ValidationError'](_0xf536('0x44'));}return db[_0xf536('0x28')][_0xf536('0x29')]({'where':{'id':_0x16091b['transcribeAccountId']}});})['then'](function(_0x4dfa47){if(!_0x4dfa47){throw new db[(_0xf536('0x1f'))][(_0xf536('0x25'))](_0xf536('0x2a'));}if(!_0x4dfa47[_0xf536('0xb')]||!_0x4dfa47['data2']){throw new db[(_0xf536('0x1f'))]['ValidationError'](_0xf536('0x2b'));}_0x557a28=_0x4dfa47;var _0x51d146=[];_0x485bc8['forEach'](function(_0x560472){_0x51d146['push'](checkTranscribeJob(_0x560472,_0x16091b,_0x557a28));});return BPromise[_0xf536('0x45')](_0x51d146);})[_0xf536('0x39')](function(_0xb58b3a){if(_0xb58b3a){if(!_0xb58b3a['name']||_0xb58b3a[_0xf536('0x3a')]!==_0xf536('0x3b')){logger[_0xf536('0x3c')](util['inspect'](_0xb58b3a,{'showHidden':![],'depth':null}));}}});}exports[_0xf536('0x46')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};