Built motion from commit (unavailable).|2.5.22
[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 _0xddb2=['transcribeRegion','then','format','TranscriptionJobStatus','fileText','TranscriptionJob','COMPLETED','Transcript','[RECORDING:%d]\x20Get\x20transcript','TranscriptFileUri','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','transcript','tempSentiment','ValidationError','sentimentAccountId','sentimentRegion','bucket','Sequelize','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','language','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','update','Sentiment','SentimentScore','Positive','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','FAILED','FailureReason','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','Sentiment\x20Analysis\x20not\x20requested','sentiment','CloudProvider','findOne','Cloud\x20Provider\x20not\x20available','Cloud\x20Provider\x20not\x20configured','Negative','Mixed','Neutral','catch','name','SequelizeValidationError','inspect','findAll','IN_PROGRESS','Setting','Settings\x20not\x20available','transcribeAccountId','Transcribe\x20not\x20configured','forEach','error','start','lodash','aws-sdk','request-promise','../../mysqldb','../../config/logger','transcribe','TranscribeService','Comprehend','detectSentiment','substring','info','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeName','data1','data2'];(function(_0x40cb7a,_0x505484){var _0x246f9c=function(_0x3bd730){while(--_0x3bd730){_0x40cb7a['push'](_0x40cb7a['shift']());}};_0x246f9c(++_0x505484);}(_0xddb2,0x111));var _0x2ddb=function(_0x32defb,_0x527e2c){_0x32defb=_0x32defb-0x0;var _0x2364ce=_0xddb2[_0x32defb];return _0x2364ce;};var _=require(_0x2ddb('0x0'));var AWS=require(_0x2ddb('0x1'));var rp=require(_0x2ddb('0x2'));var util=require('util');var BPromise=require('bluebird');var db=require(_0x2ddb('0x3'))['db'];var logger=require(_0x2ddb('0x4'))(_0x2ddb('0x5'));function getTranscriptionJob(_0x429792,_0x2bf2a6,_0x5a86ef,_0x39294a){return new Promise(function(_0x5641ec,_0x520d01){var _0x3ad284=new AWS[(_0x2ddb('0x6'))]({'accessKeyId':_0x2bf2a6,'secretAccessKey':_0x429792,'region':_0x5a86ef});_0x3ad284['getTranscriptionJob']({'TranscriptionJobName':_0x39294a},function(_0x1d8811,_0x5e0961){if(_0x1d8811){return _0x520d01(_0x1d8811);}else{return _0x5641ec(_0x5e0961);}});});}function sentiment(_0x5e7c26,_0x4d29e7,_0x39a1cc,_0x55fefa,_0x1535f8){return new Promise(function(_0x13d8c4,_0x470667){var _0x19e34f=new AWS[(_0x2ddb('0x7'))]({'accessKeyId':_0x4d29e7,'secretAccessKey':_0x5e7c26,'region':_0x39a1cc});_0x19e34f[_0x2ddb('0x8')]({'Text':_0x55fefa,'LanguageCode':_0x1535f8[_0x2ddb('0x9')](0x0,0x2)},function(_0x4bce32,_0x167a1f){if(_0x4bce32){return _0x470667(_0x4bce32);}else{return _0x13d8c4(_0x167a1f);}});});}function checkTranscribeJob(_0x12413c,_0x251d8a,_0x370c7d){var _0x265e71;return new BPromise(function(_0x32535e,_0x358391){logger[_0x2ddb('0xa')](util['format'](_0x2ddb('0xb'),_0x12413c['id'],_0x12413c[_0x2ddb('0xc')]));return getTranscriptionJob(_0x370c7d[_0x2ddb('0xd')],_0x370c7d[_0x2ddb('0xe')],_0x251d8a[_0x2ddb('0xf')],_0x12413c[_0x2ddb('0xc')])[_0x2ddb('0x10')](function(_0x3f9917){logger[_0x2ddb('0xa')](util[_0x2ddb('0x11')]('[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s',_0x12413c['id'],_0x12413c[_0x2ddb('0xc')],_0x3f9917['TranscriptionJob'][_0x2ddb('0x12')]));if(!_0x12413c[_0x2ddb('0x13')]){switch(_0x3f9917[_0x2ddb('0x14')][_0x2ddb('0x12')]){case _0x2ddb('0x15'):var _0x4d97d5={'transcribeStatus':_0x3f9917[_0x2ddb('0x14')]['TranscriptionJobStatus'],'fileUri':_0x3f9917['TranscriptionJob'][_0x2ddb('0x16')]['TranscriptFileUri']};logger[_0x2ddb('0xa')](util[_0x2ddb('0x11')](_0x2ddb('0x17'),_0x12413c['id']));return rp({'uri':_0x3f9917[_0x2ddb('0x14')][_0x2ddb('0x16')][_0x2ddb('0x18')],'json':!![]})[_0x2ddb('0x10')](function(_0x5b2a68){logger[_0x2ddb('0xa')](util[_0x2ddb('0x11')](_0x2ddb('0x19'),_0x12413c['id']));if(_0x5b2a68&&_0x5b2a68[_0x2ddb('0x1a')]&&_0x5b2a68[_0x2ddb('0x1a')][_0x2ddb('0x1b')]&&_0x5b2a68[_0x2ddb('0x1a')][_0x2ddb('0x1b')][_0x2ddb('0x1c')]){_0x4d97d5[_0x2ddb('0x13')]='';for(var _0x22abcb=0x0;_0x22abcb<_0x5b2a68[_0x2ddb('0x1a')][_0x2ddb('0x1b')]['length'];_0x22abcb++){_0x4d97d5[_0x2ddb('0x13')]+=_0x5b2a68[_0x2ddb('0x1a')][_0x2ddb('0x1b')][_0x22abcb][_0x2ddb('0x1d')]+'';}}return _0x12413c['update'](_0x4d97d5);})[_0x2ddb('0x10')](function(){logger['info'](util['format']('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x12413c['id']));if(!_0x12413c[_0x2ddb('0x1e')]){throw new db['Sequelize'][(_0x2ddb('0x1f'))]('Sentiment\x20Analysis\x20not\x20requested');}if(!_0x251d8a['sentiment']||!_0x251d8a[_0x2ddb('0x20')]||!_0x251d8a[_0x2ddb('0x21')]||!_0x251d8a['language']||!_0x251d8a[_0x2ddb('0x22')]){throw new db[(_0x2ddb('0x23'))][(_0x2ddb('0x1f'))](_0x2ddb('0x24'));}if(!_0x4d97d5[_0x2ddb('0x13')]){throw new Error(_0x2ddb('0x25'));}if(_0x251d8a[_0x2ddb('0x20')]===_0x370c7d['id']){return _0x370c7d;}else{return db['CloudProvider']['findOne']({'where':{'id':_settings[_0x2ddb('0x20')]}});}})[_0x2ddb('0x10')](function(_0x483ccd){if(!_0x483ccd){throw new db[(_0x2ddb('0x23'))][(_0x2ddb('0x1f'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x483ccd[_0x2ddb('0xd')]||!_0x483ccd[_0x2ddb('0xe')]){throw new db[(_0x2ddb('0x23'))][(_0x2ddb('0x1f'))]('Cloud\x20Provider\x20not\x20configured');}_0x265e71=_0x483ccd;logger[_0x2ddb('0xa')](util[_0x2ddb('0x11')](_0x2ddb('0x26'),_0x12413c['id']));return sentiment(_0x265e71[_0x2ddb('0xd')],_0x265e71['data2'],_0x251d8a[_0x2ddb('0x21')],_0x4d97d5['fileText'],_0x251d8a[_0x2ddb('0x27')]);})['then'](function(_0x35d9e4){logger['info'](util[_0x2ddb('0x11')](_0x2ddb('0x28'),_0x12413c['id']));return _0x12413c[_0x2ddb('0x29')]({'sentiment':_0x35d9e4[_0x2ddb('0x2a')],'sPositive':_0x35d9e4[_0x2ddb('0x2b')][_0x2ddb('0x2c')],'sNegative':_0x35d9e4['SentimentScore']['Negative'],'sMixed':_0x35d9e4[_0x2ddb('0x2b')]['Mixed'],'sNeutral':_0x35d9e4[_0x2ddb('0x2b')]['Neutral']});})['then'](function(){logger['info'](util[_0x2ddb('0x11')](_0x2ddb('0x2d'),_0x12413c['id']));_0x32535e();});case _0x2ddb('0x2e'):return _0x12413c[_0x2ddb('0x29')]({'transcribeStatus':_0x2ddb('0x2e'),'failureReason':_0x3f9917[_0x2ddb('0x14')][_0x2ddb('0x2f')]})[_0x2ddb('0x10')](function(){logger[_0x2ddb('0xa')](util[_0x2ddb('0x11')](_0x2ddb('0x2d'),_0x12413c['id']));_0x32535e();});default:logger[_0x2ddb('0xa')](util[_0x2ddb('0x11')](_0x2ddb('0x30'),_0x12413c['id']));break;}}else{return BPromise[_0x2ddb('0x31')]()['then'](function(){if(!_0x12413c[_0x2ddb('0x1e')]){throw new db[(_0x2ddb('0x23'))][(_0x2ddb('0x1f'))](_0x2ddb('0x32'));}if(!_0x251d8a[_0x2ddb('0x33')]||!_0x251d8a[_0x2ddb('0x20')]||!_0x251d8a[_0x2ddb('0x21')]||!_0x251d8a[_0x2ddb('0x27')]||!_0x251d8a[_0x2ddb('0x22')]){throw new db[(_0x2ddb('0x23'))][(_0x2ddb('0x1f'))](_0x2ddb('0x24'));}if(!_0x12413c[_0x2ddb('0x13')]){throw new Error('Transcript\x20not\x20available');}if(_0x251d8a[_0x2ddb('0x20')]===_0x370c7d['id']){return _0x370c7d;}else{return db[_0x2ddb('0x34')][_0x2ddb('0x35')]({'where':{'id':_settings['sentimentAccountId']}});}})[_0x2ddb('0x10')](function(_0x901900){if(!_0x901900){throw new db[(_0x2ddb('0x23'))]['ValidationError'](_0x2ddb('0x36'));}if(!_0x901900[_0x2ddb('0xd')]||!_0x901900[_0x2ddb('0xe')]){throw new db[(_0x2ddb('0x23'))][(_0x2ddb('0x1f'))](_0x2ddb('0x37'));}_0x265e71=_0x901900;logger[_0x2ddb('0xa')](util[_0x2ddb('0x11')](_0x2ddb('0x26'),_0x12413c['id']));return sentiment(_0x265e71[_0x2ddb('0xd')],_0x265e71[_0x2ddb('0xe')],_0x251d8a['sentimentRegion'],_0x12413c[_0x2ddb('0x13')],_0x251d8a[_0x2ddb('0x27')]);})[_0x2ddb('0x10')](function(_0x3cd4ba){logger[_0x2ddb('0xa')](util['format'](_0x2ddb('0x28'),_0x12413c['id']));return _0x12413c['update']({'sentiment':_0x3cd4ba[_0x2ddb('0x2a')],'sPositive':_0x3cd4ba['SentimentScore'][_0x2ddb('0x2c')],'sNegative':_0x3cd4ba['SentimentScore'][_0x2ddb('0x38')],'sMixed':_0x3cd4ba['SentimentScore'][_0x2ddb('0x39')],'sNeutral':_0x3cd4ba[_0x2ddb('0x2b')][_0x2ddb('0x3a')],'transcribeStatus':_0x2ddb('0x15')});})[_0x2ddb('0x10')](function(){logger[_0x2ddb('0xa')](util['format'](_0x2ddb('0x2d'),_0x12413c['id']));_0x32535e();});}})[_0x2ddb('0x3b')](function(_0x414147){if(_0x414147){if(!_0x414147['name']||_0x414147[_0x2ddb('0x3c')]!==_0x2ddb('0x3d')){logger['error'](util[_0x2ddb('0x11')]('[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis',_0x12413c['id']),util[_0x2ddb('0x3e')](_0x414147,{'showHidden':![],'depth':null}));}}_0x32535e();});});}function checkTranscribe(){var _0x1da19e;var _0x58f060;var _0x5c1182;return db['VoiceRecording'][_0x2ddb('0x3f')]({'where':{'transcribeStatus':_0x2ddb('0x40')}})[_0x2ddb('0x10')](function(_0x327bb7){if(!_0x327bb7||!_0x327bb7[_0x2ddb('0x1c')]){throw new db[(_0x2ddb('0x23'))][(_0x2ddb('0x1f'))]('No\x20transcribe\x20job\x20to\x20check');}_0x1da19e=_0x327bb7;return db[_0x2ddb('0x41')][_0x2ddb('0x35')]({'where':{'id':0x1}});})[_0x2ddb('0x10')](function(_0x186d2e){if(!_0x186d2e){throw new db['Sequelize'][(_0x2ddb('0x1f'))](_0x2ddb('0x42'));}_0x58f060=_0x186d2e;if(!_0x58f060['transcribe']||!_0x58f060[_0x2ddb('0x43')]||!_0x58f060[_0x2ddb('0xf')]||!_0x58f060[_0x2ddb('0x27')]||!_0x58f060[_0x2ddb('0x22')]){throw new db[(_0x2ddb('0x23'))][(_0x2ddb('0x1f'))](_0x2ddb('0x44'));}return db[_0x2ddb('0x34')][_0x2ddb('0x35')]({'where':{'id':_0x58f060[_0x2ddb('0x43')]}});})[_0x2ddb('0x10')](function(_0x4f2fbf){if(!_0x4f2fbf){throw new db[(_0x2ddb('0x23'))][(_0x2ddb('0x1f'))](_0x2ddb('0x36'));}if(!_0x4f2fbf[_0x2ddb('0xd')]||!_0x4f2fbf[_0x2ddb('0xe')]){throw new db[(_0x2ddb('0x23'))]['ValidationError'](_0x2ddb('0x37'));}_0x5c1182=_0x4f2fbf;var _0x4372bf=[];_0x1da19e[_0x2ddb('0x45')](function(_0x1d2d3b){_0x4372bf['push'](checkTranscribeJob(_0x1d2d3b,_0x58f060,_0x5c1182));});return BPromise['all'](_0x4372bf);})['catch'](function(_0x46e339){if(_0x46e339){if(!_0x46e339['name']||_0x46e339[_0x2ddb('0x3c')]!=='SequelizeValidationError'){logger[_0x2ddb('0x46')](util[_0x2ddb('0x3e')](_0x46e339,{'showHidden':![],'depth':null}));}}});}exports[_0x2ddb('0x47')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};