Built motion from commit 0900f080.|2.5.45
[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 _0xc5cf=['Comprehend','detectSentiment','substring','format','transcribeName','data1','data2','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJob','fileText','TranscriptionJobStatus','COMPLETED','TranscriptFileUri','[RECORDING:%d]\x20Get\x20transcript','Transcript','then','info','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','transcript','update','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','tempSentiment','Sequelize','ValidationError','Sentiment\x20Analysis\x20not\x20requested','sentiment','sentimentAccountId','sentimentRegion','bucket','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available','CloudProvider','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','language','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Sentiment','SentimentScore','Negative','Mixed','Neutral','FAILED','FailureReason','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','findOne','Cloud\x20Provider\x20not\x20available','Cloud\x20Provider\x20not\x20configured','name','SequelizeValidationError','error','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','IN_PROGRESS','No\x20transcribe\x20job\x20to\x20check','Settings\x20not\x20available','transcribeAccountId','transcribeRegion','forEach','all','catch','start','lodash','aws-sdk','request-promise','util','bluebird','../../mysqldb','../../config/logger','transcribe'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xc5cf,0x15b));var _0xfc5c=function(_0x207cf8,_0x5e8f63){_0x207cf8=_0x207cf8-0x0;var _0x321d6b=_0xc5cf[_0x207cf8];return _0x321d6b;};var _=require(_0xfc5c('0x0'));var AWS=require(_0xfc5c('0x1'));var rp=require(_0xfc5c('0x2'));var util=require(_0xfc5c('0x3'));var BPromise=require(_0xfc5c('0x4'));var db=require(_0xfc5c('0x5'))['db'];var logger=require(_0xfc5c('0x6'))(_0xfc5c('0x7'));function getTranscriptionJob(_0x380b2c,_0x5cc4cc,_0x41386a,_0x382839){return new Promise(function(_0x3a6ecb,_0x23ae81){var _0x2e99e9=new AWS['TranscribeService']({'accessKeyId':_0x5cc4cc,'secretAccessKey':_0x380b2c,'region':_0x41386a});_0x2e99e9['getTranscriptionJob']({'TranscriptionJobName':_0x382839},function(_0x5b53e1,_0x102495){if(_0x5b53e1){return _0x23ae81(_0x5b53e1);}else{return _0x3a6ecb(_0x102495);}});});}function sentiment(_0x38580a,_0x2d23fa,_0x43bbc6,_0x5bf9f0,_0x3872a0){return new Promise(function(_0x2f24f7,_0x2f4e50){var _0x1572ba=new AWS[(_0xfc5c('0x8'))]({'accessKeyId':_0x2d23fa,'secretAccessKey':_0x38580a,'region':_0x43bbc6});_0x1572ba[_0xfc5c('0x9')]({'Text':_0x5bf9f0,'LanguageCode':_0x3872a0[_0xfc5c('0xa')](0x0,0x2)},function(_0x2e8231,_0x33e436){if(_0x2e8231){return _0x2f4e50(_0x2e8231);}else{return _0x2f24f7(_0x33e436);}});});}function checkTranscribeJob(_0x3b0ab6,_0xc11fa1,_0x2cc07c){var _0x139644;return new BPromise(function(_0xe0e356,_0xfb3d3a){logger['info'](util[_0xfc5c('0xb')]('[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)',_0x3b0ab6['id'],_0x3b0ab6[_0xfc5c('0xc')]));return getTranscriptionJob(_0x2cc07c[_0xfc5c('0xd')],_0x2cc07c[_0xfc5c('0xe')],_0xc11fa1['transcribeRegion'],_0x3b0ab6[_0xfc5c('0xc')])['then'](function(_0x5ed8bd){logger['info'](util['format'](_0xfc5c('0xf'),_0x3b0ab6['id'],_0x3b0ab6['transcribeName'],_0x5ed8bd[_0xfc5c('0x10')]['TranscriptionJobStatus']));if(!_0x3b0ab6[_0xfc5c('0x11')]){switch(_0x5ed8bd[_0xfc5c('0x10')][_0xfc5c('0x12')]){case _0xfc5c('0x13'):var _0x1e1144={'transcribeStatus':_0x5ed8bd['TranscriptionJob']['TranscriptionJobStatus'],'fileUri':_0x5ed8bd[_0xfc5c('0x10')]['Transcript'][_0xfc5c('0x14')]};logger['info'](util[_0xfc5c('0xb')](_0xfc5c('0x15'),_0x3b0ab6['id']));return rp({'uri':_0x5ed8bd[_0xfc5c('0x10')][_0xfc5c('0x16')][_0xfc5c('0x14')],'json':!![]})[_0xfc5c('0x17')](function(_0x3d8b7a){logger[_0xfc5c('0x18')](util[_0xfc5c('0xb')](_0xfc5c('0x19'),_0x3b0ab6['id']));if(_0x3d8b7a&&_0x3d8b7a[_0xfc5c('0x1a')]&&_0x3d8b7a[_0xfc5c('0x1a')][_0xfc5c('0x1b')]&&_0x3d8b7a['results']['transcripts']['length']){_0x1e1144[_0xfc5c('0x11')]='';for(var _0x50b163=0x0;_0x50b163<_0x3d8b7a['results'][_0xfc5c('0x1b')][_0xfc5c('0x1c')];_0x50b163++){_0x1e1144[_0xfc5c('0x11')]+=_0x3d8b7a[_0xfc5c('0x1a')][_0xfc5c('0x1b')][_0x50b163][_0xfc5c('0x1d')]+'';}}return _0x3b0ab6[_0xfc5c('0x1e')](_0x1e1144);})[_0xfc5c('0x17')](function(){logger[_0xfc5c('0x18')](util[_0xfc5c('0xb')](_0xfc5c('0x1f'),_0x3b0ab6['id']));if(!_0x3b0ab6[_0xfc5c('0x20')]){throw new db[(_0xfc5c('0x21'))][(_0xfc5c('0x22'))](_0xfc5c('0x23'));}if(!_0xc11fa1[_0xfc5c('0x24')]||!_0xc11fa1[_0xfc5c('0x25')]||!_0xc11fa1[_0xfc5c('0x26')]||!_0xc11fa1['language']||!_0xc11fa1[_0xfc5c('0x27')]){throw new db[(_0xfc5c('0x21'))]['ValidationError'](_0xfc5c('0x28'));}if(!_0x1e1144['fileText']){throw new Error(_0xfc5c('0x29'));}if(_0xc11fa1[_0xfc5c('0x25')]===_0x2cc07c['id']){return _0x2cc07c;}else{return db[_0xfc5c('0x2a')]['findOne']({'where':{'id':_settings[_0xfc5c('0x25')]}});}})[_0xfc5c('0x17')](function(_0x4258d8){if(!_0x4258d8){throw new db[(_0xfc5c('0x21'))][(_0xfc5c('0x22'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x4258d8['data1']||!_0x4258d8[_0xfc5c('0xe')]){throw new db['Sequelize'][(_0xfc5c('0x22'))]('Cloud\x20Provider\x20not\x20configured');}_0x139644=_0x4258d8;logger[_0xfc5c('0x18')](util[_0xfc5c('0xb')](_0xfc5c('0x2b'),_0x3b0ab6['id']));return sentiment(_0x139644[_0xfc5c('0xd')],_0x139644[_0xfc5c('0xe')],_0xc11fa1[_0xfc5c('0x26')],_0x1e1144[_0xfc5c('0x11')],_0xc11fa1[_0xfc5c('0x2c')]);})[_0xfc5c('0x17')](function(_0x2035ef){logger[_0xfc5c('0x18')](util[_0xfc5c('0xb')](_0xfc5c('0x2d'),_0x3b0ab6['id']));return _0x3b0ab6[_0xfc5c('0x1e')]({'sentiment':_0x2035ef[_0xfc5c('0x2e')],'sPositive':_0x2035ef['SentimentScore']['Positive'],'sNegative':_0x2035ef[_0xfc5c('0x2f')][_0xfc5c('0x30')],'sMixed':_0x2035ef['SentimentScore'][_0xfc5c('0x31')],'sNeutral':_0x2035ef[_0xfc5c('0x2f')][_0xfc5c('0x32')]});})[_0xfc5c('0x17')](function(){logger[_0xfc5c('0x18')](util[_0xfc5c('0xb')](_0xfc5c('0x1f'),_0x3b0ab6['id']));_0xe0e356();});case _0xfc5c('0x33'):return _0x3b0ab6['update']({'transcribeStatus':_0xfc5c('0x33'),'failureReason':_0x5ed8bd[_0xfc5c('0x10')][_0xfc5c('0x34')]})[_0xfc5c('0x17')](function(){logger[_0xfc5c('0x18')](util[_0xfc5c('0xb')](_0xfc5c('0x1f'),_0x3b0ab6['id']));_0xe0e356();});default:logger[_0xfc5c('0x18')](util[_0xfc5c('0xb')](_0xfc5c('0x35'),_0x3b0ab6['id']));break;}}else{return BPromise[_0xfc5c('0x36')]()[_0xfc5c('0x17')](function(){if(!_0x3b0ab6[_0xfc5c('0x20')]){throw new db[(_0xfc5c('0x21'))][(_0xfc5c('0x22'))](_0xfc5c('0x23'));}if(!_0xc11fa1[_0xfc5c('0x24')]||!_0xc11fa1['sentimentAccountId']||!_0xc11fa1[_0xfc5c('0x26')]||!_0xc11fa1[_0xfc5c('0x2c')]||!_0xc11fa1[_0xfc5c('0x27')]){throw new db[(_0xfc5c('0x21'))][(_0xfc5c('0x22'))](_0xfc5c('0x28'));}if(!_0x3b0ab6[_0xfc5c('0x11')]){throw new Error(_0xfc5c('0x29'));}if(_0xc11fa1[_0xfc5c('0x25')]===_0x2cc07c['id']){return _0x2cc07c;}else{return db[_0xfc5c('0x2a')][_0xfc5c('0x37')]({'where':{'id':_settings[_0xfc5c('0x25')]}});}})[_0xfc5c('0x17')](function(_0x3f2e02){if(!_0x3f2e02){throw new db[(_0xfc5c('0x21'))][(_0xfc5c('0x22'))](_0xfc5c('0x38'));}if(!_0x3f2e02[_0xfc5c('0xd')]||!_0x3f2e02[_0xfc5c('0xe')]){throw new db['Sequelize'][(_0xfc5c('0x22'))](_0xfc5c('0x39'));}_0x139644=_0x3f2e02;logger['info'](util[_0xfc5c('0xb')](_0xfc5c('0x2b'),_0x3b0ab6['id']));return sentiment(_0x139644[_0xfc5c('0xd')],_0x139644[_0xfc5c('0xe')],_0xc11fa1[_0xfc5c('0x26')],_0x3b0ab6[_0xfc5c('0x11')],_0xc11fa1[_0xfc5c('0x2c')]);})[_0xfc5c('0x17')](function(_0xebbd48){logger[_0xfc5c('0x18')](util[_0xfc5c('0xb')](_0xfc5c('0x2d'),_0x3b0ab6['id']));return _0x3b0ab6[_0xfc5c('0x1e')]({'sentiment':_0xebbd48[_0xfc5c('0x2e')],'sPositive':_0xebbd48[_0xfc5c('0x2f')]['Positive'],'sNegative':_0xebbd48[_0xfc5c('0x2f')][_0xfc5c('0x30')],'sMixed':_0xebbd48['SentimentScore'][_0xfc5c('0x31')],'sNeutral':_0xebbd48[_0xfc5c('0x2f')][_0xfc5c('0x32')],'transcribeStatus':_0xfc5c('0x13')});})[_0xfc5c('0x17')](function(){logger[_0xfc5c('0x18')](util['format'](_0xfc5c('0x1f'),_0x3b0ab6['id']));_0xe0e356();});}})['catch'](function(_0x319f39){if(_0x319f39){if(!_0x319f39[_0xfc5c('0x3a')]||_0x319f39[_0xfc5c('0x3a')]!==_0xfc5c('0x3b')){logger[_0xfc5c('0x3c')](util[_0xfc5c('0xb')](_0xfc5c('0x3d'),_0x3b0ab6['id']),util['inspect'](_0x319f39,{'showHidden':![],'depth':null}));}}_0xe0e356();});});}function checkTranscribe(){var _0x2a7c93;var _0x30257f;var _0x8da4c2;return db['VoiceRecording']['findAll']({'where':{'transcribeStatus':_0xfc5c('0x3e')}})[_0xfc5c('0x17')](function(_0x8a514f){if(!_0x8a514f||!_0x8a514f[_0xfc5c('0x1c')]){throw new db['Sequelize']['ValidationError'](_0xfc5c('0x3f'));}_0x2a7c93=_0x8a514f;return db['Setting'][_0xfc5c('0x37')]({'where':{'id':0x1}});})['then'](function(_0x38fdf4){if(!_0x38fdf4){throw new db[(_0xfc5c('0x21'))][(_0xfc5c('0x22'))](_0xfc5c('0x40'));}_0x30257f=_0x38fdf4;if(!_0x30257f[_0xfc5c('0x7')]||!_0x30257f[_0xfc5c('0x41')]||!_0x30257f[_0xfc5c('0x42')]||!_0x30257f[_0xfc5c('0x2c')]||!_0x30257f['bucket']){throw new db[(_0xfc5c('0x21'))]['ValidationError']('Transcribe\x20not\x20configured');}return db[_0xfc5c('0x2a')][_0xfc5c('0x37')]({'where':{'id':_0x30257f['transcribeAccountId']}});})[_0xfc5c('0x17')](function(_0x5f231b){if(!_0x5f231b){throw new db[(_0xfc5c('0x21'))][(_0xfc5c('0x22'))](_0xfc5c('0x38'));}if(!_0x5f231b['data1']||!_0x5f231b[_0xfc5c('0xe')]){throw new db['Sequelize'][(_0xfc5c('0x22'))](_0xfc5c('0x39'));}_0x8da4c2=_0x5f231b;var _0x51261c=[];_0x2a7c93[_0xfc5c('0x43')](function(_0x26cca5){_0x51261c['push'](checkTranscribeJob(_0x26cca5,_0x30257f,_0x8da4c2));});return BPromise[_0xfc5c('0x44')](_0x51261c);})[_0xfc5c('0x45')](function(_0x20db83){if(_0x20db83){if(!_0x20db83[_0xfc5c('0x3a')]||_0x20db83['name']!==_0xfc5c('0x3b')){logger[_0xfc5c('0x3c')](util['inspect'](_0x20db83,{'showHidden':![],'depth':null}));}}});}exports[_0xfc5c('0x46')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};