Built motion from commit (unavailable).|2.5.30
[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 _0x5c85=['info','format','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeName','data1','transcribeRegion','then','TranscriptionJobStatus','fileText','TranscriptionJob','Transcript','TranscriptFileUri','[RECORDING:%d]\x20Get\x20transcript','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','update','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','tempSentiment','Sentiment\x20Analysis\x20not\x20requested','sentimentAccountId','sentimentRegion','language','bucket','Sequelize','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available','CloudProvider','findOne','ValidationError','Cloud\x20Provider\x20not\x20available','data2','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Sentiment','SentimentScore','Positive','Negative','Mixed','Neutral','FAILED','FailureReason','resolve','COMPLETED','name','SequelizeValidationError','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','inspect','VoiceRecording','findAll','No\x20transcribe\x20job\x20to\x20check','Setting','Settings\x20not\x20available','transcribeAccountId','Transcribe\x20not\x20configured','forEach','push','catch','error','aws-sdk','util','bluebird','../../config/logger','transcribe','getTranscriptionJob','detectSentiment','substring'];(function(_0x2513ad,_0x5c7ac8){var _0x14a6c3=function(_0x37a47c){while(--_0x37a47c){_0x2513ad['push'](_0x2513ad['shift']());}};_0x14a6c3(++_0x5c7ac8);}(_0x5c85,0x196));var _0x55c8=function(_0x568f67,_0x102e8b){_0x568f67=_0x568f67-0x0;var _0x3c959f=_0x5c85[_0x568f67];return _0x3c959f;};var _=require('lodash');var AWS=require(_0x55c8('0x0'));var rp=require('request-promise');var util=require(_0x55c8('0x1'));var BPromise=require(_0x55c8('0x2'));var db=require('../../mysqldb')['db'];var logger=require(_0x55c8('0x3'))(_0x55c8('0x4'));function getTranscriptionJob(_0x16fa19,_0x1952ed,_0xc9c109,_0xaeb7ba){return new Promise(function(_0x4d5a43,_0x10918f){var _0x2166f0=new AWS['TranscribeService']({'accessKeyId':_0x1952ed,'secretAccessKey':_0x16fa19,'region':_0xc9c109});_0x2166f0[_0x55c8('0x5')]({'TranscriptionJobName':_0xaeb7ba},function(_0xdf6512,_0x19b969){if(_0xdf6512){return _0x10918f(_0xdf6512);}else{return _0x4d5a43(_0x19b969);}});});}function sentiment(_0x44d3ff,_0x2675e9,_0x5debd5,_0x23455c,_0x46aaa5){return new Promise(function(_0x13c767,_0x4a5938){var _0x16e9c0=new AWS['Comprehend']({'accessKeyId':_0x2675e9,'secretAccessKey':_0x44d3ff,'region':_0x5debd5});_0x16e9c0[_0x55c8('0x6')]({'Text':_0x23455c,'LanguageCode':_0x46aaa5[_0x55c8('0x7')](0x0,0x2)},function(_0x56b204,_0x3ad0b3){if(_0x56b204){return _0x4a5938(_0x56b204);}else{return _0x13c767(_0x3ad0b3);}});});}function checkTranscribeJob(_0x2e39ae,_0x42afc2,_0x3f3e08){var _0x2a5910;return new BPromise(function(_0x242854,_0x355291){logger[_0x55c8('0x8')](util[_0x55c8('0x9')](_0x55c8('0xa'),_0x2e39ae['id'],_0x2e39ae[_0x55c8('0xb')]));return getTranscriptionJob(_0x3f3e08[_0x55c8('0xc')],_0x3f3e08['data2'],_0x42afc2[_0x55c8('0xd')],_0x2e39ae[_0x55c8('0xb')])[_0x55c8('0xe')](function(_0x5916f6){logger[_0x55c8('0x8')](util[_0x55c8('0x9')]('[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s',_0x2e39ae['id'],_0x2e39ae[_0x55c8('0xb')],_0x5916f6['TranscriptionJob'][_0x55c8('0xf')]));if(!_0x2e39ae[_0x55c8('0x10')]){switch(_0x5916f6['TranscriptionJob'][_0x55c8('0xf')]){case'COMPLETED':var _0x5aa835={'transcribeStatus':_0x5916f6['TranscriptionJob']['TranscriptionJobStatus'],'fileUri':_0x5916f6[_0x55c8('0x11')][_0x55c8('0x12')][_0x55c8('0x13')]};logger['info'](util['format'](_0x55c8('0x14'),_0x2e39ae['id']));return rp({'uri':_0x5916f6[_0x55c8('0x11')]['Transcript'][_0x55c8('0x13')],'json':!![]})[_0x55c8('0xe')](function(_0x4c3a08){logger[_0x55c8('0x8')](util[_0x55c8('0x9')](_0x55c8('0x15'),_0x2e39ae['id']));if(_0x4c3a08&&_0x4c3a08[_0x55c8('0x16')]&&_0x4c3a08[_0x55c8('0x16')][_0x55c8('0x17')]&&_0x4c3a08[_0x55c8('0x16')][_0x55c8('0x17')]['length']){_0x5aa835['fileText']='';for(var _0x286f97=0x0;_0x286f97<_0x4c3a08['results'][_0x55c8('0x17')][_0x55c8('0x18')];_0x286f97++){_0x5aa835['fileText']+=_0x4c3a08[_0x55c8('0x16')]['transcripts'][_0x286f97]['transcript']+'';}}return _0x2e39ae[_0x55c8('0x19')](_0x5aa835);})[_0x55c8('0xe')](function(){logger[_0x55c8('0x8')](util[_0x55c8('0x9')](_0x55c8('0x1a'),_0x2e39ae['id']));if(!_0x2e39ae[_0x55c8('0x1b')]){throw new db['Sequelize']['ValidationError'](_0x55c8('0x1c'));}if(!_0x42afc2['sentiment']||!_0x42afc2[_0x55c8('0x1d')]||!_0x42afc2[_0x55c8('0x1e')]||!_0x42afc2[_0x55c8('0x1f')]||!_0x42afc2[_0x55c8('0x20')]){throw new db[(_0x55c8('0x21'))]['ValidationError'](_0x55c8('0x22'));}if(!_0x5aa835[_0x55c8('0x10')]){throw new Error(_0x55c8('0x23'));}if(_0x42afc2[_0x55c8('0x1d')]===_0x3f3e08['id']){return _0x3f3e08;}else{return db[_0x55c8('0x24')][_0x55c8('0x25')]({'where':{'id':_settings[_0x55c8('0x1d')]}});}})[_0x55c8('0xe')](function(_0x5f5a8b){if(!_0x5f5a8b){throw new db[(_0x55c8('0x21'))][(_0x55c8('0x26'))](_0x55c8('0x27'));}if(!_0x5f5a8b[_0x55c8('0xc')]||!_0x5f5a8b[_0x55c8('0x28')]){throw new db[(_0x55c8('0x21'))][(_0x55c8('0x26'))](_0x55c8('0x29'));}_0x2a5910=_0x5f5a8b;logger['info'](util[_0x55c8('0x9')](_0x55c8('0x2a'),_0x2e39ae['id']));return sentiment(_0x2a5910['data1'],_0x2a5910[_0x55c8('0x28')],_0x42afc2[_0x55c8('0x1e')],_0x5aa835['fileText'],_0x42afc2[_0x55c8('0x1f')]);})[_0x55c8('0xe')](function(_0x30a680){logger['info'](util['format'](_0x55c8('0x2b'),_0x2e39ae['id']));return _0x2e39ae[_0x55c8('0x19')]({'sentiment':_0x30a680[_0x55c8('0x2c')],'sPositive':_0x30a680[_0x55c8('0x2d')][_0x55c8('0x2e')],'sNegative':_0x30a680[_0x55c8('0x2d')][_0x55c8('0x2f')],'sMixed':_0x30a680[_0x55c8('0x2d')][_0x55c8('0x30')],'sNeutral':_0x30a680[_0x55c8('0x2d')][_0x55c8('0x31')]});})['then'](function(){logger[_0x55c8('0x8')](util['format']('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x2e39ae['id']));_0x242854();});case'FAILED':return _0x2e39ae[_0x55c8('0x19')]({'transcribeStatus':_0x55c8('0x32'),'failureReason':_0x5916f6[_0x55c8('0x11')][_0x55c8('0x33')]})[_0x55c8('0xe')](function(){logger['info'](util[_0x55c8('0x9')](_0x55c8('0x1a'),_0x2e39ae['id']));_0x242854();});default:logger[_0x55c8('0x8')](util[_0x55c8('0x9')]('[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed',_0x2e39ae['id']));break;}}else{return BPromise[_0x55c8('0x34')]()[_0x55c8('0xe')](function(){if(!_0x2e39ae[_0x55c8('0x1b')]){throw new db[(_0x55c8('0x21'))][(_0x55c8('0x26'))](_0x55c8('0x1c'));}if(!_0x42afc2['sentiment']||!_0x42afc2[_0x55c8('0x1d')]||!_0x42afc2[_0x55c8('0x1e')]||!_0x42afc2[_0x55c8('0x1f')]||!_0x42afc2['bucket']){throw new db[(_0x55c8('0x21'))]['ValidationError'](_0x55c8('0x22'));}if(!_0x2e39ae[_0x55c8('0x10')]){throw new Error(_0x55c8('0x23'));}if(_0x42afc2[_0x55c8('0x1d')]===_0x3f3e08['id']){return _0x3f3e08;}else{return db[_0x55c8('0x24')]['findOne']({'where':{'id':_settings[_0x55c8('0x1d')]}});}})[_0x55c8('0xe')](function(_0x4284b9){if(!_0x4284b9){throw new db[(_0x55c8('0x21'))][(_0x55c8('0x26'))](_0x55c8('0x27'));}if(!_0x4284b9[_0x55c8('0xc')]||!_0x4284b9[_0x55c8('0x28')]){throw new db[(_0x55c8('0x21'))]['ValidationError'](_0x55c8('0x29'));}_0x2a5910=_0x4284b9;logger['info'](util[_0x55c8('0x9')](_0x55c8('0x2a'),_0x2e39ae['id']));return sentiment(_0x2a5910[_0x55c8('0xc')],_0x2a5910[_0x55c8('0x28')],_0x42afc2['sentimentRegion'],_0x2e39ae[_0x55c8('0x10')],_0x42afc2[_0x55c8('0x1f')]);})[_0x55c8('0xe')](function(_0xb1f61c){logger[_0x55c8('0x8')](util[_0x55c8('0x9')](_0x55c8('0x2b'),_0x2e39ae['id']));return _0x2e39ae[_0x55c8('0x19')]({'sentiment':_0xb1f61c[_0x55c8('0x2c')],'sPositive':_0xb1f61c[_0x55c8('0x2d')][_0x55c8('0x2e')],'sNegative':_0xb1f61c[_0x55c8('0x2d')][_0x55c8('0x2f')],'sMixed':_0xb1f61c['SentimentScore'][_0x55c8('0x30')],'sNeutral':_0xb1f61c[_0x55c8('0x2d')][_0x55c8('0x31')],'transcribeStatus':_0x55c8('0x35')});})['then'](function(){logger['info'](util[_0x55c8('0x9')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x2e39ae['id']));_0x242854();});}})['catch'](function(_0x25e779){if(_0x25e779){if(!_0x25e779[_0x55c8('0x36')]||_0x25e779[_0x55c8('0x36')]!==_0x55c8('0x37')){logger['error'](util[_0x55c8('0x9')](_0x55c8('0x38'),_0x2e39ae['id']),util[_0x55c8('0x39')](_0x25e779,{'showHidden':![],'depth':null}));}}_0x242854();});});}function checkTranscribe(){var _0x36541d;var _0x440151;var _0x45a240;return db[_0x55c8('0x3a')][_0x55c8('0x3b')]({'where':{'transcribeStatus':'IN_PROGRESS'}})[_0x55c8('0xe')](function(_0x1a5562){if(!_0x1a5562||!_0x1a5562['length']){throw new db[(_0x55c8('0x21'))]['ValidationError'](_0x55c8('0x3c'));}_0x36541d=_0x1a5562;return db[_0x55c8('0x3d')]['findOne']({'where':{'id':0x1}});})[_0x55c8('0xe')](function(_0x44452b){if(!_0x44452b){throw new db[(_0x55c8('0x21'))][(_0x55c8('0x26'))](_0x55c8('0x3e'));}_0x440151=_0x44452b;if(!_0x440151['transcribe']||!_0x440151[_0x55c8('0x3f')]||!_0x440151[_0x55c8('0xd')]||!_0x440151['language']||!_0x440151[_0x55c8('0x20')]){throw new db[(_0x55c8('0x21'))][(_0x55c8('0x26'))](_0x55c8('0x40'));}return db[_0x55c8('0x24')][_0x55c8('0x25')]({'where':{'id':_0x440151[_0x55c8('0x3f')]}});})[_0x55c8('0xe')](function(_0x48eca7){if(!_0x48eca7){throw new db[(_0x55c8('0x21'))][(_0x55c8('0x26'))](_0x55c8('0x27'));}if(!_0x48eca7[_0x55c8('0xc')]||!_0x48eca7[_0x55c8('0x28')]){throw new db[(_0x55c8('0x21'))][(_0x55c8('0x26'))](_0x55c8('0x29'));}_0x45a240=_0x48eca7;var _0x54bcaa=[];_0x36541d[_0x55c8('0x41')](function(_0x103596){_0x54bcaa[_0x55c8('0x42')](checkTranscribeJob(_0x103596,_0x440151,_0x45a240));});return BPromise['all'](_0x54bcaa);})[_0x55c8('0x43')](function(_0x5e6e78){if(_0x5e6e78){if(!_0x5e6e78[_0x55c8('0x36')]||_0x5e6e78[_0x55c8('0x36')]!=='SequelizeValidationError'){logger[_0x55c8('0x44')](util['inspect'](_0x5e6e78,{'showHidden':![],'depth':null}));}}});}exports['start']=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};