Built motion from commit (unavailable).|2.5.26
[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 _0x9a1f=['error','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','inspect','VoiceRecording','findAll','Setting','Settings\x20not\x20available','transcribeAccountId','Transcribe\x20not\x20configured','push','all','start','aws-sdk','request-promise','util','bluebird','../../mysqldb','../../config/logger','transcribe','TranscribeService','getTranscriptionJob','detectSentiment','info','format','data2','transcribeRegion','transcribeName','then','TranscriptionJob','fileText','TranscriptionJobStatus','Transcript','TranscriptFileUri','[RECORDING:%d]\x20Get\x20transcript','results','transcripts','length','transcript','update','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','tempSentiment','Sequelize','ValidationError','Sentiment\x20Analysis\x20not\x20requested','sentiment','sentimentAccountId','sentimentRegion','language','bucket','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available','findOne','Cloud\x20Provider\x20not\x20available','data1','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Sentiment','SentimentScore','Positive','Negative','Mixed','Neutral','FAILED','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','CloudProvider','COMPLETED','catch','name','SequelizeValidationError'];(function(_0x5b18c4,_0x491f56){var _0x3bc7f1=function(_0x159352){while(--_0x159352){_0x5b18c4['push'](_0x5b18c4['shift']());}};_0x3bc7f1(++_0x491f56);}(_0x9a1f,0x1b6));var _0xf9a1=function(_0x5037ab,_0x43209e){_0x5037ab=_0x5037ab-0x0;var _0x512adb=_0x9a1f[_0x5037ab];return _0x512adb;};var _=require('lodash');var AWS=require(_0xf9a1('0x0'));var rp=require(_0xf9a1('0x1'));var util=require(_0xf9a1('0x2'));var BPromise=require(_0xf9a1('0x3'));var db=require(_0xf9a1('0x4'))['db'];var logger=require(_0xf9a1('0x5'))(_0xf9a1('0x6'));function getTranscriptionJob(_0x1c791a,_0x5d1164,_0x4afde7,_0x2a9bc4){return new Promise(function(_0x415c0d,_0x1c27d6){var _0x1633f=new AWS[(_0xf9a1('0x7'))]({'accessKeyId':_0x5d1164,'secretAccessKey':_0x1c791a,'region':_0x4afde7});_0x1633f[_0xf9a1('0x8')]({'TranscriptionJobName':_0x2a9bc4},function(_0x490e76,_0x3ff964){if(_0x490e76){return _0x1c27d6(_0x490e76);}else{return _0x415c0d(_0x3ff964);}});});}function sentiment(_0x5a388b,_0xec40a1,_0x5efc11,_0x562d69,_0x23c4e7){return new Promise(function(_0x36b476,_0x2a170b){var _0x9ee9fc=new AWS['Comprehend']({'accessKeyId':_0xec40a1,'secretAccessKey':_0x5a388b,'region':_0x5efc11});_0x9ee9fc[_0xf9a1('0x9')]({'Text':_0x562d69,'LanguageCode':_0x23c4e7['substring'](0x0,0x2)},function(_0x2ca865,_0x2ba332){if(_0x2ca865){return _0x2a170b(_0x2ca865);}else{return _0x36b476(_0x2ba332);}});});}function checkTranscribeJob(_0x1cda35,_0x23f679,_0x4ca0cf){var _0x45fabe;return new BPromise(function(_0xb7ebd6,_0x276554){logger[_0xf9a1('0xa')](util[_0xf9a1('0xb')]('[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)',_0x1cda35['id'],_0x1cda35['transcribeName']));return getTranscriptionJob(_0x4ca0cf['data1'],_0x4ca0cf[_0xf9a1('0xc')],_0x23f679[_0xf9a1('0xd')],_0x1cda35[_0xf9a1('0xe')])[_0xf9a1('0xf')](function(_0x8c8c14){logger[_0xf9a1('0xa')](util[_0xf9a1('0xb')]('[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s',_0x1cda35['id'],_0x1cda35[_0xf9a1('0xe')],_0x8c8c14[_0xf9a1('0x10')]['TranscriptionJobStatus']));if(!_0x1cda35[_0xf9a1('0x11')]){switch(_0x8c8c14[_0xf9a1('0x10')][_0xf9a1('0x12')]){case'COMPLETED':var _0x19819b={'transcribeStatus':_0x8c8c14['TranscriptionJob'][_0xf9a1('0x12')],'fileUri':_0x8c8c14[_0xf9a1('0x10')][_0xf9a1('0x13')][_0xf9a1('0x14')]};logger['info'](util[_0xf9a1('0xb')](_0xf9a1('0x15'),_0x1cda35['id']));return rp({'uri':_0x8c8c14[_0xf9a1('0x10')][_0xf9a1('0x13')][_0xf9a1('0x14')],'json':!![]})['then'](function(_0x21b227){logger[_0xf9a1('0xa')](util[_0xf9a1('0xb')]('[RECORDING:%d]\x20Transcript\x20downloaded',_0x1cda35['id']));if(_0x21b227&&_0x21b227[_0xf9a1('0x16')]&&_0x21b227['results'][_0xf9a1('0x17')]&&_0x21b227[_0xf9a1('0x16')][_0xf9a1('0x17')][_0xf9a1('0x18')]){_0x19819b['fileText']='';for(var _0x213318=0x0;_0x213318<_0x21b227['results'][_0xf9a1('0x17')][_0xf9a1('0x18')];_0x213318++){_0x19819b[_0xf9a1('0x11')]+=_0x21b227[_0xf9a1('0x16')][_0xf9a1('0x17')][_0x213318][_0xf9a1('0x19')]+'';}}return _0x1cda35[_0xf9a1('0x1a')](_0x19819b);})['then'](function(){logger[_0xf9a1('0xa')](util['format'](_0xf9a1('0x1b'),_0x1cda35['id']));if(!_0x1cda35[_0xf9a1('0x1c')]){throw new db[(_0xf9a1('0x1d'))][(_0xf9a1('0x1e'))](_0xf9a1('0x1f'));}if(!_0x23f679[_0xf9a1('0x20')]||!_0x23f679[_0xf9a1('0x21')]||!_0x23f679[_0xf9a1('0x22')]||!_0x23f679[_0xf9a1('0x23')]||!_0x23f679[_0xf9a1('0x24')]){throw new db[(_0xf9a1('0x1d'))][(_0xf9a1('0x1e'))](_0xf9a1('0x25'));}if(!_0x19819b[_0xf9a1('0x11')]){throw new Error(_0xf9a1('0x26'));}if(_0x23f679[_0xf9a1('0x21')]===_0x4ca0cf['id']){return _0x4ca0cf;}else{return db['CloudProvider'][_0xf9a1('0x27')]({'where':{'id':_settings['sentimentAccountId']}});}})[_0xf9a1('0xf')](function(_0xec85cc){if(!_0xec85cc){throw new db[(_0xf9a1('0x1d'))]['ValidationError'](_0xf9a1('0x28'));}if(!_0xec85cc[_0xf9a1('0x29')]||!_0xec85cc['data2']){throw new db['Sequelize'][(_0xf9a1('0x1e'))](_0xf9a1('0x2a'));}_0x45fabe=_0xec85cc;logger[_0xf9a1('0xa')](util[_0xf9a1('0xb')](_0xf9a1('0x2b'),_0x1cda35['id']));return sentiment(_0x45fabe[_0xf9a1('0x29')],_0x45fabe[_0xf9a1('0xc')],_0x23f679[_0xf9a1('0x22')],_0x19819b[_0xf9a1('0x11')],_0x23f679[_0xf9a1('0x23')]);})[_0xf9a1('0xf')](function(_0x337922){logger[_0xf9a1('0xa')](util[_0xf9a1('0xb')](_0xf9a1('0x2c'),_0x1cda35['id']));return _0x1cda35[_0xf9a1('0x1a')]({'sentiment':_0x337922[_0xf9a1('0x2d')],'sPositive':_0x337922[_0xf9a1('0x2e')][_0xf9a1('0x2f')],'sNegative':_0x337922[_0xf9a1('0x2e')][_0xf9a1('0x30')],'sMixed':_0x337922[_0xf9a1('0x2e')][_0xf9a1('0x31')],'sNeutral':_0x337922[_0xf9a1('0x2e')][_0xf9a1('0x32')]});})['then'](function(){logger[_0xf9a1('0xa')](util[_0xf9a1('0xb')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x1cda35['id']));_0xb7ebd6();});case _0xf9a1('0x33'):return _0x1cda35[_0xf9a1('0x1a')]({'transcribeStatus':_0xf9a1('0x33'),'failureReason':_0x8c8c14[_0xf9a1('0x10')]['FailureReason']})[_0xf9a1('0xf')](function(){logger[_0xf9a1('0xa')](util['format'](_0xf9a1('0x1b'),_0x1cda35['id']));_0xb7ebd6();});default:logger[_0xf9a1('0xa')](util[_0xf9a1('0xb')](_0xf9a1('0x34'),_0x1cda35['id']));break;}}else{return BPromise[_0xf9a1('0x35')]()[_0xf9a1('0xf')](function(){if(!_0x1cda35[_0xf9a1('0x1c')]){throw new db[(_0xf9a1('0x1d'))][(_0xf9a1('0x1e'))](_0xf9a1('0x1f'));}if(!_0x23f679[_0xf9a1('0x20')]||!_0x23f679[_0xf9a1('0x21')]||!_0x23f679[_0xf9a1('0x22')]||!_0x23f679['language']||!_0x23f679[_0xf9a1('0x24')]){throw new db[(_0xf9a1('0x1d'))][(_0xf9a1('0x1e'))](_0xf9a1('0x25'));}if(!_0x1cda35[_0xf9a1('0x11')]){throw new Error(_0xf9a1('0x26'));}if(_0x23f679[_0xf9a1('0x21')]===_0x4ca0cf['id']){return _0x4ca0cf;}else{return db[_0xf9a1('0x36')]['findOne']({'where':{'id':_settings[_0xf9a1('0x21')]}});}})[_0xf9a1('0xf')](function(_0x4e639d){if(!_0x4e639d){throw new db[(_0xf9a1('0x1d'))][(_0xf9a1('0x1e'))](_0xf9a1('0x28'));}if(!_0x4e639d['data1']||!_0x4e639d[_0xf9a1('0xc')]){throw new db['Sequelize'][(_0xf9a1('0x1e'))](_0xf9a1('0x2a'));}_0x45fabe=_0x4e639d;logger[_0xf9a1('0xa')](util[_0xf9a1('0xb')](_0xf9a1('0x2b'),_0x1cda35['id']));return sentiment(_0x45fabe[_0xf9a1('0x29')],_0x45fabe[_0xf9a1('0xc')],_0x23f679[_0xf9a1('0x22')],_0x1cda35[_0xf9a1('0x11')],_0x23f679[_0xf9a1('0x23')]);})['then'](function(_0x331359){logger[_0xf9a1('0xa')](util[_0xf9a1('0xb')](_0xf9a1('0x2c'),_0x1cda35['id']));return _0x1cda35[_0xf9a1('0x1a')]({'sentiment':_0x331359['Sentiment'],'sPositive':_0x331359[_0xf9a1('0x2e')][_0xf9a1('0x2f')],'sNegative':_0x331359[_0xf9a1('0x2e')][_0xf9a1('0x30')],'sMixed':_0x331359[_0xf9a1('0x2e')][_0xf9a1('0x31')],'sNeutral':_0x331359[_0xf9a1('0x2e')][_0xf9a1('0x32')],'transcribeStatus':_0xf9a1('0x37')});})['then'](function(){logger[_0xf9a1('0xa')](util['format'](_0xf9a1('0x1b'),_0x1cda35['id']));_0xb7ebd6();});}})[_0xf9a1('0x38')](function(_0x24b4fa){if(_0x24b4fa){if(!_0x24b4fa[_0xf9a1('0x39')]||_0x24b4fa[_0xf9a1('0x39')]!==_0xf9a1('0x3a')){logger[_0xf9a1('0x3b')](util[_0xf9a1('0xb')](_0xf9a1('0x3c'),_0x1cda35['id']),util[_0xf9a1('0x3d')](_0x24b4fa,{'showHidden':![],'depth':null}));}}_0xb7ebd6();});});}function checkTranscribe(){var _0x225f62;var _0x4cfcc0;var _0x540a26;return db[_0xf9a1('0x3e')][_0xf9a1('0x3f')]({'where':{'transcribeStatus':'IN_PROGRESS'}})['then'](function(_0x4e4957){if(!_0x4e4957||!_0x4e4957['length']){throw new db[(_0xf9a1('0x1d'))][(_0xf9a1('0x1e'))]('No\x20transcribe\x20job\x20to\x20check');}_0x225f62=_0x4e4957;return db[_0xf9a1('0x40')][_0xf9a1('0x27')]({'where':{'id':0x1}});})[_0xf9a1('0xf')](function(_0x994c19){if(!_0x994c19){throw new db[(_0xf9a1('0x1d'))][(_0xf9a1('0x1e'))](_0xf9a1('0x41'));}_0x4cfcc0=_0x994c19;if(!_0x4cfcc0['transcribe']||!_0x4cfcc0[_0xf9a1('0x42')]||!_0x4cfcc0[_0xf9a1('0xd')]||!_0x4cfcc0['language']||!_0x4cfcc0['bucket']){throw new db[(_0xf9a1('0x1d'))][(_0xf9a1('0x1e'))](_0xf9a1('0x43'));}return db[_0xf9a1('0x36')][_0xf9a1('0x27')]({'where':{'id':_0x4cfcc0[_0xf9a1('0x42')]}});})[_0xf9a1('0xf')](function(_0x39b62e){if(!_0x39b62e){throw new db['Sequelize'][(_0xf9a1('0x1e'))](_0xf9a1('0x28'));}if(!_0x39b62e[_0xf9a1('0x29')]||!_0x39b62e['data2']){throw new db[(_0xf9a1('0x1d'))][(_0xf9a1('0x1e'))]('Cloud\x20Provider\x20not\x20configured');}_0x540a26=_0x39b62e;var _0x3172d1=[];_0x225f62['forEach'](function(_0x1a7483){_0x3172d1[_0xf9a1('0x44')](checkTranscribeJob(_0x1a7483,_0x4cfcc0,_0x540a26));});return BPromise[_0xf9a1('0x45')](_0x3172d1);})[_0xf9a1('0x38')](function(_0x132bb9){if(_0x132bb9){if(!_0x132bb9[_0xf9a1('0x39')]||_0x132bb9[_0xf9a1('0x39')]!==_0xf9a1('0x3a')){logger[_0xf9a1('0x3b')](util['inspect'](_0x132bb9,{'showHidden':![],'depth':null}));}}});}exports[_0xf9a1('0x46')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};