Built motion from commit (unavailable).|2.5.6
[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 _0xd9f8=['transcribeAccountId','forEach','start','lodash','aws-sdk','request-promise','util','bluebird','../../mysqldb','../../config/logger','transcribe','TranscribeService','getTranscriptionJob','Comprehend','detectSentiment','substring','info','transcribeName','data2','then','format','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJob','TranscriptionJobStatus','fileText','COMPLETED','TranscriptFileUri','[RECORDING:%d]\x20Get\x20transcript','Transcript','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','transcript','ValidationError','sentiment','sentimentAccountId','sentimentRegion','Sequelize','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available','Cloud\x20Provider\x20not\x20available','data1','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','language','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','update','Sentiment','Positive','SentimentScore','Mixed','Neutral','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','FAILED','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','tempSentiment','Sentiment\x20Analysis\x20not\x20requested','bucket','CloudProvider','findOne','Negative','name','SequelizeValidationError','error','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','inspect','VoiceRecording','findAll','No\x20transcribe\x20job\x20to\x20check','Setting'];(function(_0x51b80a,_0x355fe3){var _0x22fdf0=function(_0x152b3e){while(--_0x152b3e){_0x51b80a['push'](_0x51b80a['shift']());}};_0x22fdf0(++_0x355fe3);}(_0xd9f8,0x123));var _0x8d9f=function(_0x3c2ceb,_0x1cddb0){_0x3c2ceb=_0x3c2ceb-0x0;var _0x34ecf0=_0xd9f8[_0x3c2ceb];return _0x34ecf0;};var _=require(_0x8d9f('0x0'));var AWS=require(_0x8d9f('0x1'));var rp=require(_0x8d9f('0x2'));var util=require(_0x8d9f('0x3'));var BPromise=require(_0x8d9f('0x4'));var db=require(_0x8d9f('0x5'))['db'];var logger=require(_0x8d9f('0x6'))(_0x8d9f('0x7'));function getTranscriptionJob(_0x30505c,_0x552006,_0x7a03b1,_0x3822a7){return new Promise(function(_0x15ac33,_0x46f95f){var _0xd82d85=new AWS[(_0x8d9f('0x8'))]({'accessKeyId':_0x552006,'secretAccessKey':_0x30505c,'region':_0x7a03b1});_0xd82d85[_0x8d9f('0x9')]({'TranscriptionJobName':_0x3822a7},function(_0x12cd2d,_0x12e1fd){if(_0x12cd2d){return _0x46f95f(_0x12cd2d);}else{return _0x15ac33(_0x12e1fd);}});});}function sentiment(_0x4b519d,_0xfcd81c,_0x2bcc23,_0x2a1e9b,_0x358e36){return new Promise(function(_0x1d1d29,_0x1e6aee){var _0xa05985=new AWS[(_0x8d9f('0xa'))]({'accessKeyId':_0xfcd81c,'secretAccessKey':_0x4b519d,'region':_0x2bcc23});_0xa05985[_0x8d9f('0xb')]({'Text':_0x2a1e9b,'LanguageCode':_0x358e36[_0x8d9f('0xc')](0x0,0x2)},function(_0x5d0a0c,_0x280b7e){if(_0x5d0a0c){return _0x1e6aee(_0x5d0a0c);}else{return _0x1d1d29(_0x280b7e);}});});}function checkTranscribeJob(_0x4d3b47,_0x5b1ab4,_0x53655e){var _0x3d80c9;return new BPromise(function(_0x3780e1,_0x23d9f0){logger[_0x8d9f('0xd')](util['format']('[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)',_0x4d3b47['id'],_0x4d3b47[_0x8d9f('0xe')]));return getTranscriptionJob(_0x53655e['data1'],_0x53655e[_0x8d9f('0xf')],_0x5b1ab4['transcribeRegion'],_0x4d3b47['transcribeName'])[_0x8d9f('0x10')](function(_0x4abd64){logger[_0x8d9f('0xd')](util[_0x8d9f('0x11')](_0x8d9f('0x12'),_0x4d3b47['id'],_0x4d3b47['transcribeName'],_0x4abd64[_0x8d9f('0x13')][_0x8d9f('0x14')]));if(!_0x4d3b47[_0x8d9f('0x15')]){switch(_0x4abd64[_0x8d9f('0x13')][_0x8d9f('0x14')]){case _0x8d9f('0x16'):var _0x9f04a2={'transcribeStatus':_0x4abd64[_0x8d9f('0x13')][_0x8d9f('0x14')],'fileUri':_0x4abd64[_0x8d9f('0x13')]['Transcript'][_0x8d9f('0x17')]};logger[_0x8d9f('0xd')](util['format'](_0x8d9f('0x18'),_0x4d3b47['id']));return rp({'uri':_0x4abd64['TranscriptionJob'][_0x8d9f('0x19')][_0x8d9f('0x17')],'json':!![]})[_0x8d9f('0x10')](function(_0x25eb2d){logger['info'](util[_0x8d9f('0x11')](_0x8d9f('0x1a'),_0x4d3b47['id']));if(_0x25eb2d&&_0x25eb2d['results']&&_0x25eb2d[_0x8d9f('0x1b')][_0x8d9f('0x1c')]&&_0x25eb2d[_0x8d9f('0x1b')]['transcripts'][_0x8d9f('0x1d')]){_0x9f04a2[_0x8d9f('0x15')]='';for(var _0xf8f3fd=0x0;_0xf8f3fd<_0x25eb2d[_0x8d9f('0x1b')][_0x8d9f('0x1c')][_0x8d9f('0x1d')];_0xf8f3fd++){_0x9f04a2[_0x8d9f('0x15')]+=_0x25eb2d['results'][_0x8d9f('0x1c')][_0xf8f3fd][_0x8d9f('0x1e')]+'';}}return _0x4d3b47['update'](_0x9f04a2);})[_0x8d9f('0x10')](function(){logger[_0x8d9f('0xd')](util[_0x8d9f('0x11')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x4d3b47['id']));if(!_0x4d3b47['tempSentiment']){throw new db['Sequelize'][(_0x8d9f('0x1f'))]('Sentiment\x20Analysis\x20not\x20requested');}if(!_0x5b1ab4[_0x8d9f('0x20')]||!_0x5b1ab4[_0x8d9f('0x21')]||!_0x5b1ab4[_0x8d9f('0x22')]||!_0x5b1ab4['language']||!_0x5b1ab4['bucket']){throw new db[(_0x8d9f('0x23'))]['ValidationError'](_0x8d9f('0x24'));}if(!_0x9f04a2[_0x8d9f('0x15')]){throw new Error(_0x8d9f('0x25'));}if(_0x5b1ab4[_0x8d9f('0x21')]===_0x53655e['id']){return _0x53655e;}else{return db['CloudProvider']['findOne']({'where':{'id':_settings[_0x8d9f('0x21')]}});}})[_0x8d9f('0x10')](function(_0x3157cf){if(!_0x3157cf){throw new db[(_0x8d9f('0x23'))][(_0x8d9f('0x1f'))](_0x8d9f('0x26'));}if(!_0x3157cf[_0x8d9f('0x27')]||!_0x3157cf[_0x8d9f('0xf')]){throw new db[(_0x8d9f('0x23'))][(_0x8d9f('0x1f'))](_0x8d9f('0x28'));}_0x3d80c9=_0x3157cf;logger['info'](util[_0x8d9f('0x11')](_0x8d9f('0x29'),_0x4d3b47['id']));return sentiment(_0x3d80c9[_0x8d9f('0x27')],_0x3d80c9[_0x8d9f('0xf')],_0x5b1ab4['sentimentRegion'],_0x9f04a2['fileText'],_0x5b1ab4[_0x8d9f('0x2a')]);})[_0x8d9f('0x10')](function(_0x3058b9){logger[_0x8d9f('0xd')](util[_0x8d9f('0x11')](_0x8d9f('0x2b'),_0x4d3b47['id']));return _0x4d3b47[_0x8d9f('0x2c')]({'sentiment':_0x3058b9[_0x8d9f('0x2d')],'sPositive':_0x3058b9['SentimentScore'][_0x8d9f('0x2e')],'sNegative':_0x3058b9[_0x8d9f('0x2f')]['Negative'],'sMixed':_0x3058b9[_0x8d9f('0x2f')][_0x8d9f('0x30')],'sNeutral':_0x3058b9['SentimentScore'][_0x8d9f('0x31')]});})[_0x8d9f('0x10')](function(){logger[_0x8d9f('0xd')](util[_0x8d9f('0x11')](_0x8d9f('0x32'),_0x4d3b47['id']));_0x3780e1();});case _0x8d9f('0x33'):return _0x4d3b47['update']({'transcribeStatus':_0x8d9f('0x33'),'failureReason':_0x4abd64[_0x8d9f('0x13')]['FailureReason']})[_0x8d9f('0x10')](function(){logger[_0x8d9f('0xd')](util[_0x8d9f('0x11')](_0x8d9f('0x32'),_0x4d3b47['id']));_0x3780e1();});default:logger[_0x8d9f('0xd')](util[_0x8d9f('0x11')](_0x8d9f('0x34'),_0x4d3b47['id']));break;}}else{return BPromise[_0x8d9f('0x35')]()[_0x8d9f('0x10')](function(){if(!_0x4d3b47[_0x8d9f('0x36')]){throw new db[(_0x8d9f('0x23'))][(_0x8d9f('0x1f'))](_0x8d9f('0x37'));}if(!_0x5b1ab4[_0x8d9f('0x20')]||!_0x5b1ab4[_0x8d9f('0x21')]||!_0x5b1ab4[_0x8d9f('0x22')]||!_0x5b1ab4[_0x8d9f('0x2a')]||!_0x5b1ab4[_0x8d9f('0x38')]){throw new db['Sequelize'][(_0x8d9f('0x1f'))](_0x8d9f('0x24'));}if(!_0x4d3b47['fileText']){throw new Error(_0x8d9f('0x25'));}if(_0x5b1ab4['sentimentAccountId']===_0x53655e['id']){return _0x53655e;}else{return db[_0x8d9f('0x39')][_0x8d9f('0x3a')]({'where':{'id':_settings[_0x8d9f('0x21')]}});}})[_0x8d9f('0x10')](function(_0x5d74c3){if(!_0x5d74c3){throw new db[(_0x8d9f('0x23'))][(_0x8d9f('0x1f'))](_0x8d9f('0x26'));}if(!_0x5d74c3[_0x8d9f('0x27')]||!_0x5d74c3[_0x8d9f('0xf')]){throw new db[(_0x8d9f('0x23'))]['ValidationError'](_0x8d9f('0x28'));}_0x3d80c9=_0x5d74c3;logger[_0x8d9f('0xd')](util[_0x8d9f('0x11')]('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0x4d3b47['id']));return sentiment(_0x3d80c9[_0x8d9f('0x27')],_0x3d80c9['data2'],_0x5b1ab4[_0x8d9f('0x22')],_0x4d3b47[_0x8d9f('0x15')],_0x5b1ab4[_0x8d9f('0x2a')]);})[_0x8d9f('0x10')](function(_0x5245fb){logger[_0x8d9f('0xd')](util[_0x8d9f('0x11')]('[RECORDING:%d]\x20Sentiment\x20Analysis\x20available',_0x4d3b47['id']));return _0x4d3b47['update']({'sentiment':_0x5245fb[_0x8d9f('0x2d')],'sPositive':_0x5245fb[_0x8d9f('0x2f')][_0x8d9f('0x2e')],'sNegative':_0x5245fb[_0x8d9f('0x2f')][_0x8d9f('0x3b')],'sMixed':_0x5245fb[_0x8d9f('0x2f')]['Mixed'],'sNeutral':_0x5245fb[_0x8d9f('0x2f')][_0x8d9f('0x31')],'transcribeStatus':_0x8d9f('0x16')});})[_0x8d9f('0x10')](function(){logger['info'](util['format']('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x4d3b47['id']));_0x3780e1();});}})['catch'](function(_0x2541b5){if(_0x2541b5){if(!_0x2541b5[_0x8d9f('0x3c')]||_0x2541b5[_0x8d9f('0x3c')]!==_0x8d9f('0x3d')){logger[_0x8d9f('0x3e')](util[_0x8d9f('0x11')](_0x8d9f('0x3f'),_0x4d3b47['id']),util[_0x8d9f('0x40')](_0x2541b5,{'showHidden':![],'depth':null}));}}_0x3780e1();});});}function checkTranscribe(){var _0x299819;var _0x2e5aaf;var _0x9ae92a;return db[_0x8d9f('0x41')][_0x8d9f('0x42')]({'where':{'transcribeStatus':'IN_PROGRESS'}})['then'](function(_0x59c121){if(!_0x59c121||!_0x59c121['length']){throw new db[(_0x8d9f('0x23'))][(_0x8d9f('0x1f'))](_0x8d9f('0x43'));}_0x299819=_0x59c121;return db[_0x8d9f('0x44')][_0x8d9f('0x3a')]({'where':{'id':0x1}});})[_0x8d9f('0x10')](function(_0x56e543){if(!_0x56e543){throw new db[(_0x8d9f('0x23'))][(_0x8d9f('0x1f'))]('Settings\x20not\x20available');}_0x2e5aaf=_0x56e543;if(!_0x2e5aaf[_0x8d9f('0x7')]||!_0x2e5aaf[_0x8d9f('0x45')]||!_0x2e5aaf['transcribeRegion']||!_0x2e5aaf[_0x8d9f('0x2a')]||!_0x2e5aaf[_0x8d9f('0x38')]){throw new db['Sequelize'][(_0x8d9f('0x1f'))]('Transcribe\x20not\x20configured');}return db[_0x8d9f('0x39')]['findOne']({'where':{'id':_0x2e5aaf[_0x8d9f('0x45')]}});})[_0x8d9f('0x10')](function(_0x181158){if(!_0x181158){throw new db[(_0x8d9f('0x23'))][(_0x8d9f('0x1f'))](_0x8d9f('0x26'));}if(!_0x181158['data1']||!_0x181158[_0x8d9f('0xf')]){throw new db['Sequelize'][(_0x8d9f('0x1f'))]('Cloud\x20Provider\x20not\x20configured');}_0x9ae92a=_0x181158;var _0x17cf5c=[];_0x299819[_0x8d9f('0x46')](function(_0x56a3bd){_0x17cf5c['push'](checkTranscribeJob(_0x56a3bd,_0x2e5aaf,_0x9ae92a));});return BPromise['all'](_0x17cf5c);})['catch'](function(_0xd2912e){if(_0xd2912e){if(!_0xd2912e[_0x8d9f('0x3c')]||_0xd2912e[_0x8d9f('0x3c')]!==_0x8d9f('0x3d')){logger['error'](util['inspect'](_0xd2912e,{'showHidden':![],'depth':null}));}}});}exports[_0x8d9f('0x47')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};