67e923b2424173bf904987370709437d60ac66e2
[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 _0x33d2=['TranscriptionJobStatus','COMPLETED','Transcript','TranscriptFileUri','[RECORDING:%d]\x20Get\x20transcript','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','fileText','transcript','update','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','tempSentiment','ValidationError','Sentiment\x20Analysis\x20not\x20requested','sentiment','sentimentAccountId','sentimentRegion','Sequelize','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available','CloudProvider','findOne','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','language','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Sentiment','SentimentScore','Positive','Negative','Mixed','Neutral','FAILED','FailureReason','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','bucket','Cloud\x20Provider\x20not\x20available','SequelizeValidationError','error','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','inspect','IN_PROGRESS','No\x20transcribe\x20job\x20to\x20check','Setting','Settings\x20not\x20available','transcribeAccountId','Transcribe\x20not\x20configured','forEach','push','name','start','lodash','aws-sdk','request-promise','bluebird','../../mysqldb','transcribe','getTranscriptionJob','Comprehend','detectSentiment','info','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeName','data1','data2','transcribeRegion','then','format','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJob'];(function(_0x326d35,_0x4f65b3){var _0xd3f8f3=function(_0x1fbbaf){while(--_0x1fbbaf){_0x326d35['push'](_0x326d35['shift']());}};_0xd3f8f3(++_0x4f65b3);}(_0x33d2,0x7f));var _0x233d=function(_0x5ebf44,_0x4e543e){_0x5ebf44=_0x5ebf44-0x0;var _0x2fef12=_0x33d2[_0x5ebf44];return _0x2fef12;};var _=require(_0x233d('0x0'));var AWS=require(_0x233d('0x1'));var rp=require(_0x233d('0x2'));var util=require('util');var BPromise=require(_0x233d('0x3'));var db=require(_0x233d('0x4'))['db'];var logger=require('../../config/logger')(_0x233d('0x5'));function getTranscriptionJob(_0x299a1d,_0x3f60bb,_0xffb043,_0xc0ab48){return new Promise(function(_0x3f311b,_0x15ba43){var _0x15bb45=new AWS['TranscribeService']({'accessKeyId':_0x3f60bb,'secretAccessKey':_0x299a1d,'region':_0xffb043});_0x15bb45[_0x233d('0x6')]({'TranscriptionJobName':_0xc0ab48},function(_0x5629e6,_0x22a0f3){if(_0x5629e6){return _0x15ba43(_0x5629e6);}else{return _0x3f311b(_0x22a0f3);}});});}function sentiment(_0x2247d3,_0x2c8626,_0x4ae63d,_0x3c819e,_0x5cc1fe){return new Promise(function(_0x3a6471,_0x5df708){var _0x1a9d36=new AWS[(_0x233d('0x7'))]({'accessKeyId':_0x2c8626,'secretAccessKey':_0x2247d3,'region':_0x4ae63d});_0x1a9d36[_0x233d('0x8')]({'Text':_0x3c819e,'LanguageCode':_0x5cc1fe['substring'](0x0,0x2)},function(_0xed2db2,_0x33848e){if(_0xed2db2){return _0x5df708(_0xed2db2);}else{return _0x3a6471(_0x33848e);}});});}function checkTranscribeJob(_0x544cd2,_0x2d36d3,_0x19f04c){var _0x51c461;return new BPromise(function(_0x2a7201,_0x14dd71){logger[_0x233d('0x9')](util['format'](_0x233d('0xa'),_0x544cd2['id'],_0x544cd2[_0x233d('0xb')]));return getTranscriptionJob(_0x19f04c[_0x233d('0xc')],_0x19f04c[_0x233d('0xd')],_0x2d36d3[_0x233d('0xe')],_0x544cd2['transcribeName'])[_0x233d('0xf')](function(_0x552bbd){logger[_0x233d('0x9')](util[_0x233d('0x10')](_0x233d('0x11'),_0x544cd2['id'],_0x544cd2[_0x233d('0xb')],_0x552bbd[_0x233d('0x12')]['TranscriptionJobStatus']));if(!_0x544cd2['fileText']){switch(_0x552bbd[_0x233d('0x12')][_0x233d('0x13')]){case _0x233d('0x14'):var _0xa2ab1={'transcribeStatus':_0x552bbd[_0x233d('0x12')][_0x233d('0x13')],'fileUri':_0x552bbd[_0x233d('0x12')][_0x233d('0x15')][_0x233d('0x16')]};logger[_0x233d('0x9')](util[_0x233d('0x10')](_0x233d('0x17'),_0x544cd2['id']));return rp({'uri':_0x552bbd[_0x233d('0x12')]['Transcript'][_0x233d('0x16')],'json':!![]})[_0x233d('0xf')](function(_0x5dd0e0){logger[_0x233d('0x9')](util[_0x233d('0x10')](_0x233d('0x18'),_0x544cd2['id']));if(_0x5dd0e0&&_0x5dd0e0[_0x233d('0x19')]&&_0x5dd0e0['results'][_0x233d('0x1a')]&&_0x5dd0e0[_0x233d('0x19')][_0x233d('0x1a')][_0x233d('0x1b')]){_0xa2ab1[_0x233d('0x1c')]='';for(var _0x3b39bd=0x0;_0x3b39bd<_0x5dd0e0[_0x233d('0x19')]['transcripts']['length'];_0x3b39bd++){_0xa2ab1['fileText']+=_0x5dd0e0['results'][_0x233d('0x1a')][_0x3b39bd][_0x233d('0x1d')]+'';}}return _0x544cd2[_0x233d('0x1e')](_0xa2ab1);})['then'](function(){logger[_0x233d('0x9')](util[_0x233d('0x10')](_0x233d('0x1f'),_0x544cd2['id']));if(!_0x544cd2[_0x233d('0x20')]){throw new db['Sequelize'][(_0x233d('0x21'))](_0x233d('0x22'));}if(!_0x2d36d3[_0x233d('0x23')]||!_0x2d36d3[_0x233d('0x24')]||!_0x2d36d3[_0x233d('0x25')]||!_0x2d36d3['language']||!_0x2d36d3['bucket']){throw new db[(_0x233d('0x26'))][(_0x233d('0x21'))](_0x233d('0x27'));}if(!_0xa2ab1[_0x233d('0x1c')]){throw new Error(_0x233d('0x28'));}if(_0x2d36d3[_0x233d('0x24')]===_0x19f04c['id']){return _0x19f04c;}else{return db[_0x233d('0x29')][_0x233d('0x2a')]({'where':{'id':_settings[_0x233d('0x24')]}});}})['then'](function(_0x18c0bd){if(!_0x18c0bd){throw new db[(_0x233d('0x26'))][(_0x233d('0x21'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x18c0bd['data1']||!_0x18c0bd[_0x233d('0xd')]){throw new db['Sequelize']['ValidationError'](_0x233d('0x2b'));}_0x51c461=_0x18c0bd;logger[_0x233d('0x9')](util[_0x233d('0x10')](_0x233d('0x2c'),_0x544cd2['id']));return sentiment(_0x51c461[_0x233d('0xc')],_0x51c461['data2'],_0x2d36d3[_0x233d('0x25')],_0xa2ab1[_0x233d('0x1c')],_0x2d36d3[_0x233d('0x2d')]);})[_0x233d('0xf')](function(_0x59cf5f){logger[_0x233d('0x9')](util[_0x233d('0x10')](_0x233d('0x2e'),_0x544cd2['id']));return _0x544cd2[_0x233d('0x1e')]({'sentiment':_0x59cf5f[_0x233d('0x2f')],'sPositive':_0x59cf5f[_0x233d('0x30')][_0x233d('0x31')],'sNegative':_0x59cf5f[_0x233d('0x30')][_0x233d('0x32')],'sMixed':_0x59cf5f[_0x233d('0x30')][_0x233d('0x33')],'sNeutral':_0x59cf5f[_0x233d('0x30')][_0x233d('0x34')]});})[_0x233d('0xf')](function(){logger[_0x233d('0x9')](util[_0x233d('0x10')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x544cd2['id']));_0x2a7201();});case'FAILED':return _0x544cd2[_0x233d('0x1e')]({'transcribeStatus':_0x233d('0x35'),'failureReason':_0x552bbd[_0x233d('0x12')][_0x233d('0x36')]})[_0x233d('0xf')](function(){logger[_0x233d('0x9')](util[_0x233d('0x10')](_0x233d('0x1f'),_0x544cd2['id']));_0x2a7201();});default:logger['info'](util[_0x233d('0x10')](_0x233d('0x37'),_0x544cd2['id']));break;}}else{return BPromise[_0x233d('0x38')]()['then'](function(){if(!_0x544cd2['tempSentiment']){throw new db[(_0x233d('0x26'))][(_0x233d('0x21'))]('Sentiment\x20Analysis\x20not\x20requested');}if(!_0x2d36d3['sentiment']||!_0x2d36d3[_0x233d('0x24')]||!_0x2d36d3['sentimentRegion']||!_0x2d36d3[_0x233d('0x2d')]||!_0x2d36d3[_0x233d('0x39')]){throw new db[(_0x233d('0x26'))]['ValidationError']('Sentiment\x20Analysis\x20not\x20configured');}if(!_0x544cd2[_0x233d('0x1c')]){throw new Error('Transcript\x20not\x20available');}if(_0x2d36d3[_0x233d('0x24')]===_0x19f04c['id']){return _0x19f04c;}else{return db[_0x233d('0x29')][_0x233d('0x2a')]({'where':{'id':_settings[_0x233d('0x24')]}});}})[_0x233d('0xf')](function(_0x562e46){if(!_0x562e46){throw new db['Sequelize']['ValidationError'](_0x233d('0x3a'));}if(!_0x562e46[_0x233d('0xc')]||!_0x562e46[_0x233d('0xd')]){throw new db[(_0x233d('0x26'))]['ValidationError'](_0x233d('0x2b'));}_0x51c461=_0x562e46;logger['info'](util[_0x233d('0x10')](_0x233d('0x2c'),_0x544cd2['id']));return sentiment(_0x51c461[_0x233d('0xc')],_0x51c461[_0x233d('0xd')],_0x2d36d3[_0x233d('0x25')],_0x544cd2[_0x233d('0x1c')],_0x2d36d3['language']);})[_0x233d('0xf')](function(_0x3d3e5b){logger[_0x233d('0x9')](util[_0x233d('0x10')](_0x233d('0x2e'),_0x544cd2['id']));return _0x544cd2[_0x233d('0x1e')]({'sentiment':_0x3d3e5b[_0x233d('0x2f')],'sPositive':_0x3d3e5b['SentimentScore']['Positive'],'sNegative':_0x3d3e5b[_0x233d('0x30')]['Negative'],'sMixed':_0x3d3e5b[_0x233d('0x30')][_0x233d('0x33')],'sNeutral':_0x3d3e5b['SentimentScore'][_0x233d('0x34')],'transcribeStatus':_0x233d('0x14')});})['then'](function(){logger[_0x233d('0x9')](util[_0x233d('0x10')](_0x233d('0x1f'),_0x544cd2['id']));_0x2a7201();});}})['catch'](function(_0x3252fb){if(_0x3252fb){if(!_0x3252fb['name']||_0x3252fb['name']!==_0x233d('0x3b')){logger[_0x233d('0x3c')](util[_0x233d('0x10')](_0x233d('0x3d'),_0x544cd2['id']),util[_0x233d('0x3e')](_0x3252fb,{'showHidden':![],'depth':null}));}}_0x2a7201();});});}function checkTranscribe(){var _0x4aa88;var _0x2604bd;var _0x1672b2;return db['VoiceRecording']['findAll']({'where':{'transcribeStatus':_0x233d('0x3f')}})[_0x233d('0xf')](function(_0x5116e1){if(!_0x5116e1||!_0x5116e1['length']){throw new db[(_0x233d('0x26'))][(_0x233d('0x21'))](_0x233d('0x40'));}_0x4aa88=_0x5116e1;return db[_0x233d('0x41')][_0x233d('0x2a')]({'where':{'id':0x1}});})[_0x233d('0xf')](function(_0x557af2){if(!_0x557af2){throw new db[(_0x233d('0x26'))]['ValidationError'](_0x233d('0x42'));}_0x2604bd=_0x557af2;if(!_0x2604bd[_0x233d('0x5')]||!_0x2604bd[_0x233d('0x43')]||!_0x2604bd[_0x233d('0xe')]||!_0x2604bd[_0x233d('0x2d')]||!_0x2604bd['bucket']){throw new db['Sequelize']['ValidationError'](_0x233d('0x44'));}return db[_0x233d('0x29')][_0x233d('0x2a')]({'where':{'id':_0x2604bd[_0x233d('0x43')]}});})[_0x233d('0xf')](function(_0x2ac8a0){if(!_0x2ac8a0){throw new db[(_0x233d('0x26'))][(_0x233d('0x21'))](_0x233d('0x3a'));}if(!_0x2ac8a0[_0x233d('0xc')]||!_0x2ac8a0[_0x233d('0xd')]){throw new db[(_0x233d('0x26'))][(_0x233d('0x21'))](_0x233d('0x2b'));}_0x1672b2=_0x2ac8a0;var _0x4d69b5=[];_0x4aa88[_0x233d('0x45')](function(_0x57b1c7){_0x4d69b5[_0x233d('0x46')](checkTranscribeJob(_0x57b1c7,_0x2604bd,_0x1672b2));});return BPromise['all'](_0x4d69b5);})['catch'](function(_0x395298){if(_0x395298){if(!_0x395298[_0x233d('0x47')]||_0x395298[_0x233d('0x47')]!==_0x233d('0x3b')){logger[_0x233d('0x3c')](util['inspect'](_0x395298,{'showHidden':![],'depth':null}));}}});}exports[_0x233d('0x48')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};