Built motion from commit (unavailable).|2.5.15
[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 _0xbc1a=['findAll','IN_PROGRESS','No\x20transcribe\x20job\x20to\x20check','Setting','Settings\x20not\x20available','transcribeAccountId','forEach','push','lodash','util','bluebird','../../mysqldb','../../config/logger','transcribe','TranscribeService','getTranscriptionJob','Comprehend','detectSentiment','substring','info','format','transcribeName','data1','data2','transcribeRegion','TranscriptionJob','fileText','TranscriptionJobStatus','COMPLETED','Transcript','TranscriptFileUri','[RECORDING:%d]\x20Get\x20transcript','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','transcript','update','sentiment','sentimentAccountId','language','bucket','Sequelize','ValidationError','Sentiment\x20Analysis\x20not\x20configured','CloudProvider','then','Cloud\x20Provider\x20not\x20available','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','sentimentRegion','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Sentiment','Positive','SentimentScore','Negative','Mixed','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','FAILED','FailureReason','resolve','tempSentiment','Sentiment\x20Analysis\x20not\x20requested','Transcript\x20not\x20available','findOne','catch','name','SequelizeValidationError','error','inspect','VoiceRecording'];(function(_0x3a9833,_0x286806){var _0x4dd189=function(_0x178ba3){while(--_0x178ba3){_0x3a9833['push'](_0x3a9833['shift']());}};_0x4dd189(++_0x286806);}(_0xbc1a,0x1b2));var _0xabc1=function(_0x17928f,_0x4ad33f){_0x17928f=_0x17928f-0x0;var _0x500b63=_0xbc1a[_0x17928f];return _0x500b63;};var _=require(_0xabc1('0x0'));var AWS=require('aws-sdk');var rp=require('request-promise');var util=require(_0xabc1('0x1'));var BPromise=require(_0xabc1('0x2'));var db=require(_0xabc1('0x3'))['db'];var logger=require(_0xabc1('0x4'))(_0xabc1('0x5'));function getTranscriptionJob(_0x48e627,_0xb01625,_0x1a0f6a,_0x2fdc53){return new Promise(function(_0x4c2a45,_0x21ab7a){var _0x24a978=new AWS[(_0xabc1('0x6'))]({'accessKeyId':_0xb01625,'secretAccessKey':_0x48e627,'region':_0x1a0f6a});_0x24a978[_0xabc1('0x7')]({'TranscriptionJobName':_0x2fdc53},function(_0x1c38db,_0xdf4bf8){if(_0x1c38db){return _0x21ab7a(_0x1c38db);}else{return _0x4c2a45(_0xdf4bf8);}});});}function sentiment(_0x536062,_0x5d706b,_0x85df7b,_0x323430,_0x24d119){return new Promise(function(_0x3da4c1,_0x22ba0a){var _0x848b8b=new AWS[(_0xabc1('0x8'))]({'accessKeyId':_0x5d706b,'secretAccessKey':_0x536062,'region':_0x85df7b});_0x848b8b[_0xabc1('0x9')]({'Text':_0x323430,'LanguageCode':_0x24d119[_0xabc1('0xa')](0x0,0x2)},function(_0x3df817,_0x392b4e){if(_0x3df817){return _0x22ba0a(_0x3df817);}else{return _0x3da4c1(_0x392b4e);}});});}function checkTranscribeJob(_0x19c5f6,_0x3e2e6e,_0x3d4925){var _0xce938a;return new BPromise(function(_0x318920,_0x3b059a){logger[_0xabc1('0xb')](util[_0xabc1('0xc')]('[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)',_0x19c5f6['id'],_0x19c5f6[_0xabc1('0xd')]));return getTranscriptionJob(_0x3d4925[_0xabc1('0xe')],_0x3d4925[_0xabc1('0xf')],_0x3e2e6e[_0xabc1('0x10')],_0x19c5f6[_0xabc1('0xd')])['then'](function(_0x5c693b){logger[_0xabc1('0xb')](util[_0xabc1('0xc')]('[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s',_0x19c5f6['id'],_0x19c5f6[_0xabc1('0xd')],_0x5c693b[_0xabc1('0x11')]['TranscriptionJobStatus']));if(!_0x19c5f6[_0xabc1('0x12')]){switch(_0x5c693b[_0xabc1('0x11')][_0xabc1('0x13')]){case _0xabc1('0x14'):var _0x33e429={'transcribeStatus':_0x5c693b[_0xabc1('0x11')][_0xabc1('0x13')],'fileUri':_0x5c693b['TranscriptionJob'][_0xabc1('0x15')][_0xabc1('0x16')]};logger[_0xabc1('0xb')](util[_0xabc1('0xc')](_0xabc1('0x17'),_0x19c5f6['id']));return rp({'uri':_0x5c693b[_0xabc1('0x11')][_0xabc1('0x15')][_0xabc1('0x16')],'json':!![]})['then'](function(_0x507345){logger[_0xabc1('0xb')](util[_0xabc1('0xc')](_0xabc1('0x18'),_0x19c5f6['id']));if(_0x507345&&_0x507345[_0xabc1('0x19')]&&_0x507345[_0xabc1('0x19')]['transcripts']&&_0x507345[_0xabc1('0x19')][_0xabc1('0x1a')][_0xabc1('0x1b')]){_0x33e429['fileText']='';for(var _0x5d074b=0x0;_0x5d074b<_0x507345[_0xabc1('0x19')][_0xabc1('0x1a')][_0xabc1('0x1b')];_0x5d074b++){_0x33e429[_0xabc1('0x12')]+=_0x507345[_0xabc1('0x19')][_0xabc1('0x1a')][_0x5d074b][_0xabc1('0x1c')]+'';}}return _0x19c5f6[_0xabc1('0x1d')](_0x33e429);})['then'](function(){logger[_0xabc1('0xb')](util[_0xabc1('0xc')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x19c5f6['id']));if(!_0x19c5f6['tempSentiment']){throw new db['Sequelize']['ValidationError']('Sentiment\x20Analysis\x20not\x20requested');}if(!_0x3e2e6e[_0xabc1('0x1e')]||!_0x3e2e6e[_0xabc1('0x1f')]||!_0x3e2e6e['sentimentRegion']||!_0x3e2e6e[_0xabc1('0x20')]||!_0x3e2e6e[_0xabc1('0x21')]){throw new db[(_0xabc1('0x22'))][(_0xabc1('0x23'))](_0xabc1('0x24'));}if(!_0x33e429[_0xabc1('0x12')]){throw new Error('Transcript\x20not\x20available');}if(_0x3e2e6e[_0xabc1('0x1f')]===_0x3d4925['id']){return _0x3d4925;}else{return db[_0xabc1('0x25')]['findOne']({'where':{'id':_settings[_0xabc1('0x1f')]}});}})[_0xabc1('0x26')](function(_0x2a468e){if(!_0x2a468e){throw new db[(_0xabc1('0x22'))]['ValidationError'](_0xabc1('0x27'));}if(!_0x2a468e['data1']||!_0x2a468e[_0xabc1('0xf')]){throw new db[(_0xabc1('0x22'))][(_0xabc1('0x23'))](_0xabc1('0x28'));}_0xce938a=_0x2a468e;logger[_0xabc1('0xb')](util[_0xabc1('0xc')](_0xabc1('0x29'),_0x19c5f6['id']));return sentiment(_0xce938a[_0xabc1('0xe')],_0xce938a[_0xabc1('0xf')],_0x3e2e6e[_0xabc1('0x2a')],_0x33e429[_0xabc1('0x12')],_0x3e2e6e[_0xabc1('0x20')]);})[_0xabc1('0x26')](function(_0x537a0c){logger['info'](util[_0xabc1('0xc')](_0xabc1('0x2b'),_0x19c5f6['id']));return _0x19c5f6[_0xabc1('0x1d')]({'sentiment':_0x537a0c[_0xabc1('0x2c')],'sPositive':_0x537a0c['SentimentScore'][_0xabc1('0x2d')],'sNegative':_0x537a0c[_0xabc1('0x2e')][_0xabc1('0x2f')],'sMixed':_0x537a0c['SentimentScore'][_0xabc1('0x30')],'sNeutral':_0x537a0c['SentimentScore']['Neutral']});})['then'](function(){logger[_0xabc1('0xb')](util['format'](_0xabc1('0x31'),_0x19c5f6['id']));_0x318920();});case _0xabc1('0x32'):return _0x19c5f6['update']({'transcribeStatus':_0xabc1('0x32'),'failureReason':_0x5c693b[_0xabc1('0x11')][_0xabc1('0x33')]})[_0xabc1('0x26')](function(){logger[_0xabc1('0xb')](util[_0xabc1('0xc')](_0xabc1('0x31'),_0x19c5f6['id']));_0x318920();});default:logger['info'](util[_0xabc1('0xc')]('[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed',_0x19c5f6['id']));break;}}else{return BPromise[_0xabc1('0x34')]()[_0xabc1('0x26')](function(){if(!_0x19c5f6[_0xabc1('0x35')]){throw new db[(_0xabc1('0x22'))][(_0xabc1('0x23'))](_0xabc1('0x36'));}if(!_0x3e2e6e[_0xabc1('0x1e')]||!_0x3e2e6e[_0xabc1('0x1f')]||!_0x3e2e6e[_0xabc1('0x2a')]||!_0x3e2e6e[_0xabc1('0x20')]||!_0x3e2e6e[_0xabc1('0x21')]){throw new db[(_0xabc1('0x22'))]['ValidationError']('Sentiment\x20Analysis\x20not\x20configured');}if(!_0x19c5f6[_0xabc1('0x12')]){throw new Error(_0xabc1('0x37'));}if(_0x3e2e6e[_0xabc1('0x1f')]===_0x3d4925['id']){return _0x3d4925;}else{return db['CloudProvider'][_0xabc1('0x38')]({'where':{'id':_settings[_0xabc1('0x1f')]}});}})['then'](function(_0x28e0f1){if(!_0x28e0f1){throw new db[(_0xabc1('0x22'))][(_0xabc1('0x23'))](_0xabc1('0x27'));}if(!_0x28e0f1[_0xabc1('0xe')]||!_0x28e0f1[_0xabc1('0xf')]){throw new db[(_0xabc1('0x22'))][(_0xabc1('0x23'))](_0xabc1('0x28'));}_0xce938a=_0x28e0f1;logger[_0xabc1('0xb')](util[_0xabc1('0xc')](_0xabc1('0x29'),_0x19c5f6['id']));return sentiment(_0xce938a[_0xabc1('0xe')],_0xce938a[_0xabc1('0xf')],_0x3e2e6e[_0xabc1('0x2a')],_0x19c5f6['fileText'],_0x3e2e6e[_0xabc1('0x20')]);})[_0xabc1('0x26')](function(_0x298481){logger[_0xabc1('0xb')](util[_0xabc1('0xc')](_0xabc1('0x2b'),_0x19c5f6['id']));return _0x19c5f6[_0xabc1('0x1d')]({'sentiment':_0x298481['Sentiment'],'sPositive':_0x298481[_0xabc1('0x2e')]['Positive'],'sNegative':_0x298481[_0xabc1('0x2e')]['Negative'],'sMixed':_0x298481[_0xabc1('0x2e')][_0xabc1('0x30')],'sNeutral':_0x298481['SentimentScore']['Neutral'],'transcribeStatus':'COMPLETED'});})[_0xabc1('0x26')](function(){logger['info'](util[_0xabc1('0xc')](_0xabc1('0x31'),_0x19c5f6['id']));_0x318920();});}})[_0xabc1('0x39')](function(_0x3db6a0){if(_0x3db6a0){if(!_0x3db6a0[_0xabc1('0x3a')]||_0x3db6a0[_0xabc1('0x3a')]!==_0xabc1('0x3b')){logger[_0xabc1('0x3c')](util['format']('[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis',_0x19c5f6['id']),util[_0xabc1('0x3d')](_0x3db6a0,{'showHidden':![],'depth':null}));}}_0x318920();});});}function checkTranscribe(){var _0x2f4cea;var _0x4688f9;var _0x557ef8;return db[_0xabc1('0x3e')][_0xabc1('0x3f')]({'where':{'transcribeStatus':_0xabc1('0x40')}})['then'](function(_0x21d8a4){if(!_0x21d8a4||!_0x21d8a4['length']){throw new db[(_0xabc1('0x22'))][(_0xabc1('0x23'))](_0xabc1('0x41'));}_0x2f4cea=_0x21d8a4;return db[_0xabc1('0x42')][_0xabc1('0x38')]({'where':{'id':0x1}});})[_0xabc1('0x26')](function(_0x13311e){if(!_0x13311e){throw new db[(_0xabc1('0x22'))]['ValidationError'](_0xabc1('0x43'));}_0x4688f9=_0x13311e;if(!_0x4688f9[_0xabc1('0x5')]||!_0x4688f9['transcribeAccountId']||!_0x4688f9[_0xabc1('0x10')]||!_0x4688f9[_0xabc1('0x20')]||!_0x4688f9['bucket']){throw new db[(_0xabc1('0x22'))][(_0xabc1('0x23'))]('Transcribe\x20not\x20configured');}return db[_0xabc1('0x25')]['findOne']({'where':{'id':_0x4688f9[_0xabc1('0x44')]}});})[_0xabc1('0x26')](function(_0x1aae51){if(!_0x1aae51){throw new db[(_0xabc1('0x22'))][(_0xabc1('0x23'))](_0xabc1('0x27'));}if(!_0x1aae51['data1']||!_0x1aae51[_0xabc1('0xf')]){throw new db[(_0xabc1('0x22'))]['ValidationError'](_0xabc1('0x28'));}_0x557ef8=_0x1aae51;var _0x1c41ff=[];_0x2f4cea[_0xabc1('0x45')](function(_0x450693){_0x1c41ff[_0xabc1('0x46')](checkTranscribeJob(_0x450693,_0x4688f9,_0x557ef8));});return BPromise['all'](_0x1c41ff);})[_0xabc1('0x39')](function(_0x346e55){if(_0x346e55){if(!_0x346e55[_0xabc1('0x3a')]||_0x346e55['name']!==_0xabc1('0x3b')){logger['error'](util[_0xabc1('0x3d')](_0x346e55,{'showHidden':![],'depth':null}));}}});}exports['start']=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};