Built motion from commit 91ed41ac.|2.5.44
[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 _0x9c5e=['IN_PROGRESS','Setting','Settings\x20not\x20available','transcribe','transcribeAccountId','Transcribe\x20not\x20configured','Cloud\x20Provider\x20not\x20configured','all','inspect','start','lodash','aws-sdk','request-promise','util','bluebird','getTranscriptionJob','Comprehend','detectSentiment','substring','format','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeName','data1','data2','transcribeRegion','then','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJob','TranscriptionJobStatus','COMPLETED','Transcript','TranscriptFileUri','info','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','fileText','transcript','update','tempSentiment','ValidationError','Sentiment\x20Analysis\x20not\x20requested','sentimentAccountId','sentimentRegion','language','bucket','Sequelize','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available','CloudProvider','findOne','Cloud\x20Provider\x20not\x20available','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Sentiment','SentimentScore','Positive','Negative','Mixed','Neutral','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','FAILED','FailureReason','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','sentiment','catch','name','SequelizeValidationError','error','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','VoiceRecording'];(function(_0x392f00,_0x57a1c6){var _0xd09e32=function(_0x3f6e62){while(--_0x3f6e62){_0x392f00['push'](_0x392f00['shift']());}};_0xd09e32(++_0x57a1c6);}(_0x9c5e,0x9c));var _0xe9c5=function(_0x567466,_0x542caf){_0x567466=_0x567466-0x0;var _0x5959af=_0x9c5e[_0x567466];return _0x5959af;};var _=require(_0xe9c5('0x0'));var AWS=require(_0xe9c5('0x1'));var rp=require(_0xe9c5('0x2'));var util=require(_0xe9c5('0x3'));var BPromise=require(_0xe9c5('0x4'));var db=require('../../mysqldb')['db'];var logger=require('../../config/logger')('transcribe');function getTranscriptionJob(_0x120d2f,_0x13d5d7,_0x4fa4c5,_0x361ef3){return new Promise(function(_0x5c11e5,_0x1e6a31){var _0x6f6045=new AWS['TranscribeService']({'accessKeyId':_0x13d5d7,'secretAccessKey':_0x120d2f,'region':_0x4fa4c5});_0x6f6045[_0xe9c5('0x5')]({'TranscriptionJobName':_0x361ef3},function(_0x34ee69,_0x228ef3){if(_0x34ee69){return _0x1e6a31(_0x34ee69);}else{return _0x5c11e5(_0x228ef3);}});});}function sentiment(_0x38218c,_0x4a2b0b,_0x596f4c,_0x29d7e0,_0x322bc4){return new Promise(function(_0x1ab284,_0x10bf26){var _0x1f1e22=new AWS[(_0xe9c5('0x6'))]({'accessKeyId':_0x4a2b0b,'secretAccessKey':_0x38218c,'region':_0x596f4c});_0x1f1e22[_0xe9c5('0x7')]({'Text':_0x29d7e0,'LanguageCode':_0x322bc4[_0xe9c5('0x8')](0x0,0x2)},function(_0x28622c,_0xd643f2){if(_0x28622c){return _0x10bf26(_0x28622c);}else{return _0x1ab284(_0xd643f2);}});});}function checkTranscribeJob(_0x46dc68,_0x27f3e1,_0x471401){var _0x25ff11;return new BPromise(function(_0x3962b8,_0x409f65){logger['info'](util[_0xe9c5('0x9')](_0xe9c5('0xa'),_0x46dc68['id'],_0x46dc68[_0xe9c5('0xb')]));return getTranscriptionJob(_0x471401[_0xe9c5('0xc')],_0x471401[_0xe9c5('0xd')],_0x27f3e1[_0xe9c5('0xe')],_0x46dc68['transcribeName'])[_0xe9c5('0xf')](function(_0x14eb41){logger['info'](util[_0xe9c5('0x9')](_0xe9c5('0x10'),_0x46dc68['id'],_0x46dc68[_0xe9c5('0xb')],_0x14eb41[_0xe9c5('0x11')][_0xe9c5('0x12')]));if(!_0x46dc68['fileText']){switch(_0x14eb41[_0xe9c5('0x11')][_0xe9c5('0x12')]){case _0xe9c5('0x13'):var _0x32061f={'transcribeStatus':_0x14eb41['TranscriptionJob'][_0xe9c5('0x12')],'fileUri':_0x14eb41[_0xe9c5('0x11')][_0xe9c5('0x14')][_0xe9c5('0x15')]};logger[_0xe9c5('0x16')](util['format']('[RECORDING:%d]\x20Get\x20transcript',_0x46dc68['id']));return rp({'uri':_0x14eb41[_0xe9c5('0x11')]['Transcript'][_0xe9c5('0x15')],'json':!![]})[_0xe9c5('0xf')](function(_0x21b02a){logger[_0xe9c5('0x16')](util['format'](_0xe9c5('0x17'),_0x46dc68['id']));if(_0x21b02a&&_0x21b02a[_0xe9c5('0x18')]&&_0x21b02a[_0xe9c5('0x18')][_0xe9c5('0x19')]&&_0x21b02a[_0xe9c5('0x18')][_0xe9c5('0x19')][_0xe9c5('0x1a')]){_0x32061f[_0xe9c5('0x1b')]='';for(var _0x1cd9c4=0x0;_0x1cd9c4<_0x21b02a[_0xe9c5('0x18')]['transcripts']['length'];_0x1cd9c4++){_0x32061f[_0xe9c5('0x1b')]+=_0x21b02a[_0xe9c5('0x18')][_0xe9c5('0x19')][_0x1cd9c4][_0xe9c5('0x1c')]+'';}}return _0x46dc68[_0xe9c5('0x1d')](_0x32061f);})[_0xe9c5('0xf')](function(){logger['info'](util[_0xe9c5('0x9')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x46dc68['id']));if(!_0x46dc68[_0xe9c5('0x1e')]){throw new db['Sequelize'][(_0xe9c5('0x1f'))](_0xe9c5('0x20'));}if(!_0x27f3e1['sentiment']||!_0x27f3e1[_0xe9c5('0x21')]||!_0x27f3e1[_0xe9c5('0x22')]||!_0x27f3e1[_0xe9c5('0x23')]||!_0x27f3e1[_0xe9c5('0x24')]){throw new db[(_0xe9c5('0x25'))]['ValidationError'](_0xe9c5('0x26'));}if(!_0x32061f['fileText']){throw new Error(_0xe9c5('0x27'));}if(_0x27f3e1['sentimentAccountId']===_0x471401['id']){return _0x471401;}else{return db[_0xe9c5('0x28')][_0xe9c5('0x29')]({'where':{'id':_settings[_0xe9c5('0x21')]}});}})[_0xe9c5('0xf')](function(_0x4766c8){if(!_0x4766c8){throw new db['Sequelize'][(_0xe9c5('0x1f'))](_0xe9c5('0x2a'));}if(!_0x4766c8[_0xe9c5('0xc')]||!_0x4766c8[_0xe9c5('0xd')]){throw new db[(_0xe9c5('0x25'))]['ValidationError']('Cloud\x20Provider\x20not\x20configured');}_0x25ff11=_0x4766c8;logger[_0xe9c5('0x16')](util[_0xe9c5('0x9')](_0xe9c5('0x2b'),_0x46dc68['id']));return sentiment(_0x25ff11[_0xe9c5('0xc')],_0x25ff11[_0xe9c5('0xd')],_0x27f3e1[_0xe9c5('0x22')],_0x32061f[_0xe9c5('0x1b')],_0x27f3e1[_0xe9c5('0x23')]);})['then'](function(_0x1fb0c2){logger[_0xe9c5('0x16')](util['format'](_0xe9c5('0x2c'),_0x46dc68['id']));return _0x46dc68['update']({'sentiment':_0x1fb0c2[_0xe9c5('0x2d')],'sPositive':_0x1fb0c2[_0xe9c5('0x2e')][_0xe9c5('0x2f')],'sNegative':_0x1fb0c2[_0xe9c5('0x2e')][_0xe9c5('0x30')],'sMixed':_0x1fb0c2[_0xe9c5('0x2e')][_0xe9c5('0x31')],'sNeutral':_0x1fb0c2[_0xe9c5('0x2e')][_0xe9c5('0x32')]});})[_0xe9c5('0xf')](function(){logger[_0xe9c5('0x16')](util[_0xe9c5('0x9')](_0xe9c5('0x33'),_0x46dc68['id']));_0x3962b8();});case _0xe9c5('0x34'):return _0x46dc68[_0xe9c5('0x1d')]({'transcribeStatus':_0xe9c5('0x34'),'failureReason':_0x14eb41[_0xe9c5('0x11')][_0xe9c5('0x35')]})[_0xe9c5('0xf')](function(){logger['info'](util[_0xe9c5('0x9')](_0xe9c5('0x33'),_0x46dc68['id']));_0x3962b8();});default:logger[_0xe9c5('0x16')](util[_0xe9c5('0x9')](_0xe9c5('0x36'),_0x46dc68['id']));break;}}else{return BPromise[_0xe9c5('0x37')]()['then'](function(){if(!_0x46dc68[_0xe9c5('0x1e')]){throw new db[(_0xe9c5('0x25'))][(_0xe9c5('0x1f'))]('Sentiment\x20Analysis\x20not\x20requested');}if(!_0x27f3e1[_0xe9c5('0x38')]||!_0x27f3e1[_0xe9c5('0x21')]||!_0x27f3e1[_0xe9c5('0x22')]||!_0x27f3e1[_0xe9c5('0x23')]||!_0x27f3e1[_0xe9c5('0x24')]){throw new db[(_0xe9c5('0x25'))][(_0xe9c5('0x1f'))](_0xe9c5('0x26'));}if(!_0x46dc68[_0xe9c5('0x1b')]){throw new Error(_0xe9c5('0x27'));}if(_0x27f3e1[_0xe9c5('0x21')]===_0x471401['id']){return _0x471401;}else{return db['CloudProvider']['findOne']({'where':{'id':_settings[_0xe9c5('0x21')]}});}})[_0xe9c5('0xf')](function(_0x21bc80){if(!_0x21bc80){throw new db[(_0xe9c5('0x25'))]['ValidationError']('Cloud\x20Provider\x20not\x20available');}if(!_0x21bc80[_0xe9c5('0xc')]||!_0x21bc80[_0xe9c5('0xd')]){throw new db['Sequelize'][(_0xe9c5('0x1f'))]('Cloud\x20Provider\x20not\x20configured');}_0x25ff11=_0x21bc80;logger['info'](util['format'](_0xe9c5('0x2b'),_0x46dc68['id']));return sentiment(_0x25ff11[_0xe9c5('0xc')],_0x25ff11[_0xe9c5('0xd')],_0x27f3e1[_0xe9c5('0x22')],_0x46dc68['fileText'],_0x27f3e1[_0xe9c5('0x23')]);})[_0xe9c5('0xf')](function(_0x4488ba){logger[_0xe9c5('0x16')](util[_0xe9c5('0x9')](_0xe9c5('0x2c'),_0x46dc68['id']));return _0x46dc68[_0xe9c5('0x1d')]({'sentiment':_0x4488ba[_0xe9c5('0x2d')],'sPositive':_0x4488ba['SentimentScore'][_0xe9c5('0x2f')],'sNegative':_0x4488ba[_0xe9c5('0x2e')][_0xe9c5('0x30')],'sMixed':_0x4488ba[_0xe9c5('0x2e')][_0xe9c5('0x31')],'sNeutral':_0x4488ba[_0xe9c5('0x2e')]['Neutral'],'transcribeStatus':'COMPLETED'});})['then'](function(){logger['info'](util[_0xe9c5('0x9')](_0xe9c5('0x33'),_0x46dc68['id']));_0x3962b8();});}})[_0xe9c5('0x39')](function(_0x5a30da){if(_0x5a30da){if(!_0x5a30da[_0xe9c5('0x3a')]||_0x5a30da[_0xe9c5('0x3a')]!==_0xe9c5('0x3b')){logger[_0xe9c5('0x3c')](util[_0xe9c5('0x9')](_0xe9c5('0x3d'),_0x46dc68['id']),util['inspect'](_0x5a30da,{'showHidden':![],'depth':null}));}}_0x3962b8();});});}function checkTranscribe(){var _0x165667;var _0x3b5b44;var _0x1da6a3;return db[_0xe9c5('0x3e')]['findAll']({'where':{'transcribeStatus':_0xe9c5('0x3f')}})[_0xe9c5('0xf')](function(_0xa4b95f){if(!_0xa4b95f||!_0xa4b95f[_0xe9c5('0x1a')]){throw new db[(_0xe9c5('0x25'))][(_0xe9c5('0x1f'))]('No\x20transcribe\x20job\x20to\x20check');}_0x165667=_0xa4b95f;return db[_0xe9c5('0x40')][_0xe9c5('0x29')]({'where':{'id':0x1}});})[_0xe9c5('0xf')](function(_0x9d0154){if(!_0x9d0154){throw new db['Sequelize'][(_0xe9c5('0x1f'))](_0xe9c5('0x41'));}_0x3b5b44=_0x9d0154;if(!_0x3b5b44[_0xe9c5('0x42')]||!_0x3b5b44[_0xe9c5('0x43')]||!_0x3b5b44[_0xe9c5('0xe')]||!_0x3b5b44[_0xe9c5('0x23')]||!_0x3b5b44['bucket']){throw new db['Sequelize'][(_0xe9c5('0x1f'))](_0xe9c5('0x44'));}return db[_0xe9c5('0x28')][_0xe9c5('0x29')]({'where':{'id':_0x3b5b44[_0xe9c5('0x43')]}});})[_0xe9c5('0xf')](function(_0x2a9260){if(!_0x2a9260){throw new db[(_0xe9c5('0x25'))][(_0xe9c5('0x1f'))](_0xe9c5('0x2a'));}if(!_0x2a9260[_0xe9c5('0xc')]||!_0x2a9260[_0xe9c5('0xd')]){throw new db[(_0xe9c5('0x25'))][(_0xe9c5('0x1f'))](_0xe9c5('0x45'));}_0x1da6a3=_0x2a9260;var _0x28b534=[];_0x165667['forEach'](function(_0x4ea076){_0x28b534['push'](checkTranscribeJob(_0x4ea076,_0x3b5b44,_0x1da6a3));});return BPromise[_0xe9c5('0x46')](_0x28b534);})[_0xe9c5('0x39')](function(_0x2b8076){if(_0x2b8076){if(!_0x2b8076['name']||_0x2b8076[_0xe9c5('0x3a')]!=='SequelizeValidationError'){logger[_0xe9c5('0x3c')](util[_0xe9c5('0x47')](_0x2b8076,{'showHidden':![],'depth':null}));}}});}exports[_0xe9c5('0x48')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};