1aaaf7c1961b4c8d6ea6eaccffba0e33f218cb9a
[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 _0x1bd1=['sentimentAccountId','sentimentRegion','language','bucket','Sequelize','Transcript\x20not\x20available','CloudProvider','Cloud\x20Provider\x20not\x20available','data2','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Sentiment','Positive','SentimentScore','Negative','Mixed','Neutral','FAILED','FailureReason','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','sentiment','Sentiment\x20Analysis\x20not\x20configured','findOne','COMPLETED','catch','SequelizeValidationError','inspect','VoiceRecording','findAll','IN_PROGRESS','Setting','Settings\x20not\x20available','transcribeAccountId','push','all','name','error','start','aws-sdk','request-promise','util','bluebird','transcribe','TranscribeService','getTranscriptionJob','Comprehend','info','format','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeName','data1','transcribeRegion','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJob','TranscriptionJobStatus','Transcript','TranscriptFileUri','then','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','fileText','transcript','update','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','tempSentiment','ValidationError','Sentiment\x20Analysis\x20not\x20requested'];(function(_0x41b6df,_0x5e2a2b){var _0x1c3a84=function(_0x41de7f){while(--_0x41de7f){_0x41b6df['push'](_0x41b6df['shift']());}};_0x1c3a84(++_0x5e2a2b);}(_0x1bd1,0x18b));var _0x11bd=function(_0x5a8a30,_0x25fd07){_0x5a8a30=_0x5a8a30-0x0;var _0x261a3c=_0x1bd1[_0x5a8a30];return _0x261a3c;};var _=require('lodash');var AWS=require(_0x11bd('0x0'));var rp=require(_0x11bd('0x1'));var util=require(_0x11bd('0x2'));var BPromise=require(_0x11bd('0x3'));var db=require('../../mysqldb')['db'];var logger=require('../../config/logger')(_0x11bd('0x4'));function getTranscriptionJob(_0x7cf9af,_0x295034,_0x447c39,_0xbf3b9){return new Promise(function(_0x2615bc,_0x345e47){var _0x2de1d7=new AWS[(_0x11bd('0x5'))]({'accessKeyId':_0x295034,'secretAccessKey':_0x7cf9af,'region':_0x447c39});_0x2de1d7[_0x11bd('0x6')]({'TranscriptionJobName':_0xbf3b9},function(_0x4eb9c7,_0x3a646c){if(_0x4eb9c7){return _0x345e47(_0x4eb9c7);}else{return _0x2615bc(_0x3a646c);}});});}function sentiment(_0x3c24b5,_0x475082,_0x38451c,_0x7b7bf7,_0x26eaf9){return new Promise(function(_0x49c2ce,_0x13c688){var _0x5d2b7c=new AWS[(_0x11bd('0x7'))]({'accessKeyId':_0x475082,'secretAccessKey':_0x3c24b5,'region':_0x38451c});_0x5d2b7c['detectSentiment']({'Text':_0x7b7bf7,'LanguageCode':_0x26eaf9['substring'](0x0,0x2)},function(_0x4298a5,_0x3807be){if(_0x4298a5){return _0x13c688(_0x4298a5);}else{return _0x49c2ce(_0x3807be);}});});}function checkTranscribeJob(_0x6deeee,_0x2537c0,_0x574229){var _0x3d0df1;return new BPromise(function(_0x1d991b,_0x51a719){logger[_0x11bd('0x8')](util[_0x11bd('0x9')](_0x11bd('0xa'),_0x6deeee['id'],_0x6deeee[_0x11bd('0xb')]));return getTranscriptionJob(_0x574229[_0x11bd('0xc')],_0x574229['data2'],_0x2537c0[_0x11bd('0xd')],_0x6deeee[_0x11bd('0xb')])['then'](function(_0x37a9f6){logger[_0x11bd('0x8')](util[_0x11bd('0x9')](_0x11bd('0xe'),_0x6deeee['id'],_0x6deeee[_0x11bd('0xb')],_0x37a9f6[_0x11bd('0xf')][_0x11bd('0x10')]));if(!_0x6deeee['fileText']){switch(_0x37a9f6['TranscriptionJob']['TranscriptionJobStatus']){case'COMPLETED':var _0x533e37={'transcribeStatus':_0x37a9f6[_0x11bd('0xf')][_0x11bd('0x10')],'fileUri':_0x37a9f6['TranscriptionJob']['Transcript']['TranscriptFileUri']};logger[_0x11bd('0x8')](util[_0x11bd('0x9')]('[RECORDING:%d]\x20Get\x20transcript',_0x6deeee['id']));return rp({'uri':_0x37a9f6[_0x11bd('0xf')][_0x11bd('0x11')][_0x11bd('0x12')],'json':!![]})[_0x11bd('0x13')](function(_0x872dc1){logger[_0x11bd('0x8')](util[_0x11bd('0x9')](_0x11bd('0x14'),_0x6deeee['id']));if(_0x872dc1&&_0x872dc1[_0x11bd('0x15')]&&_0x872dc1[_0x11bd('0x15')][_0x11bd('0x16')]&&_0x872dc1[_0x11bd('0x15')][_0x11bd('0x16')][_0x11bd('0x17')]){_0x533e37[_0x11bd('0x18')]='';for(var _0xae9245=0x0;_0xae9245<_0x872dc1['results'][_0x11bd('0x16')][_0x11bd('0x17')];_0xae9245++){_0x533e37['fileText']+=_0x872dc1[_0x11bd('0x15')][_0x11bd('0x16')][_0xae9245][_0x11bd('0x19')]+'';}}return _0x6deeee[_0x11bd('0x1a')](_0x533e37);})[_0x11bd('0x13')](function(){logger[_0x11bd('0x8')](util['format'](_0x11bd('0x1b'),_0x6deeee['id']));if(!_0x6deeee[_0x11bd('0x1c')]){throw new db['Sequelize'][(_0x11bd('0x1d'))](_0x11bd('0x1e'));}if(!_0x2537c0['sentiment']||!_0x2537c0[_0x11bd('0x1f')]||!_0x2537c0[_0x11bd('0x20')]||!_0x2537c0[_0x11bd('0x21')]||!_0x2537c0[_0x11bd('0x22')]){throw new db[(_0x11bd('0x23'))][(_0x11bd('0x1d'))]('Sentiment\x20Analysis\x20not\x20configured');}if(!_0x533e37[_0x11bd('0x18')]){throw new Error(_0x11bd('0x24'));}if(_0x2537c0[_0x11bd('0x1f')]===_0x574229['id']){return _0x574229;}else{return db[_0x11bd('0x25')]['findOne']({'where':{'id':_settings[_0x11bd('0x1f')]}});}})[_0x11bd('0x13')](function(_0xfa2559){if(!_0xfa2559){throw new db[(_0x11bd('0x23'))][(_0x11bd('0x1d'))](_0x11bd('0x26'));}if(!_0xfa2559[_0x11bd('0xc')]||!_0xfa2559[_0x11bd('0x27')]){throw new db['Sequelize'][(_0x11bd('0x1d'))](_0x11bd('0x28'));}_0x3d0df1=_0xfa2559;logger['info'](util['format'](_0x11bd('0x29'),_0x6deeee['id']));return sentiment(_0x3d0df1[_0x11bd('0xc')],_0x3d0df1[_0x11bd('0x27')],_0x2537c0[_0x11bd('0x20')],_0x533e37[_0x11bd('0x18')],_0x2537c0[_0x11bd('0x21')]);})[_0x11bd('0x13')](function(_0x221a1d){logger['info'](util['format'](_0x11bd('0x2a'),_0x6deeee['id']));return _0x6deeee['update']({'sentiment':_0x221a1d[_0x11bd('0x2b')],'sPositive':_0x221a1d['SentimentScore'][_0x11bd('0x2c')],'sNegative':_0x221a1d[_0x11bd('0x2d')][_0x11bd('0x2e')],'sMixed':_0x221a1d[_0x11bd('0x2d')][_0x11bd('0x2f')],'sNeutral':_0x221a1d[_0x11bd('0x2d')][_0x11bd('0x30')]});})[_0x11bd('0x13')](function(){logger['info'](util[_0x11bd('0x9')](_0x11bd('0x1b'),_0x6deeee['id']));_0x1d991b();});case'FAILED':return _0x6deeee[_0x11bd('0x1a')]({'transcribeStatus':_0x11bd('0x31'),'failureReason':_0x37a9f6['TranscriptionJob'][_0x11bd('0x32')]})[_0x11bd('0x13')](function(){logger['info'](util[_0x11bd('0x9')](_0x11bd('0x1b'),_0x6deeee['id']));_0x1d991b();});default:logger['info'](util['format'](_0x11bd('0x33'),_0x6deeee['id']));break;}}else{return BPromise[_0x11bd('0x34')]()[_0x11bd('0x13')](function(){if(!_0x6deeee[_0x11bd('0x1c')]){throw new db[(_0x11bd('0x23'))][(_0x11bd('0x1d'))](_0x11bd('0x1e'));}if(!_0x2537c0[_0x11bd('0x35')]||!_0x2537c0[_0x11bd('0x1f')]||!_0x2537c0[_0x11bd('0x20')]||!_0x2537c0[_0x11bd('0x21')]||!_0x2537c0[_0x11bd('0x22')]){throw new db['Sequelize'][(_0x11bd('0x1d'))](_0x11bd('0x36'));}if(!_0x6deeee[_0x11bd('0x18')]){throw new Error(_0x11bd('0x24'));}if(_0x2537c0[_0x11bd('0x1f')]===_0x574229['id']){return _0x574229;}else{return db[_0x11bd('0x25')][_0x11bd('0x37')]({'where':{'id':_settings[_0x11bd('0x1f')]}});}})[_0x11bd('0x13')](function(_0x4a7d13){if(!_0x4a7d13){throw new db['Sequelize'][(_0x11bd('0x1d'))](_0x11bd('0x26'));}if(!_0x4a7d13[_0x11bd('0xc')]||!_0x4a7d13[_0x11bd('0x27')]){throw new db[(_0x11bd('0x23'))][(_0x11bd('0x1d'))](_0x11bd('0x28'));}_0x3d0df1=_0x4a7d13;logger[_0x11bd('0x8')](util[_0x11bd('0x9')](_0x11bd('0x29'),_0x6deeee['id']));return sentiment(_0x3d0df1['data1'],_0x3d0df1[_0x11bd('0x27')],_0x2537c0['sentimentRegion'],_0x6deeee['fileText'],_0x2537c0[_0x11bd('0x21')]);})[_0x11bd('0x13')](function(_0x139df9){logger[_0x11bd('0x8')](util[_0x11bd('0x9')](_0x11bd('0x2a'),_0x6deeee['id']));return _0x6deeee['update']({'sentiment':_0x139df9[_0x11bd('0x2b')],'sPositive':_0x139df9[_0x11bd('0x2d')]['Positive'],'sNegative':_0x139df9['SentimentScore']['Negative'],'sMixed':_0x139df9['SentimentScore'][_0x11bd('0x2f')],'sNeutral':_0x139df9['SentimentScore'][_0x11bd('0x30')],'transcribeStatus':_0x11bd('0x38')});})[_0x11bd('0x13')](function(){logger[_0x11bd('0x8')](util[_0x11bd('0x9')](_0x11bd('0x1b'),_0x6deeee['id']));_0x1d991b();});}})[_0x11bd('0x39')](function(_0x31a742){if(_0x31a742){if(!_0x31a742['name']||_0x31a742['name']!==_0x11bd('0x3a')){logger['error'](util[_0x11bd('0x9')]('[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis',_0x6deeee['id']),util[_0x11bd('0x3b')](_0x31a742,{'showHidden':![],'depth':null}));}}_0x1d991b();});});}function checkTranscribe(){var _0x12857c;var _0x2f9b38;var _0x18811a;return db[_0x11bd('0x3c')][_0x11bd('0x3d')]({'where':{'transcribeStatus':_0x11bd('0x3e')}})[_0x11bd('0x13')](function(_0xcc49d){if(!_0xcc49d||!_0xcc49d[_0x11bd('0x17')]){throw new db[(_0x11bd('0x23'))][(_0x11bd('0x1d'))]('No\x20transcribe\x20job\x20to\x20check');}_0x12857c=_0xcc49d;return db[_0x11bd('0x3f')][_0x11bd('0x37')]({'where':{'id':0x1}});})[_0x11bd('0x13')](function(_0x579cb9){if(!_0x579cb9){throw new db[(_0x11bd('0x23'))]['ValidationError'](_0x11bd('0x40'));}_0x2f9b38=_0x579cb9;if(!_0x2f9b38['transcribe']||!_0x2f9b38[_0x11bd('0x41')]||!_0x2f9b38['transcribeRegion']||!_0x2f9b38[_0x11bd('0x21')]||!_0x2f9b38[_0x11bd('0x22')]){throw new db['Sequelize'][(_0x11bd('0x1d'))]('Transcribe\x20not\x20configured');}return db['CloudProvider'][_0x11bd('0x37')]({'where':{'id':_0x2f9b38[_0x11bd('0x41')]}});})['then'](function(_0xa82801){if(!_0xa82801){throw new db[(_0x11bd('0x23'))][(_0x11bd('0x1d'))]('Cloud\x20Provider\x20not\x20available');}if(!_0xa82801[_0x11bd('0xc')]||!_0xa82801[_0x11bd('0x27')]){throw new db[(_0x11bd('0x23'))]['ValidationError'](_0x11bd('0x28'));}_0x18811a=_0xa82801;var _0x1b40f1=[];_0x12857c['forEach'](function(_0x3f9801){_0x1b40f1[_0x11bd('0x42')](checkTranscribeJob(_0x3f9801,_0x2f9b38,_0x18811a));});return BPromise[_0x11bd('0x43')](_0x1b40f1);})[_0x11bd('0x39')](function(_0x3d0f77){if(_0x3d0f77){if(!_0x3d0f77['name']||_0x3d0f77[_0x11bd('0x44')]!=='SequelizeValidationError'){logger[_0x11bd('0x45')](util[_0x11bd('0x3b')](_0x3d0f77,{'showHidden':![],'depth':null}));}}});}exports[_0x11bd('0x46')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};