Built motion from commit (unavailable).|2.5.10
[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 _0x751e=['FailureReason','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','Sentiment\x20Analysis\x20not\x20requested','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','Positive','Mixed','catch','name','SequelizeValidationError','error','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','inspect','VoiceRecording','findAll','IN_PROGRESS','No\x20transcribe\x20job\x20to\x20check','Setting','Settings\x20not\x20available','transcribe','transcribeAccountId','forEach','push','all','start','aws-sdk','request-promise','util','../../config/logger','TranscribeService','Comprehend','substring','format','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeName','data1','data2','transcribeRegion','then','info','TranscriptionJob','fileText','TranscriptionJobStatus','COMPLETED','Transcript','TranscriptFileUri','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','transcript','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','tempSentiment','ValidationError','sentiment','sentimentRegion','language','bucket','Sequelize','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available','sentimentAccountId','CloudProvider','findOne','Cloud\x20Provider\x20not\x20available','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','update','Sentiment','SentimentScore','Neutral','FAILED'];(function(_0x284807,_0x4be925){var _0x50c774=function(_0xf56cf7){while(--_0xf56cf7){_0x284807['push'](_0x284807['shift']());}};_0x50c774(++_0x4be925);}(_0x751e,0xa6));var _0xe751=function(_0x48ccd9,_0x659abd){_0x48ccd9=_0x48ccd9-0x0;var _0x429f7a=_0x751e[_0x48ccd9];return _0x429f7a;};var _=require('lodash');var AWS=require(_0xe751('0x0'));var rp=require(_0xe751('0x1'));var util=require(_0xe751('0x2'));var BPromise=require('bluebird');var db=require('../../mysqldb')['db'];var logger=require(_0xe751('0x3'))('transcribe');function getTranscriptionJob(_0x585d0b,_0x33308c,_0x2030dc,_0x235521){return new Promise(function(_0x4939ab,_0x599d3a){var _0x3949f8=new AWS[(_0xe751('0x4'))]({'accessKeyId':_0x33308c,'secretAccessKey':_0x585d0b,'region':_0x2030dc});_0x3949f8['getTranscriptionJob']({'TranscriptionJobName':_0x235521},function(_0x4d60c8,_0xc978e5){if(_0x4d60c8){return _0x599d3a(_0x4d60c8);}else{return _0x4939ab(_0xc978e5);}});});}function sentiment(_0x156246,_0x4eef0d,_0x332b86,_0x4781d2,_0x45ad01){return new Promise(function(_0x5eb336,_0x2e4831){var _0x2bb727=new AWS[(_0xe751('0x5'))]({'accessKeyId':_0x4eef0d,'secretAccessKey':_0x156246,'region':_0x332b86});_0x2bb727['detectSentiment']({'Text':_0x4781d2,'LanguageCode':_0x45ad01[_0xe751('0x6')](0x0,0x2)},function(_0x4073d0,_0x591904){if(_0x4073d0){return _0x2e4831(_0x4073d0);}else{return _0x5eb336(_0x591904);}});});}function checkTranscribeJob(_0x57ae9a,_0x5e5cee,_0x4761f3){var _0x2d530d;return new BPromise(function(_0x136ab6,_0x2bf8fc){logger['info'](util[_0xe751('0x7')](_0xe751('0x8'),_0x57ae9a['id'],_0x57ae9a[_0xe751('0x9')]));return getTranscriptionJob(_0x4761f3[_0xe751('0xa')],_0x4761f3[_0xe751('0xb')],_0x5e5cee[_0xe751('0xc')],_0x57ae9a[_0xe751('0x9')])[_0xe751('0xd')](function(_0x29e335){logger[_0xe751('0xe')](util[_0xe751('0x7')]('[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s',_0x57ae9a['id'],_0x57ae9a[_0xe751('0x9')],_0x29e335[_0xe751('0xf')]['TranscriptionJobStatus']));if(!_0x57ae9a[_0xe751('0x10')]){switch(_0x29e335[_0xe751('0xf')][_0xe751('0x11')]){case _0xe751('0x12'):var _0x1ff348={'transcribeStatus':_0x29e335[_0xe751('0xf')][_0xe751('0x11')],'fileUri':_0x29e335[_0xe751('0xf')][_0xe751('0x13')][_0xe751('0x14')]};logger['info'](util[_0xe751('0x7')]('[RECORDING:%d]\x20Get\x20transcript',_0x57ae9a['id']));return rp({'uri':_0x29e335[_0xe751('0xf')][_0xe751('0x13')][_0xe751('0x14')],'json':!![]})[_0xe751('0xd')](function(_0x2084ac){logger['info'](util['format'](_0xe751('0x15'),_0x57ae9a['id']));if(_0x2084ac&&_0x2084ac[_0xe751('0x16')]&&_0x2084ac[_0xe751('0x16')][_0xe751('0x17')]&&_0x2084ac['results'][_0xe751('0x17')][_0xe751('0x18')]){_0x1ff348[_0xe751('0x10')]='';for(var _0x59d24f=0x0;_0x59d24f<_0x2084ac['results']['transcripts'][_0xe751('0x18')];_0x59d24f++){_0x1ff348[_0xe751('0x10')]+=_0x2084ac[_0xe751('0x16')][_0xe751('0x17')][_0x59d24f][_0xe751('0x19')]+'';}}return _0x57ae9a['update'](_0x1ff348);})[_0xe751('0xd')](function(){logger[_0xe751('0xe')](util[_0xe751('0x7')](_0xe751('0x1a'),_0x57ae9a['id']));if(!_0x57ae9a[_0xe751('0x1b')]){throw new db['Sequelize'][(_0xe751('0x1c'))]('Sentiment\x20Analysis\x20not\x20requested');}if(!_0x5e5cee[_0xe751('0x1d')]||!_0x5e5cee['sentimentAccountId']||!_0x5e5cee[_0xe751('0x1e')]||!_0x5e5cee[_0xe751('0x1f')]||!_0x5e5cee[_0xe751('0x20')]){throw new db[(_0xe751('0x21'))][(_0xe751('0x1c'))](_0xe751('0x22'));}if(!_0x1ff348[_0xe751('0x10')]){throw new Error(_0xe751('0x23'));}if(_0x5e5cee[_0xe751('0x24')]===_0x4761f3['id']){return _0x4761f3;}else{return db[_0xe751('0x25')][_0xe751('0x26')]({'where':{'id':_settings['sentimentAccountId']}});}})['then'](function(_0x4f185e){if(!_0x4f185e){throw new db[(_0xe751('0x21'))][(_0xe751('0x1c'))](_0xe751('0x27'));}if(!_0x4f185e[_0xe751('0xa')]||!_0x4f185e['data2']){throw new db[(_0xe751('0x21'))][(_0xe751('0x1c'))](_0xe751('0x28'));}_0x2d530d=_0x4f185e;logger[_0xe751('0xe')](util[_0xe751('0x7')]('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0x57ae9a['id']));return sentiment(_0x2d530d[_0xe751('0xa')],_0x2d530d['data2'],_0x5e5cee[_0xe751('0x1e')],_0x1ff348[_0xe751('0x10')],_0x5e5cee['language']);})[_0xe751('0xd')](function(_0x4269bf){logger[_0xe751('0xe')](util[_0xe751('0x7')](_0xe751('0x29'),_0x57ae9a['id']));return _0x57ae9a[_0xe751('0x2a')]({'sentiment':_0x4269bf[_0xe751('0x2b')],'sPositive':_0x4269bf[_0xe751('0x2c')]['Positive'],'sNegative':_0x4269bf[_0xe751('0x2c')]['Negative'],'sMixed':_0x4269bf[_0xe751('0x2c')]['Mixed'],'sNeutral':_0x4269bf[_0xe751('0x2c')][_0xe751('0x2d')]});})[_0xe751('0xd')](function(){logger[_0xe751('0xe')](util['format'](_0xe751('0x1a'),_0x57ae9a['id']));_0x136ab6();});case _0xe751('0x2e'):return _0x57ae9a[_0xe751('0x2a')]({'transcribeStatus':_0xe751('0x2e'),'failureReason':_0x29e335['TranscriptionJob'][_0xe751('0x2f')]})[_0xe751('0xd')](function(){logger[_0xe751('0xe')](util[_0xe751('0x7')](_0xe751('0x1a'),_0x57ae9a['id']));_0x136ab6();});default:logger['info'](util[_0xe751('0x7')](_0xe751('0x30'),_0x57ae9a['id']));break;}}else{return BPromise['resolve']()[_0xe751('0xd')](function(){if(!_0x57ae9a[_0xe751('0x1b')]){throw new db[(_0xe751('0x21'))][(_0xe751('0x1c'))](_0xe751('0x31'));}if(!_0x5e5cee[_0xe751('0x1d')]||!_0x5e5cee[_0xe751('0x24')]||!_0x5e5cee[_0xe751('0x1e')]||!_0x5e5cee[_0xe751('0x1f')]||!_0x5e5cee[_0xe751('0x20')]){throw new db['Sequelize'][(_0xe751('0x1c'))]('Sentiment\x20Analysis\x20not\x20configured');}if(!_0x57ae9a[_0xe751('0x10')]){throw new Error(_0xe751('0x23'));}if(_0x5e5cee['sentimentAccountId']===_0x4761f3['id']){return _0x4761f3;}else{return db[_0xe751('0x25')][_0xe751('0x26')]({'where':{'id':_settings['sentimentAccountId']}});}})[_0xe751('0xd')](function(_0x18c718){if(!_0x18c718){throw new db[(_0xe751('0x21'))][(_0xe751('0x1c'))](_0xe751('0x27'));}if(!_0x18c718[_0xe751('0xa')]||!_0x18c718[_0xe751('0xb')]){throw new db[(_0xe751('0x21'))][(_0xe751('0x1c'))](_0xe751('0x28'));}_0x2d530d=_0x18c718;logger[_0xe751('0xe')](util['format'](_0xe751('0x32'),_0x57ae9a['id']));return sentiment(_0x2d530d[_0xe751('0xa')],_0x2d530d['data2'],_0x5e5cee[_0xe751('0x1e')],_0x57ae9a[_0xe751('0x10')],_0x5e5cee[_0xe751('0x1f')]);})[_0xe751('0xd')](function(_0xe534b2){logger[_0xe751('0xe')](util['format'](_0xe751('0x29'),_0x57ae9a['id']));return _0x57ae9a[_0xe751('0x2a')]({'sentiment':_0xe534b2[_0xe751('0x2b')],'sPositive':_0xe534b2[_0xe751('0x2c')][_0xe751('0x33')],'sNegative':_0xe534b2['SentimentScore']['Negative'],'sMixed':_0xe534b2[_0xe751('0x2c')][_0xe751('0x34')],'sNeutral':_0xe534b2[_0xe751('0x2c')][_0xe751('0x2d')],'transcribeStatus':_0xe751('0x12')});})[_0xe751('0xd')](function(){logger[_0xe751('0xe')](util[_0xe751('0x7')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x57ae9a['id']));_0x136ab6();});}})[_0xe751('0x35')](function(_0x40d7ff){if(_0x40d7ff){if(!_0x40d7ff[_0xe751('0x36')]||_0x40d7ff[_0xe751('0x36')]!==_0xe751('0x37')){logger[_0xe751('0x38')](util[_0xe751('0x7')](_0xe751('0x39'),_0x57ae9a['id']),util[_0xe751('0x3a')](_0x40d7ff,{'showHidden':![],'depth':null}));}}_0x136ab6();});});}function checkTranscribe(){var _0x20868f;var _0x68a882;var _0x4d94c0;return db[_0xe751('0x3b')][_0xe751('0x3c')]({'where':{'transcribeStatus':_0xe751('0x3d')}})['then'](function(_0x408763){if(!_0x408763||!_0x408763[_0xe751('0x18')]){throw new db[(_0xe751('0x21'))][(_0xe751('0x1c'))](_0xe751('0x3e'));}_0x20868f=_0x408763;return db[_0xe751('0x3f')][_0xe751('0x26')]({'where':{'id':0x1}});})[_0xe751('0xd')](function(_0x4791c2){if(!_0x4791c2){throw new db[(_0xe751('0x21'))]['ValidationError'](_0xe751('0x40'));}_0x68a882=_0x4791c2;if(!_0x68a882[_0xe751('0x41')]||!_0x68a882[_0xe751('0x42')]||!_0x68a882['transcribeRegion']||!_0x68a882[_0xe751('0x1f')]||!_0x68a882[_0xe751('0x20')]){throw new db[(_0xe751('0x21'))]['ValidationError']('Transcribe\x20not\x20configured');}return db['CloudProvider'][_0xe751('0x26')]({'where':{'id':_0x68a882[_0xe751('0x42')]}});})[_0xe751('0xd')](function(_0x227a72){if(!_0x227a72){throw new db[(_0xe751('0x21'))][(_0xe751('0x1c'))](_0xe751('0x27'));}if(!_0x227a72[_0xe751('0xa')]||!_0x227a72[_0xe751('0xb')]){throw new db['Sequelize'][(_0xe751('0x1c'))]('Cloud\x20Provider\x20not\x20configured');}_0x4d94c0=_0x227a72;var _0x3a01ff=[];_0x20868f[_0xe751('0x43')](function(_0x408d4f){_0x3a01ff[_0xe751('0x44')](checkTranscribeJob(_0x408d4f,_0x68a882,_0x4d94c0));});return BPromise[_0xe751('0x45')](_0x3a01ff);})[_0xe751('0x35')](function(_0x2449d5){if(_0x2449d5){if(!_0x2449d5[_0xe751('0x36')]||_0x2449d5[_0xe751('0x36')]!==_0xe751('0x37')){logger['error'](util[_0xe751('0x3a')](_0x2449d5,{'showHidden':![],'depth':null}));}}});}exports[_0xe751('0x46')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};