Built motion from commit 3e059bc2.|2.5.32
[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 _0x94d2=['SentimentScore','Positive','Negative','Mixed','Neutral','FAILED','FailureReason','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','CloudProvider','findOne','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','catch','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','inspect','VoiceRecording','findAll','IN_PROGRESS','No\x20transcribe\x20job\x20to\x20check','Setting','transcribe','transcribeAccountId','Transcribe\x20not\x20configured','forEach','push','all','name','SequelizeValidationError','error','start','request-promise','util','bluebird','../../mysqldb','../../config/logger','getTranscriptionJob','substring','info','transcribeName','data1','data2','transcribeRegion','then','TranscriptionJob','TranscriptionJobStatus','fileText','COMPLETED','TranscriptFileUri','format','[RECORDING:%d]\x20Get\x20transcript','Transcript','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','transcript','update','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','tempSentiment','ValidationError','Sentiment\x20Analysis\x20not\x20requested','sentiment','sentimentAccountId','sentimentRegion','language','bucket','Sequelize','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available','Cloud\x20Provider\x20not\x20available','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Sentiment'];(function(_0x525e50,_0x2dbbac){var _0x48135d=function(_0x19e98a){while(--_0x19e98a){_0x525e50['push'](_0x525e50['shift']());}};_0x48135d(++_0x2dbbac);}(_0x94d2,0x1cd));var _0x294d=function(_0x4843f9,_0x4af459){_0x4843f9=_0x4843f9-0x0;var _0x193c6a=_0x94d2[_0x4843f9];return _0x193c6a;};var _=require('lodash');var AWS=require('aws-sdk');var rp=require(_0x294d('0x0'));var util=require(_0x294d('0x1'));var BPromise=require(_0x294d('0x2'));var db=require(_0x294d('0x3'))['db'];var logger=require(_0x294d('0x4'))('transcribe');function getTranscriptionJob(_0x541332,_0x2f2fc8,_0x393430,_0xb2c63a){return new Promise(function(_0x234700,_0x279b9b){var _0x5e023f=new AWS['TranscribeService']({'accessKeyId':_0x2f2fc8,'secretAccessKey':_0x541332,'region':_0x393430});_0x5e023f[_0x294d('0x5')]({'TranscriptionJobName':_0xb2c63a},function(_0x6653fc,_0x1cd249){if(_0x6653fc){return _0x279b9b(_0x6653fc);}else{return _0x234700(_0x1cd249);}});});}function sentiment(_0x3066ae,_0x1c9700,_0x49923f,_0x7931bb,_0x297494){return new Promise(function(_0x53d5f5,_0x20af48){var _0x18fde9=new AWS['Comprehend']({'accessKeyId':_0x1c9700,'secretAccessKey':_0x3066ae,'region':_0x49923f});_0x18fde9['detectSentiment']({'Text':_0x7931bb,'LanguageCode':_0x297494[_0x294d('0x6')](0x0,0x2)},function(_0x342f6f,_0x540419){if(_0x342f6f){return _0x20af48(_0x342f6f);}else{return _0x53d5f5(_0x540419);}});});}function checkTranscribeJob(_0x54de42,_0x3d44ba,_0x3f0f3a){var _0x4119da;return new BPromise(function(_0x28066d,_0x47b276){logger[_0x294d('0x7')](util['format']('[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)',_0x54de42['id'],_0x54de42[_0x294d('0x8')]));return getTranscriptionJob(_0x3f0f3a[_0x294d('0x9')],_0x3f0f3a[_0x294d('0xa')],_0x3d44ba[_0x294d('0xb')],_0x54de42['transcribeName'])[_0x294d('0xc')](function(_0x4fddfe){logger['info'](util['format']('[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s',_0x54de42['id'],_0x54de42[_0x294d('0x8')],_0x4fddfe[_0x294d('0xd')][_0x294d('0xe')]));if(!_0x54de42[_0x294d('0xf')]){switch(_0x4fddfe[_0x294d('0xd')][_0x294d('0xe')]){case _0x294d('0x10'):var _0x9a7c6a={'transcribeStatus':_0x4fddfe['TranscriptionJob'][_0x294d('0xe')],'fileUri':_0x4fddfe[_0x294d('0xd')]['Transcript'][_0x294d('0x11')]};logger[_0x294d('0x7')](util[_0x294d('0x12')](_0x294d('0x13'),_0x54de42['id']));return rp({'uri':_0x4fddfe[_0x294d('0xd')][_0x294d('0x14')][_0x294d('0x11')],'json':!![]})[_0x294d('0xc')](function(_0x82ad78){logger[_0x294d('0x7')](util[_0x294d('0x12')](_0x294d('0x15'),_0x54de42['id']));if(_0x82ad78&&_0x82ad78[_0x294d('0x16')]&&_0x82ad78[_0x294d('0x16')][_0x294d('0x17')]&&_0x82ad78['results']['transcripts'][_0x294d('0x18')]){_0x9a7c6a[_0x294d('0xf')]='';for(var _0x10fb2e=0x0;_0x10fb2e<_0x82ad78[_0x294d('0x16')][_0x294d('0x17')][_0x294d('0x18')];_0x10fb2e++){_0x9a7c6a['fileText']+=_0x82ad78[_0x294d('0x16')]['transcripts'][_0x10fb2e][_0x294d('0x19')]+'';}}return _0x54de42[_0x294d('0x1a')](_0x9a7c6a);})[_0x294d('0xc')](function(){logger[_0x294d('0x7')](util[_0x294d('0x12')](_0x294d('0x1b'),_0x54de42['id']));if(!_0x54de42[_0x294d('0x1c')]){throw new db['Sequelize'][(_0x294d('0x1d'))](_0x294d('0x1e'));}if(!_0x3d44ba[_0x294d('0x1f')]||!_0x3d44ba[_0x294d('0x20')]||!_0x3d44ba[_0x294d('0x21')]||!_0x3d44ba[_0x294d('0x22')]||!_0x3d44ba[_0x294d('0x23')]){throw new db[(_0x294d('0x24'))]['ValidationError'](_0x294d('0x25'));}if(!_0x9a7c6a[_0x294d('0xf')]){throw new Error(_0x294d('0x26'));}if(_0x3d44ba[_0x294d('0x20')]===_0x3f0f3a['id']){return _0x3f0f3a;}else{return db['CloudProvider']['findOne']({'where':{'id':_settings[_0x294d('0x20')]}});}})[_0x294d('0xc')](function(_0x33ccc){if(!_0x33ccc){throw new db[(_0x294d('0x24'))][(_0x294d('0x1d'))](_0x294d('0x27'));}if(!_0x33ccc[_0x294d('0x9')]||!_0x33ccc[_0x294d('0xa')]){throw new db[(_0x294d('0x24'))]['ValidationError'](_0x294d('0x28'));}_0x4119da=_0x33ccc;logger[_0x294d('0x7')](util[_0x294d('0x12')]('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0x54de42['id']));return sentiment(_0x4119da[_0x294d('0x9')],_0x4119da[_0x294d('0xa')],_0x3d44ba['sentimentRegion'],_0x9a7c6a[_0x294d('0xf')],_0x3d44ba[_0x294d('0x22')]);})['then'](function(_0x585b16){logger[_0x294d('0x7')](util[_0x294d('0x12')](_0x294d('0x29'),_0x54de42['id']));return _0x54de42['update']({'sentiment':_0x585b16[_0x294d('0x2a')],'sPositive':_0x585b16[_0x294d('0x2b')][_0x294d('0x2c')],'sNegative':_0x585b16[_0x294d('0x2b')][_0x294d('0x2d')],'sMixed':_0x585b16[_0x294d('0x2b')][_0x294d('0x2e')],'sNeutral':_0x585b16[_0x294d('0x2b')][_0x294d('0x2f')]});})[_0x294d('0xc')](function(){logger[_0x294d('0x7')](util[_0x294d('0x12')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x54de42['id']));_0x28066d();});case _0x294d('0x30'):return _0x54de42[_0x294d('0x1a')]({'transcribeStatus':_0x294d('0x30'),'failureReason':_0x4fddfe['TranscriptionJob'][_0x294d('0x31')]})[_0x294d('0xc')](function(){logger[_0x294d('0x7')](util[_0x294d('0x12')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x54de42['id']));_0x28066d();});default:logger[_0x294d('0x7')](util[_0x294d('0x12')](_0x294d('0x32'),_0x54de42['id']));break;}}else{return BPromise['resolve']()[_0x294d('0xc')](function(){if(!_0x54de42[_0x294d('0x1c')]){throw new db[(_0x294d('0x24'))]['ValidationError'](_0x294d('0x1e'));}if(!_0x3d44ba[_0x294d('0x1f')]||!_0x3d44ba[_0x294d('0x20')]||!_0x3d44ba[_0x294d('0x21')]||!_0x3d44ba[_0x294d('0x22')]||!_0x3d44ba[_0x294d('0x23')]){throw new db[(_0x294d('0x24'))][(_0x294d('0x1d'))](_0x294d('0x25'));}if(!_0x54de42[_0x294d('0xf')]){throw new Error(_0x294d('0x26'));}if(_0x3d44ba[_0x294d('0x20')]===_0x3f0f3a['id']){return _0x3f0f3a;}else{return db[_0x294d('0x33')][_0x294d('0x34')]({'where':{'id':_settings[_0x294d('0x20')]}});}})[_0x294d('0xc')](function(_0x3b3821){if(!_0x3b3821){throw new db[(_0x294d('0x24'))]['ValidationError'](_0x294d('0x27'));}if(!_0x3b3821[_0x294d('0x9')]||!_0x3b3821[_0x294d('0xa')]){throw new db['Sequelize'][(_0x294d('0x1d'))](_0x294d('0x28'));}_0x4119da=_0x3b3821;logger['info'](util[_0x294d('0x12')](_0x294d('0x35'),_0x54de42['id']));return sentiment(_0x4119da[_0x294d('0x9')],_0x4119da['data2'],_0x3d44ba[_0x294d('0x21')],_0x54de42[_0x294d('0xf')],_0x3d44ba[_0x294d('0x22')]);})[_0x294d('0xc')](function(_0x16e9f8){logger[_0x294d('0x7')](util['format']('[RECORDING:%d]\x20Sentiment\x20Analysis\x20available',_0x54de42['id']));return _0x54de42['update']({'sentiment':_0x16e9f8[_0x294d('0x2a')],'sPositive':_0x16e9f8[_0x294d('0x2b')][_0x294d('0x2c')],'sNegative':_0x16e9f8[_0x294d('0x2b')][_0x294d('0x2d')],'sMixed':_0x16e9f8['SentimentScore'][_0x294d('0x2e')],'sNeutral':_0x16e9f8['SentimentScore']['Neutral'],'transcribeStatus':_0x294d('0x10')});})[_0x294d('0xc')](function(){logger[_0x294d('0x7')](util[_0x294d('0x12')](_0x294d('0x1b'),_0x54de42['id']));_0x28066d();});}})[_0x294d('0x36')](function(_0x1bb8b8){if(_0x1bb8b8){if(!_0x1bb8b8['name']||_0x1bb8b8['name']!=='SequelizeValidationError'){logger['error'](util[_0x294d('0x12')](_0x294d('0x37'),_0x54de42['id']),util[_0x294d('0x38')](_0x1bb8b8,{'showHidden':![],'depth':null}));}}_0x28066d();});});}function checkTranscribe(){var _0x31d034;var _0x1d708c;var _0x82590d;return db[_0x294d('0x39')][_0x294d('0x3a')]({'where':{'transcribeStatus':_0x294d('0x3b')}})[_0x294d('0xc')](function(_0x2a50f0){if(!_0x2a50f0||!_0x2a50f0['length']){throw new db[(_0x294d('0x24'))][(_0x294d('0x1d'))](_0x294d('0x3c'));}_0x31d034=_0x2a50f0;return db[_0x294d('0x3d')][_0x294d('0x34')]({'where':{'id':0x1}});})['then'](function(_0x91b2da){if(!_0x91b2da){throw new db[(_0x294d('0x24'))][(_0x294d('0x1d'))]('Settings\x20not\x20available');}_0x1d708c=_0x91b2da;if(!_0x1d708c[_0x294d('0x3e')]||!_0x1d708c[_0x294d('0x3f')]||!_0x1d708c[_0x294d('0xb')]||!_0x1d708c[_0x294d('0x22')]||!_0x1d708c['bucket']){throw new db[(_0x294d('0x24'))][(_0x294d('0x1d'))](_0x294d('0x40'));}return db['CloudProvider'][_0x294d('0x34')]({'where':{'id':_0x1d708c[_0x294d('0x3f')]}});})['then'](function(_0x4e3380){if(!_0x4e3380){throw new db[(_0x294d('0x24'))][(_0x294d('0x1d'))](_0x294d('0x27'));}if(!_0x4e3380[_0x294d('0x9')]||!_0x4e3380['data2']){throw new db['Sequelize'][(_0x294d('0x1d'))]('Cloud\x20Provider\x20not\x20configured');}_0x82590d=_0x4e3380;var _0x34b9b0=[];_0x31d034[_0x294d('0x41')](function(_0x16b911){_0x34b9b0[_0x294d('0x42')](checkTranscribeJob(_0x16b911,_0x1d708c,_0x82590d));});return BPromise[_0x294d('0x43')](_0x34b9b0);})[_0x294d('0x36')](function(_0x39e93c){if(_0x39e93c){if(!_0x39e93c['name']||_0x39e93c[_0x294d('0x44')]!==_0x294d('0x45')){logger[_0x294d('0x46')](util[_0x294d('0x38')](_0x39e93c,{'showHidden':![],'depth':null}));}}});}exports[_0x294d('0x47')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};