Built motion from commit b5996064.|2.6.21
[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 _0x7427=['TranscriptionJob','TranscriptionJobStatus','COMPLETED','[RECORDING:%d]\x20Get\x20transcript','Transcript','TranscriptFileUri','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','fileText','transcript','update','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','tempSentiment','Sequelize','Sentiment\x20Analysis\x20not\x20requested','bucket','ValidationError','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available','sentimentAccountId','CloudProvider','findOne','Cloud\x20Provider\x20not\x20available','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','data1','sentimentRegion','language','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Sentiment','SentimentScore','Negative','Mixed','FAILED','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','sentiment','Neutral','catch','name','SequelizeValidationError','error','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','VoiceRecording','findAll','IN_PROGRESS','No\x20transcribe\x20job\x20to\x20check','Setting','Settings\x20not\x20available','transcribeAccountId','transcribeRegion','forEach','push','all','inspect','start','lodash','aws-sdk','request-promise','util','../../mysqldb','../../config/logger','TranscribeService','getTranscriptionJob','detectSentiment','info','data2','then','format','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','transcribeName'];(function(_0x2b6c01,_0x5d1bbd){var _0x25563b=function(_0xda31be){while(--_0xda31be){_0x2b6c01['push'](_0x2b6c01['shift']());}};_0x25563b(++_0x5d1bbd);}(_0x7427,0x111));var _0x7742=function(_0x650e11,_0x284f86){_0x650e11=_0x650e11-0x0;var _0x1a9b47=_0x7427[_0x650e11];return _0x1a9b47;};var _=require(_0x7742('0x0'));var AWS=require(_0x7742('0x1'));var rp=require(_0x7742('0x2'));var util=require(_0x7742('0x3'));var BPromise=require('bluebird');var db=require(_0x7742('0x4'))['db'];var logger=require(_0x7742('0x5'))('transcribe');function getTranscriptionJob(_0x192977,_0x2eb7b0,_0x46ccf8,_0x30ae00){return new Promise(function(_0x360d59,_0x57fa9a){var _0x4fe55f=new AWS[(_0x7742('0x6'))]({'accessKeyId':_0x2eb7b0,'secretAccessKey':_0x192977,'region':_0x46ccf8});_0x4fe55f[_0x7742('0x7')]({'TranscriptionJobName':_0x30ae00},function(_0x3c6ceb,_0x1da94f){if(_0x3c6ceb){return _0x57fa9a(_0x3c6ceb);}else{return _0x360d59(_0x1da94f);}});});}function sentiment(_0x46bdb9,_0x3288e7,_0x46696e,_0x415f6b,_0x5b6bc2){return new Promise(function(_0x4c9fc5,_0x1ae341){var _0x6d1c2=new AWS['Comprehend']({'accessKeyId':_0x3288e7,'secretAccessKey':_0x46bdb9,'region':_0x46696e});_0x6d1c2[_0x7742('0x8')]({'Text':_0x415f6b,'LanguageCode':_0x5b6bc2['substring'](0x0,0x2)},function(_0x585130,_0x3a3e80){if(_0x585130){return _0x1ae341(_0x585130);}else{return _0x4c9fc5(_0x3a3e80);}});});}function checkTranscribeJob(_0x70107c,_0x5b1ff8,_0x18863b){var _0x1f5487;return new BPromise(function(_0x4eb824,_0x499d19){logger[_0x7742('0x9')](util['format']('[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)',_0x70107c['id'],_0x70107c['transcribeName']));return getTranscriptionJob(_0x18863b['data1'],_0x18863b[_0x7742('0xa')],_0x5b1ff8['transcribeRegion'],_0x70107c['transcribeName'])[_0x7742('0xb')](function(_0x5422f7){logger[_0x7742('0x9')](util[_0x7742('0xc')](_0x7742('0xd'),_0x70107c['id'],_0x70107c[_0x7742('0xe')],_0x5422f7[_0x7742('0xf')][_0x7742('0x10')]));if(!_0x70107c['fileText']){switch(_0x5422f7[_0x7742('0xf')][_0x7742('0x10')]){case _0x7742('0x11'):var _0xf5913d={'transcribeStatus':_0x5422f7['TranscriptionJob'][_0x7742('0x10')],'fileUri':_0x5422f7['TranscriptionJob']['Transcript']['TranscriptFileUri']};logger['info'](util[_0x7742('0xc')](_0x7742('0x12'),_0x70107c['id']));return rp({'uri':_0x5422f7[_0x7742('0xf')][_0x7742('0x13')][_0x7742('0x14')],'json':!![]})['then'](function(_0x5239b8){logger[_0x7742('0x9')](util[_0x7742('0xc')](_0x7742('0x15'),_0x70107c['id']));if(_0x5239b8&&_0x5239b8[_0x7742('0x16')]&&_0x5239b8['results'][_0x7742('0x17')]&&_0x5239b8[_0x7742('0x16')][_0x7742('0x17')][_0x7742('0x18')]){_0xf5913d[_0x7742('0x19')]='';for(var _0x399b4a=0x0;_0x399b4a<_0x5239b8['results'][_0x7742('0x17')][_0x7742('0x18')];_0x399b4a++){_0xf5913d[_0x7742('0x19')]+=_0x5239b8[_0x7742('0x16')][_0x7742('0x17')][_0x399b4a][_0x7742('0x1a')]+'';}}return _0x70107c[_0x7742('0x1b')](_0xf5913d);})[_0x7742('0xb')](function(){logger['info'](util['format'](_0x7742('0x1c'),_0x70107c['id']));if(!_0x70107c[_0x7742('0x1d')]){throw new db[(_0x7742('0x1e'))]['ValidationError'](_0x7742('0x1f'));}if(!_0x5b1ff8['sentiment']||!_0x5b1ff8['sentimentAccountId']||!_0x5b1ff8['sentimentRegion']||!_0x5b1ff8['language']||!_0x5b1ff8[_0x7742('0x20')]){throw new db[(_0x7742('0x1e'))][(_0x7742('0x21'))](_0x7742('0x22'));}if(!_0xf5913d[_0x7742('0x19')]){throw new Error(_0x7742('0x23'));}if(_0x5b1ff8[_0x7742('0x24')]===_0x18863b['id']){return _0x18863b;}else{return db[_0x7742('0x25')][_0x7742('0x26')]({'where':{'id':_settings[_0x7742('0x24')]}});}})['then'](function(_0x1bd9c0){if(!_0x1bd9c0){throw new db[(_0x7742('0x1e'))]['ValidationError'](_0x7742('0x27'));}if(!_0x1bd9c0['data1']||!_0x1bd9c0['data2']){throw new db[(_0x7742('0x1e'))][(_0x7742('0x21'))](_0x7742('0x28'));}_0x1f5487=_0x1bd9c0;logger[_0x7742('0x9')](util[_0x7742('0xc')](_0x7742('0x29'),_0x70107c['id']));return sentiment(_0x1f5487[_0x7742('0x2a')],_0x1f5487[_0x7742('0xa')],_0x5b1ff8[_0x7742('0x2b')],_0xf5913d['fileText'],_0x5b1ff8[_0x7742('0x2c')]);})[_0x7742('0xb')](function(_0x20a63d){logger[_0x7742('0x9')](util[_0x7742('0xc')](_0x7742('0x2d'),_0x70107c['id']));return _0x70107c[_0x7742('0x1b')]({'sentiment':_0x20a63d[_0x7742('0x2e')],'sPositive':_0x20a63d['SentimentScore']['Positive'],'sNegative':_0x20a63d[_0x7742('0x2f')][_0x7742('0x30')],'sMixed':_0x20a63d[_0x7742('0x2f')][_0x7742('0x31')],'sNeutral':_0x20a63d['SentimentScore']['Neutral']});})[_0x7742('0xb')](function(){logger[_0x7742('0x9')](util[_0x7742('0xc')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x70107c['id']));_0x4eb824();});case _0x7742('0x32'):return _0x70107c[_0x7742('0x1b')]({'transcribeStatus':_0x7742('0x32'),'failureReason':_0x5422f7[_0x7742('0xf')]['FailureReason']})[_0x7742('0xb')](function(){logger[_0x7742('0x9')](util['format'](_0x7742('0x1c'),_0x70107c['id']));_0x4eb824();});default:logger[_0x7742('0x9')](util[_0x7742('0xc')](_0x7742('0x33'),_0x70107c['id']));break;}}else{return BPromise['resolve']()['then'](function(){if(!_0x70107c['tempSentiment']){throw new db[(_0x7742('0x1e'))][(_0x7742('0x21'))](_0x7742('0x1f'));}if(!_0x5b1ff8[_0x7742('0x34')]||!_0x5b1ff8[_0x7742('0x24')]||!_0x5b1ff8[_0x7742('0x2b')]||!_0x5b1ff8[_0x7742('0x2c')]||!_0x5b1ff8[_0x7742('0x20')]){throw new db[(_0x7742('0x1e'))][(_0x7742('0x21'))](_0x7742('0x22'));}if(!_0x70107c[_0x7742('0x19')]){throw new Error(_0x7742('0x23'));}if(_0x5b1ff8[_0x7742('0x24')]===_0x18863b['id']){return _0x18863b;}else{return db[_0x7742('0x25')][_0x7742('0x26')]({'where':{'id':_settings[_0x7742('0x24')]}});}})[_0x7742('0xb')](function(_0x9eeebf){if(!_0x9eeebf){throw new db['Sequelize'][(_0x7742('0x21'))](_0x7742('0x27'));}if(!_0x9eeebf[_0x7742('0x2a')]||!_0x9eeebf[_0x7742('0xa')]){throw new db[(_0x7742('0x1e'))][(_0x7742('0x21'))](_0x7742('0x28'));}_0x1f5487=_0x9eeebf;logger['info'](util[_0x7742('0xc')]('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0x70107c['id']));return sentiment(_0x1f5487[_0x7742('0x2a')],_0x1f5487['data2'],_0x5b1ff8[_0x7742('0x2b')],_0x70107c[_0x7742('0x19')],_0x5b1ff8['language']);})['then'](function(_0x5516eb){logger[_0x7742('0x9')](util[_0x7742('0xc')](_0x7742('0x2d'),_0x70107c['id']));return _0x70107c[_0x7742('0x1b')]({'sentiment':_0x5516eb['Sentiment'],'sPositive':_0x5516eb['SentimentScore']['Positive'],'sNegative':_0x5516eb[_0x7742('0x2f')][_0x7742('0x30')],'sMixed':_0x5516eb[_0x7742('0x2f')]['Mixed'],'sNeutral':_0x5516eb[_0x7742('0x2f')][_0x7742('0x35')],'transcribeStatus':_0x7742('0x11')});})[_0x7742('0xb')](function(){logger[_0x7742('0x9')](util[_0x7742('0xc')](_0x7742('0x1c'),_0x70107c['id']));_0x4eb824();});}})[_0x7742('0x36')](function(_0x2dc53d){if(_0x2dc53d){if(!_0x2dc53d[_0x7742('0x37')]||_0x2dc53d[_0x7742('0x37')]!==_0x7742('0x38')){logger[_0x7742('0x39')](util[_0x7742('0xc')](_0x7742('0x3a'),_0x70107c['id']),util['inspect'](_0x2dc53d,{'showHidden':![],'depth':null}));}}_0x4eb824();});});}function checkTranscribe(){var _0x25d294;var _0xa6de5d;var _0x12be35;return db[_0x7742('0x3b')][_0x7742('0x3c')]({'where':{'transcribeStatus':_0x7742('0x3d')}})[_0x7742('0xb')](function(_0x1e46fb){if(!_0x1e46fb||!_0x1e46fb['length']){throw new db['Sequelize'][(_0x7742('0x21'))](_0x7742('0x3e'));}_0x25d294=_0x1e46fb;return db[_0x7742('0x3f')]['findOne']({'where':{'id':0x1}});})[_0x7742('0xb')](function(_0x55d0cc){if(!_0x55d0cc){throw new db[(_0x7742('0x1e'))][(_0x7742('0x21'))](_0x7742('0x40'));}_0xa6de5d=_0x55d0cc;if(!_0xa6de5d['transcribe']||!_0xa6de5d[_0x7742('0x41')]||!_0xa6de5d[_0x7742('0x42')]||!_0xa6de5d[_0x7742('0x2c')]||!_0xa6de5d[_0x7742('0x20')]){throw new db[(_0x7742('0x1e'))][(_0x7742('0x21'))]('Transcribe\x20not\x20configured');}return db['CloudProvider'][_0x7742('0x26')]({'where':{'id':_0xa6de5d[_0x7742('0x41')]}});})[_0x7742('0xb')](function(_0x3c2d76){if(!_0x3c2d76){throw new db[(_0x7742('0x1e'))][(_0x7742('0x21'))](_0x7742('0x27'));}if(!_0x3c2d76[_0x7742('0x2a')]||!_0x3c2d76['data2']){throw new db['Sequelize'][(_0x7742('0x21'))](_0x7742('0x28'));}_0x12be35=_0x3c2d76;var _0x1000e0=[];_0x25d294[_0x7742('0x43')](function(_0x51a743){_0x1000e0[_0x7742('0x44')](checkTranscribeJob(_0x51a743,_0xa6de5d,_0x12be35));});return BPromise[_0x7742('0x45')](_0x1000e0);})['catch'](function(_0x4af43c){if(_0x4af43c){if(!_0x4af43c[_0x7742('0x37')]||_0x4af43c[_0x7742('0x37')]!=='SequelizeValidationError'){logger[_0x7742('0x39')](util[_0x7742('0x46')](_0x4af43c,{'showHidden':![],'depth':null}));}}});}exports[_0x7742('0x47')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};