Built motion from commit da24aabd.|2.6.20
[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 _0xd3a8=['[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','sentimentRegion','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Sentiment','Positive','SentimentScore','Mixed','Neutral','FAILED','FailureReason','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','findOne','Cloud\x20Provider\x20not\x20available','name','SequelizeValidationError','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','inspect','VoiceRecording','findAll','IN_PROGRESS','No\x20transcribe\x20job\x20to\x20check','Settings\x20not\x20available','transcribeAccountId','push','all','error','start','lodash','request-promise','util','bluebird','../../mysqldb','transcribe','TranscribeService','getTranscriptionJob','Comprehend','info','format','data1','transcribeRegion','transcribeName','then','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJob','TranscriptionJobStatus','fileText','COMPLETED','TranscriptFileUri','[RECORDING:%d]\x20Get\x20transcript','Transcript','results','transcripts','length','transcript','update','tempSentiment','Sequelize','ValidationError','Sentiment\x20Analysis\x20not\x20requested','sentiment','sentimentAccountId','language','bucket','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available','CloudProvider','data2','Cloud\x20Provider\x20not\x20configured'];(function(_0x42c981,_0xc70202){var _0x1f43b4=function(_0x7a9225){while(--_0x7a9225){_0x42c981['push'](_0x42c981['shift']());}};_0x1f43b4(++_0xc70202);}(_0xd3a8,0x135));var _0x8d3a=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0xd3a8[_0x19950b];return _0x3c6b41;};var _=require(_0x8d3a('0x0'));var AWS=require('aws-sdk');var rp=require(_0x8d3a('0x1'));var util=require(_0x8d3a('0x2'));var BPromise=require(_0x8d3a('0x3'));var db=require(_0x8d3a('0x4'))['db'];var logger=require('../../config/logger')(_0x8d3a('0x5'));function getTranscriptionJob(_0x2f2826,_0x478dee,_0x5e3983,_0x5ee2ca){return new Promise(function(_0x457b90,_0x59893d){var _0x588567=new AWS[(_0x8d3a('0x6'))]({'accessKeyId':_0x478dee,'secretAccessKey':_0x2f2826,'region':_0x5e3983});_0x588567[_0x8d3a('0x7')]({'TranscriptionJobName':_0x5ee2ca},function(_0x28b131,_0x40bc92){if(_0x28b131){return _0x59893d(_0x28b131);}else{return _0x457b90(_0x40bc92);}});});}function sentiment(_0x2a9a0a,_0x34bb5d,_0x3cd3e3,_0x472233,_0x87efcd){return new Promise(function(_0x117b56,_0x11aaf1){var _0x459c60=new AWS[(_0x8d3a('0x8'))]({'accessKeyId':_0x34bb5d,'secretAccessKey':_0x2a9a0a,'region':_0x3cd3e3});_0x459c60['detectSentiment']({'Text':_0x472233,'LanguageCode':_0x87efcd['substring'](0x0,0x2)},function(_0x527258,_0x222886){if(_0x527258){return _0x11aaf1(_0x527258);}else{return _0x117b56(_0x222886);}});});}function checkTranscribeJob(_0x880a06,_0xc834ec,_0x43b1ca){var _0x4759cd;return new BPromise(function(_0x29b7b9,_0x58b2b7){logger[_0x8d3a('0x9')](util[_0x8d3a('0xa')]('[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)',_0x880a06['id'],_0x880a06['transcribeName']));return getTranscriptionJob(_0x43b1ca[_0x8d3a('0xb')],_0x43b1ca['data2'],_0xc834ec[_0x8d3a('0xc')],_0x880a06[_0x8d3a('0xd')])[_0x8d3a('0xe')](function(_0x4c915d){logger[_0x8d3a('0x9')](util['format'](_0x8d3a('0xf'),_0x880a06['id'],_0x880a06['transcribeName'],_0x4c915d[_0x8d3a('0x10')][_0x8d3a('0x11')]));if(!_0x880a06[_0x8d3a('0x12')]){switch(_0x4c915d['TranscriptionJob']['TranscriptionJobStatus']){case _0x8d3a('0x13'):var _0xc8208c={'transcribeStatus':_0x4c915d[_0x8d3a('0x10')][_0x8d3a('0x11')],'fileUri':_0x4c915d[_0x8d3a('0x10')]['Transcript'][_0x8d3a('0x14')]};logger[_0x8d3a('0x9')](util[_0x8d3a('0xa')](_0x8d3a('0x15'),_0x880a06['id']));return rp({'uri':_0x4c915d[_0x8d3a('0x10')][_0x8d3a('0x16')]['TranscriptFileUri'],'json':!![]})[_0x8d3a('0xe')](function(_0x3ca6a9){logger[_0x8d3a('0x9')](util[_0x8d3a('0xa')]('[RECORDING:%d]\x20Transcript\x20downloaded',_0x880a06['id']));if(_0x3ca6a9&&_0x3ca6a9[_0x8d3a('0x17')]&&_0x3ca6a9[_0x8d3a('0x17')][_0x8d3a('0x18')]&&_0x3ca6a9['results'][_0x8d3a('0x18')][_0x8d3a('0x19')]){_0xc8208c[_0x8d3a('0x12')]='';for(var _0x327d9a=0x0;_0x327d9a<_0x3ca6a9[_0x8d3a('0x17')][_0x8d3a('0x18')][_0x8d3a('0x19')];_0x327d9a++){_0xc8208c['fileText']+=_0x3ca6a9[_0x8d3a('0x17')][_0x8d3a('0x18')][_0x327d9a][_0x8d3a('0x1a')]+'';}}return _0x880a06[_0x8d3a('0x1b')](_0xc8208c);})[_0x8d3a('0xe')](function(){logger[_0x8d3a('0x9')](util['format']('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x880a06['id']));if(!_0x880a06[_0x8d3a('0x1c')]){throw new db[(_0x8d3a('0x1d'))][(_0x8d3a('0x1e'))](_0x8d3a('0x1f'));}if(!_0xc834ec[_0x8d3a('0x20')]||!_0xc834ec[_0x8d3a('0x21')]||!_0xc834ec['sentimentRegion']||!_0xc834ec[_0x8d3a('0x22')]||!_0xc834ec[_0x8d3a('0x23')]){throw new db[(_0x8d3a('0x1d'))]['ValidationError'](_0x8d3a('0x24'));}if(!_0xc8208c[_0x8d3a('0x12')]){throw new Error(_0x8d3a('0x25'));}if(_0xc834ec['sentimentAccountId']===_0x43b1ca['id']){return _0x43b1ca;}else{return db[_0x8d3a('0x26')]['findOne']({'where':{'id':_settings[_0x8d3a('0x21')]}});}})[_0x8d3a('0xe')](function(_0x44dda3){if(!_0x44dda3){throw new db['Sequelize'][(_0x8d3a('0x1e'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x44dda3['data1']||!_0x44dda3[_0x8d3a('0x27')]){throw new db[(_0x8d3a('0x1d'))]['ValidationError'](_0x8d3a('0x28'));}_0x4759cd=_0x44dda3;logger['info'](util['format'](_0x8d3a('0x29'),_0x880a06['id']));return sentiment(_0x4759cd[_0x8d3a('0xb')],_0x4759cd['data2'],_0xc834ec[_0x8d3a('0x2a')],_0xc8208c[_0x8d3a('0x12')],_0xc834ec[_0x8d3a('0x22')]);})[_0x8d3a('0xe')](function(_0x1a46b1){logger[_0x8d3a('0x9')](util[_0x8d3a('0xa')](_0x8d3a('0x2b'),_0x880a06['id']));return _0x880a06[_0x8d3a('0x1b')]({'sentiment':_0x1a46b1[_0x8d3a('0x2c')],'sPositive':_0x1a46b1['SentimentScore'][_0x8d3a('0x2d')],'sNegative':_0x1a46b1[_0x8d3a('0x2e')]['Negative'],'sMixed':_0x1a46b1['SentimentScore'][_0x8d3a('0x2f')],'sNeutral':_0x1a46b1[_0x8d3a('0x2e')][_0x8d3a('0x30')]});})['then'](function(){logger[_0x8d3a('0x9')](util[_0x8d3a('0xa')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x880a06['id']));_0x29b7b9();});case _0x8d3a('0x31'):return _0x880a06[_0x8d3a('0x1b')]({'transcribeStatus':_0x8d3a('0x31'),'failureReason':_0x4c915d[_0x8d3a('0x10')][_0x8d3a('0x32')]})[_0x8d3a('0xe')](function(){logger['info'](util[_0x8d3a('0xa')](_0x8d3a('0x33'),_0x880a06['id']));_0x29b7b9();});default:logger[_0x8d3a('0x9')](util[_0x8d3a('0xa')](_0x8d3a('0x34'),_0x880a06['id']));break;}}else{return BPromise[_0x8d3a('0x35')]()[_0x8d3a('0xe')](function(){if(!_0x880a06[_0x8d3a('0x1c')]){throw new db[(_0x8d3a('0x1d'))][(_0x8d3a('0x1e'))]('Sentiment\x20Analysis\x20not\x20requested');}if(!_0xc834ec['sentiment']||!_0xc834ec[_0x8d3a('0x21')]||!_0xc834ec[_0x8d3a('0x2a')]||!_0xc834ec[_0x8d3a('0x22')]||!_0xc834ec[_0x8d3a('0x23')]){throw new db[(_0x8d3a('0x1d'))][(_0x8d3a('0x1e'))]('Sentiment\x20Analysis\x20not\x20configured');}if(!_0x880a06[_0x8d3a('0x12')]){throw new Error(_0x8d3a('0x25'));}if(_0xc834ec[_0x8d3a('0x21')]===_0x43b1ca['id']){return _0x43b1ca;}else{return db[_0x8d3a('0x26')][_0x8d3a('0x36')]({'where':{'id':_settings[_0x8d3a('0x21')]}});}})[_0x8d3a('0xe')](function(_0x3dd0fd){if(!_0x3dd0fd){throw new db[(_0x8d3a('0x1d'))][(_0x8d3a('0x1e'))](_0x8d3a('0x37'));}if(!_0x3dd0fd[_0x8d3a('0xb')]||!_0x3dd0fd['data2']){throw new db[(_0x8d3a('0x1d'))][(_0x8d3a('0x1e'))](_0x8d3a('0x28'));}_0x4759cd=_0x3dd0fd;logger['info'](util[_0x8d3a('0xa')](_0x8d3a('0x29'),_0x880a06['id']));return sentiment(_0x4759cd[_0x8d3a('0xb')],_0x4759cd['data2'],_0xc834ec['sentimentRegion'],_0x880a06[_0x8d3a('0x12')],_0xc834ec[_0x8d3a('0x22')]);})[_0x8d3a('0xe')](function(_0x26296a){logger[_0x8d3a('0x9')](util['format'](_0x8d3a('0x2b'),_0x880a06['id']));return _0x880a06[_0x8d3a('0x1b')]({'sentiment':_0x26296a[_0x8d3a('0x2c')],'sPositive':_0x26296a[_0x8d3a('0x2e')]['Positive'],'sNegative':_0x26296a['SentimentScore']['Negative'],'sMixed':_0x26296a[_0x8d3a('0x2e')][_0x8d3a('0x2f')],'sNeutral':_0x26296a[_0x8d3a('0x2e')][_0x8d3a('0x30')],'transcribeStatus':_0x8d3a('0x13')});})[_0x8d3a('0xe')](function(){logger['info'](util[_0x8d3a('0xa')](_0x8d3a('0x33'),_0x880a06['id']));_0x29b7b9();});}})['catch'](function(_0x234a0d){if(_0x234a0d){if(!_0x234a0d[_0x8d3a('0x38')]||_0x234a0d[_0x8d3a('0x38')]!==_0x8d3a('0x39')){logger['error'](util[_0x8d3a('0xa')](_0x8d3a('0x3a'),_0x880a06['id']),util[_0x8d3a('0x3b')](_0x234a0d,{'showHidden':![],'depth':null}));}}_0x29b7b9();});});}function checkTranscribe(){var _0x445595;var _0x178be8;var _0x45361c;return db[_0x8d3a('0x3c')][_0x8d3a('0x3d')]({'where':{'transcribeStatus':_0x8d3a('0x3e')}})[_0x8d3a('0xe')](function(_0x4df4d6){if(!_0x4df4d6||!_0x4df4d6[_0x8d3a('0x19')]){throw new db[(_0x8d3a('0x1d'))]['ValidationError'](_0x8d3a('0x3f'));}_0x445595=_0x4df4d6;return db['Setting'][_0x8d3a('0x36')]({'where':{'id':0x1}});})[_0x8d3a('0xe')](function(_0x1ec81d){if(!_0x1ec81d){throw new db[(_0x8d3a('0x1d'))]['ValidationError'](_0x8d3a('0x40'));}_0x178be8=_0x1ec81d;if(!_0x178be8[_0x8d3a('0x5')]||!_0x178be8[_0x8d3a('0x41')]||!_0x178be8[_0x8d3a('0xc')]||!_0x178be8[_0x8d3a('0x22')]||!_0x178be8[_0x8d3a('0x23')]){throw new db[(_0x8d3a('0x1d'))][(_0x8d3a('0x1e'))]('Transcribe\x20not\x20configured');}return db['CloudProvider'][_0x8d3a('0x36')]({'where':{'id':_0x178be8[_0x8d3a('0x41')]}});})[_0x8d3a('0xe')](function(_0x55dd25){if(!_0x55dd25){throw new db[(_0x8d3a('0x1d'))][(_0x8d3a('0x1e'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x55dd25[_0x8d3a('0xb')]||!_0x55dd25[_0x8d3a('0x27')]){throw new db[(_0x8d3a('0x1d'))][(_0x8d3a('0x1e'))](_0x8d3a('0x28'));}_0x45361c=_0x55dd25;var _0x336c5a=[];_0x445595['forEach'](function(_0x38c946){_0x336c5a[_0x8d3a('0x42')](checkTranscribeJob(_0x38c946,_0x178be8,_0x45361c));});return BPromise[_0x8d3a('0x43')](_0x336c5a);})['catch'](function(_0x2100ee){if(_0x2100ee){if(!_0x2100ee[_0x8d3a('0x38')]||_0x2100ee['name']!=='SequelizeValidationError'){logger[_0x8d3a('0x44')](util[_0x8d3a('0x3b')](_0x2100ee,{'showHidden':![],'depth':null}));}}});}exports[_0x8d3a('0x45')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};