c8c7ce0c36a93328c360a3a72710db8505ee928d
[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 _0xf958=['Negative','Neutral','COMPLETED','catch','name','SequelizeValidationError','error','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','inspect','VoiceRecording','findAll','IN_PROGRESS','length','No\x20transcribe\x20job\x20to\x20check','Setting','Settings\x20not\x20available','transcribeRegion','Transcribe\x20not\x20configured','transcribeAccountId','all','lodash','request-promise','bluebird','../../config/logger','transcribe','getTranscriptionJob','Comprehend','substring','info','format','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeName','data1','data2','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJob','TranscriptionJobStatus','TranscriptFileUri','[RECORDING:%d]\x20Get\x20transcript','then','results','transcripts','fileText','transcript','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','Sequelize','Sentiment\x20Analysis\x20not\x20requested','sentiment','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','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','update','SentimentScore','Positive','Mixed','FAILED','FailureReason','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','tempSentiment'];(function(_0x4babee,_0x322671){var _0x4af828=function(_0xdc3cc){while(--_0xdc3cc){_0x4babee['push'](_0x4babee['shift']());}};_0x4af828(++_0x322671);}(_0xf958,0xe6));var _0x8f95=function(_0x547596,_0x4e1334){_0x547596=_0x547596-0x0;var _0x57a391=_0xf958[_0x547596];return _0x57a391;};var _=require(_0x8f95('0x0'));var AWS=require('aws-sdk');var rp=require(_0x8f95('0x1'));var util=require('util');var BPromise=require(_0x8f95('0x2'));var db=require('../../mysqldb')['db'];var logger=require(_0x8f95('0x3'))(_0x8f95('0x4'));function getTranscriptionJob(_0x1aeb7b,_0x482c0c,_0x49d448,_0x32df52){return new Promise(function(_0x10a425,_0x281f38){var _0x5c2af8=new AWS['TranscribeService']({'accessKeyId':_0x482c0c,'secretAccessKey':_0x1aeb7b,'region':_0x49d448});_0x5c2af8[_0x8f95('0x5')]({'TranscriptionJobName':_0x32df52},function(_0x109bed,_0x435b5b){if(_0x109bed){return _0x281f38(_0x109bed);}else{return _0x10a425(_0x435b5b);}});});}function sentiment(_0x19cbd0,_0x3b695c,_0x585025,_0x378eb1,_0x604646){return new Promise(function(_0x56d8e2,_0x382f2c){var _0x4e97bd=new AWS[(_0x8f95('0x6'))]({'accessKeyId':_0x3b695c,'secretAccessKey':_0x19cbd0,'region':_0x585025});_0x4e97bd['detectSentiment']({'Text':_0x378eb1,'LanguageCode':_0x604646[_0x8f95('0x7')](0x0,0x2)},function(_0x3e7423,_0x3ffccb){if(_0x3e7423){return _0x382f2c(_0x3e7423);}else{return _0x56d8e2(_0x3ffccb);}});});}function checkTranscribeJob(_0x506b47,_0x464cff,_0x158a35){var _0x7fc65f;return new BPromise(function(_0x5d4acf,_0x19bcc8){logger[_0x8f95('0x8')](util[_0x8f95('0x9')](_0x8f95('0xa'),_0x506b47['id'],_0x506b47[_0x8f95('0xb')]));return getTranscriptionJob(_0x158a35[_0x8f95('0xc')],_0x158a35[_0x8f95('0xd')],_0x464cff['transcribeRegion'],_0x506b47['transcribeName'])['then'](function(_0x56e816){logger['info'](util[_0x8f95('0x9')](_0x8f95('0xe'),_0x506b47['id'],_0x506b47[_0x8f95('0xb')],_0x56e816[_0x8f95('0xf')]['TranscriptionJobStatus']));if(!_0x506b47['fileText']){switch(_0x56e816[_0x8f95('0xf')][_0x8f95('0x10')]){case'COMPLETED':var _0x445db0={'transcribeStatus':_0x56e816[_0x8f95('0xf')][_0x8f95('0x10')],'fileUri':_0x56e816[_0x8f95('0xf')]['Transcript'][_0x8f95('0x11')]};logger[_0x8f95('0x8')](util[_0x8f95('0x9')](_0x8f95('0x12'),_0x506b47['id']));return rp({'uri':_0x56e816['TranscriptionJob']['Transcript'][_0x8f95('0x11')],'json':!![]})[_0x8f95('0x13')](function(_0x13e7c5){logger[_0x8f95('0x8')](util[_0x8f95('0x9')]('[RECORDING:%d]\x20Transcript\x20downloaded',_0x506b47['id']));if(_0x13e7c5&&_0x13e7c5[_0x8f95('0x14')]&&_0x13e7c5[_0x8f95('0x14')]['transcripts']&&_0x13e7c5[_0x8f95('0x14')][_0x8f95('0x15')]['length']){_0x445db0[_0x8f95('0x16')]='';for(var _0x4c96eb=0x0;_0x4c96eb<_0x13e7c5[_0x8f95('0x14')][_0x8f95('0x15')]['length'];_0x4c96eb++){_0x445db0[_0x8f95('0x16')]+=_0x13e7c5['results']['transcripts'][_0x4c96eb][_0x8f95('0x17')]+'';}}return _0x506b47['update'](_0x445db0);})[_0x8f95('0x13')](function(){logger['info'](util['format'](_0x8f95('0x18'),_0x506b47['id']));if(!_0x506b47['tempSentiment']){throw new db[(_0x8f95('0x19'))]['ValidationError'](_0x8f95('0x1a'));}if(!_0x464cff[_0x8f95('0x1b')]||!_0x464cff[_0x8f95('0x1c')]||!_0x464cff[_0x8f95('0x1d')]||!_0x464cff[_0x8f95('0x1e')]||!_0x464cff[_0x8f95('0x1f')]){throw new db[(_0x8f95('0x19'))][(_0x8f95('0x20'))](_0x8f95('0x21'));}if(!_0x445db0[_0x8f95('0x16')]){throw new Error(_0x8f95('0x22'));}if(_0x464cff['sentimentAccountId']===_0x158a35['id']){return _0x158a35;}else{return db[_0x8f95('0x23')][_0x8f95('0x24')]({'where':{'id':_settings['sentimentAccountId']}});}})['then'](function(_0x511043){if(!_0x511043){throw new db[(_0x8f95('0x19'))]['ValidationError'](_0x8f95('0x25'));}if(!_0x511043['data1']||!_0x511043['data2']){throw new db[(_0x8f95('0x19'))][(_0x8f95('0x20'))](_0x8f95('0x26'));}_0x7fc65f=_0x511043;logger[_0x8f95('0x8')](util[_0x8f95('0x9')](_0x8f95('0x27'),_0x506b47['id']));return sentiment(_0x7fc65f[_0x8f95('0xc')],_0x7fc65f[_0x8f95('0xd')],_0x464cff[_0x8f95('0x1d')],_0x445db0[_0x8f95('0x16')],_0x464cff['language']);})[_0x8f95('0x13')](function(_0x53e273){logger[_0x8f95('0x8')](util[_0x8f95('0x9')](_0x8f95('0x28'),_0x506b47['id']));return _0x506b47[_0x8f95('0x29')]({'sentiment':_0x53e273['Sentiment'],'sPositive':_0x53e273[_0x8f95('0x2a')][_0x8f95('0x2b')],'sNegative':_0x53e273[_0x8f95('0x2a')]['Negative'],'sMixed':_0x53e273['SentimentScore'][_0x8f95('0x2c')],'sNeutral':_0x53e273[_0x8f95('0x2a')]['Neutral']});})[_0x8f95('0x13')](function(){logger[_0x8f95('0x8')](util[_0x8f95('0x9')](_0x8f95('0x18'),_0x506b47['id']));_0x5d4acf();});case _0x8f95('0x2d'):return _0x506b47[_0x8f95('0x29')]({'transcribeStatus':_0x8f95('0x2d'),'failureReason':_0x56e816[_0x8f95('0xf')][_0x8f95('0x2e')]})[_0x8f95('0x13')](function(){logger[_0x8f95('0x8')](util[_0x8f95('0x9')](_0x8f95('0x18'),_0x506b47['id']));_0x5d4acf();});default:logger[_0x8f95('0x8')](util['format'](_0x8f95('0x2f'),_0x506b47['id']));break;}}else{return BPromise[_0x8f95('0x30')]()[_0x8f95('0x13')](function(){if(!_0x506b47[_0x8f95('0x31')]){throw new db[(_0x8f95('0x19'))][(_0x8f95('0x20'))](_0x8f95('0x1a'));}if(!_0x464cff[_0x8f95('0x1b')]||!_0x464cff[_0x8f95('0x1c')]||!_0x464cff[_0x8f95('0x1d')]||!_0x464cff[_0x8f95('0x1e')]||!_0x464cff[_0x8f95('0x1f')]){throw new db[(_0x8f95('0x19'))][(_0x8f95('0x20'))]('Sentiment\x20Analysis\x20not\x20configured');}if(!_0x506b47[_0x8f95('0x16')]){throw new Error(_0x8f95('0x22'));}if(_0x464cff[_0x8f95('0x1c')]===_0x158a35['id']){return _0x158a35;}else{return db[_0x8f95('0x23')][_0x8f95('0x24')]({'where':{'id':_settings[_0x8f95('0x1c')]}});}})[_0x8f95('0x13')](function(_0x423329){if(!_0x423329){throw new db['Sequelize'][(_0x8f95('0x20'))](_0x8f95('0x25'));}if(!_0x423329[_0x8f95('0xc')]||!_0x423329[_0x8f95('0xd')]){throw new db[(_0x8f95('0x19'))][(_0x8f95('0x20'))]('Cloud\x20Provider\x20not\x20configured');}_0x7fc65f=_0x423329;logger[_0x8f95('0x8')](util[_0x8f95('0x9')](_0x8f95('0x27'),_0x506b47['id']));return sentiment(_0x7fc65f[_0x8f95('0xc')],_0x7fc65f['data2'],_0x464cff['sentimentRegion'],_0x506b47['fileText'],_0x464cff[_0x8f95('0x1e')]);})[_0x8f95('0x13')](function(_0x50f94a){logger[_0x8f95('0x8')](util['format'](_0x8f95('0x28'),_0x506b47['id']));return _0x506b47[_0x8f95('0x29')]({'sentiment':_0x50f94a['Sentiment'],'sPositive':_0x50f94a[_0x8f95('0x2a')][_0x8f95('0x2b')],'sNegative':_0x50f94a[_0x8f95('0x2a')][_0x8f95('0x32')],'sMixed':_0x50f94a[_0x8f95('0x2a')][_0x8f95('0x2c')],'sNeutral':_0x50f94a[_0x8f95('0x2a')][_0x8f95('0x33')],'transcribeStatus':_0x8f95('0x34')});})[_0x8f95('0x13')](function(){logger['info'](util[_0x8f95('0x9')](_0x8f95('0x18'),_0x506b47['id']));_0x5d4acf();});}})[_0x8f95('0x35')](function(_0x335940){if(_0x335940){if(!_0x335940[_0x8f95('0x36')]||_0x335940[_0x8f95('0x36')]!==_0x8f95('0x37')){logger[_0x8f95('0x38')](util[_0x8f95('0x9')](_0x8f95('0x39'),_0x506b47['id']),util[_0x8f95('0x3a')](_0x335940,{'showHidden':![],'depth':null}));}}_0x5d4acf();});});}function checkTranscribe(){var _0x704c2a;var _0x55f9ae;var _0x335201;return db[_0x8f95('0x3b')][_0x8f95('0x3c')]({'where':{'transcribeStatus':_0x8f95('0x3d')}})[_0x8f95('0x13')](function(_0x4065a8){if(!_0x4065a8||!_0x4065a8[_0x8f95('0x3e')]){throw new db['Sequelize'][(_0x8f95('0x20'))](_0x8f95('0x3f'));}_0x704c2a=_0x4065a8;return db[_0x8f95('0x40')][_0x8f95('0x24')]({'where':{'id':0x1}});})[_0x8f95('0x13')](function(_0x489813){if(!_0x489813){throw new db[(_0x8f95('0x19'))][(_0x8f95('0x20'))](_0x8f95('0x41'));}_0x55f9ae=_0x489813;if(!_0x55f9ae[_0x8f95('0x4')]||!_0x55f9ae['transcribeAccountId']||!_0x55f9ae[_0x8f95('0x42')]||!_0x55f9ae[_0x8f95('0x1e')]||!_0x55f9ae[_0x8f95('0x1f')]){throw new db[(_0x8f95('0x19'))]['ValidationError'](_0x8f95('0x43'));}return db[_0x8f95('0x23')][_0x8f95('0x24')]({'where':{'id':_0x55f9ae[_0x8f95('0x44')]}});})[_0x8f95('0x13')](function(_0x43b175){if(!_0x43b175){throw new db[(_0x8f95('0x19'))][(_0x8f95('0x20'))](_0x8f95('0x25'));}if(!_0x43b175[_0x8f95('0xc')]||!_0x43b175[_0x8f95('0xd')]){throw new db['Sequelize']['ValidationError'](_0x8f95('0x26'));}_0x335201=_0x43b175;var _0x36d15b=[];_0x704c2a['forEach'](function(_0x24545f){_0x36d15b['push'](checkTranscribeJob(_0x24545f,_0x55f9ae,_0x335201));});return BPromise[_0x8f95('0x45')](_0x36d15b);})[_0x8f95('0x35')](function(_0x4b3c05){if(_0x4b3c05){if(!_0x4b3c05['name']||_0x4b3c05[_0x8f95('0x36')]!==_0x8f95('0x37')){logger['error'](util[_0x8f95('0x3a')](_0x4b3c05,{'showHidden':![],'depth':null}));}}});}exports['start']=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};