b9f5053d355b74227ca4c9a97652e84127769018
[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 _0xcb10=['transcribeRegion','then','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJob','fileText','TranscriptionJobStatus','Transcript','[RECORDING:%d]\x20Get\x20transcript','results','transcripts','length','transcript','tempSentiment','ValidationError','Sentiment\x20Analysis\x20not\x20requested','sentiment','sentimentAccountId','sentimentRegion','bucket','Sequelize','Sentiment\x20Analysis\x20not\x20configured','CloudProvider','findOne','Cloud\x20Provider\x20not\x20available','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','data2','language','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','update','Sentiment','SentimentScore','Negative','Neutral','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','FAILED','FailureReason','resolve','Transcript\x20not\x20available','Cloud\x20Provider\x20not\x20configured','Positive','COMPLETED','catch','name','SequelizeValidationError','error','inspect','VoiceRecording','IN_PROGRESS','No\x20transcribe\x20job\x20to\x20check','Setting','Settings\x20not\x20available','transcribe','transcribeAccountId','Transcribe\x20not\x20configured','push','all','lodash','aws-sdk','util','bluebird','../../config/logger','TranscribeService','Comprehend','detectSentiment','info','format','transcribeName','data1'];(function(_0x43d851,_0x3dd108){var _0x1be9a7=function(_0x780d9d){while(--_0x780d9d){_0x43d851['push'](_0x43d851['shift']());}};_0x1be9a7(++_0x3dd108);}(_0xcb10,0x104));var _0x0cb1=function(_0x45783c,_0x49c56d){_0x45783c=_0x45783c-0x0;var _0x1161da=_0xcb10[_0x45783c];return _0x1161da;};var _=require(_0x0cb1('0x0'));var AWS=require(_0x0cb1('0x1'));var rp=require('request-promise');var util=require(_0x0cb1('0x2'));var BPromise=require(_0x0cb1('0x3'));var db=require('../../mysqldb')['db'];var logger=require(_0x0cb1('0x4'))('transcribe');function getTranscriptionJob(_0x24812c,_0x36b51c,_0xf8664d,_0x1cf87a){return new Promise(function(_0x430f60,_0x3ee6ec){var _0x390335=new AWS[(_0x0cb1('0x5'))]({'accessKeyId':_0x36b51c,'secretAccessKey':_0x24812c,'region':_0xf8664d});_0x390335['getTranscriptionJob']({'TranscriptionJobName':_0x1cf87a},function(_0x43620c,_0x1f815e){if(_0x43620c){return _0x3ee6ec(_0x43620c);}else{return _0x430f60(_0x1f815e);}});});}function sentiment(_0xe9ca1c,_0x46657b,_0x41e0d2,_0x82508f,_0x2f05a8){return new Promise(function(_0x488a4f,_0x4eae6f){var _0x555c10=new AWS[(_0x0cb1('0x6'))]({'accessKeyId':_0x46657b,'secretAccessKey':_0xe9ca1c,'region':_0x41e0d2});_0x555c10[_0x0cb1('0x7')]({'Text':_0x82508f,'LanguageCode':_0x2f05a8['substring'](0x0,0x2)},function(_0x5638ff,_0x597a57){if(_0x5638ff){return _0x4eae6f(_0x5638ff);}else{return _0x488a4f(_0x597a57);}});});}function checkTranscribeJob(_0x3201b5,_0x5ab983,_0x6b6477){var _0x1c5680;return new BPromise(function(_0x2ce41b,_0xdc3a39){logger[_0x0cb1('0x8')](util[_0x0cb1('0x9')]('[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)',_0x3201b5['id'],_0x3201b5[_0x0cb1('0xa')]));return getTranscriptionJob(_0x6b6477[_0x0cb1('0xb')],_0x6b6477['data2'],_0x5ab983[_0x0cb1('0xc')],_0x3201b5['transcribeName'])[_0x0cb1('0xd')](function(_0x145cd4){logger['info'](util[_0x0cb1('0x9')](_0x0cb1('0xe'),_0x3201b5['id'],_0x3201b5[_0x0cb1('0xa')],_0x145cd4[_0x0cb1('0xf')]['TranscriptionJobStatus']));if(!_0x3201b5[_0x0cb1('0x10')]){switch(_0x145cd4[_0x0cb1('0xf')][_0x0cb1('0x11')]){case'COMPLETED':var _0x5a88b7={'transcribeStatus':_0x145cd4[_0x0cb1('0xf')][_0x0cb1('0x11')],'fileUri':_0x145cd4['TranscriptionJob'][_0x0cb1('0x12')]['TranscriptFileUri']};logger[_0x0cb1('0x8')](util['format'](_0x0cb1('0x13'),_0x3201b5['id']));return rp({'uri':_0x145cd4[_0x0cb1('0xf')][_0x0cb1('0x12')]['TranscriptFileUri'],'json':!![]})[_0x0cb1('0xd')](function(_0x1f4702){logger[_0x0cb1('0x8')](util[_0x0cb1('0x9')]('[RECORDING:%d]\x20Transcript\x20downloaded',_0x3201b5['id']));if(_0x1f4702&&_0x1f4702[_0x0cb1('0x14')]&&_0x1f4702['results'][_0x0cb1('0x15')]&&_0x1f4702[_0x0cb1('0x14')][_0x0cb1('0x15')][_0x0cb1('0x16')]){_0x5a88b7[_0x0cb1('0x10')]='';for(var _0x1e82db=0x0;_0x1e82db<_0x1f4702['results'][_0x0cb1('0x15')][_0x0cb1('0x16')];_0x1e82db++){_0x5a88b7[_0x0cb1('0x10')]+=_0x1f4702[_0x0cb1('0x14')][_0x0cb1('0x15')][_0x1e82db][_0x0cb1('0x17')]+'';}}return _0x3201b5['update'](_0x5a88b7);})[_0x0cb1('0xd')](function(){logger[_0x0cb1('0x8')](util[_0x0cb1('0x9')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x3201b5['id']));if(!_0x3201b5[_0x0cb1('0x18')]){throw new db['Sequelize'][(_0x0cb1('0x19'))](_0x0cb1('0x1a'));}if(!_0x5ab983[_0x0cb1('0x1b')]||!_0x5ab983[_0x0cb1('0x1c')]||!_0x5ab983[_0x0cb1('0x1d')]||!_0x5ab983['language']||!_0x5ab983[_0x0cb1('0x1e')]){throw new db[(_0x0cb1('0x1f'))][(_0x0cb1('0x19'))](_0x0cb1('0x20'));}if(!_0x5a88b7['fileText']){throw new Error('Transcript\x20not\x20available');}if(_0x5ab983[_0x0cb1('0x1c')]===_0x6b6477['id']){return _0x6b6477;}else{return db[_0x0cb1('0x21')][_0x0cb1('0x22')]({'where':{'id':_settings[_0x0cb1('0x1c')]}});}})[_0x0cb1('0xd')](function(_0x2243ad){if(!_0x2243ad){throw new db[(_0x0cb1('0x1f'))][(_0x0cb1('0x19'))](_0x0cb1('0x23'));}if(!_0x2243ad[_0x0cb1('0xb')]||!_0x2243ad['data2']){throw new db[(_0x0cb1('0x1f'))]['ValidationError']('Cloud\x20Provider\x20not\x20configured');}_0x1c5680=_0x2243ad;logger[_0x0cb1('0x8')](util[_0x0cb1('0x9')](_0x0cb1('0x24'),_0x3201b5['id']));return sentiment(_0x1c5680[_0x0cb1('0xb')],_0x1c5680[_0x0cb1('0x25')],_0x5ab983[_0x0cb1('0x1d')],_0x5a88b7['fileText'],_0x5ab983[_0x0cb1('0x26')]);})[_0x0cb1('0xd')](function(_0x2a19b3){logger['info'](util[_0x0cb1('0x9')](_0x0cb1('0x27'),_0x3201b5['id']));return _0x3201b5[_0x0cb1('0x28')]({'sentiment':_0x2a19b3[_0x0cb1('0x29')],'sPositive':_0x2a19b3[_0x0cb1('0x2a')]['Positive'],'sNegative':_0x2a19b3[_0x0cb1('0x2a')][_0x0cb1('0x2b')],'sMixed':_0x2a19b3['SentimentScore']['Mixed'],'sNeutral':_0x2a19b3[_0x0cb1('0x2a')][_0x0cb1('0x2c')]});})['then'](function(){logger['info'](util['format'](_0x0cb1('0x2d'),_0x3201b5['id']));_0x2ce41b();});case _0x0cb1('0x2e'):return _0x3201b5[_0x0cb1('0x28')]({'transcribeStatus':_0x0cb1('0x2e'),'failureReason':_0x145cd4[_0x0cb1('0xf')][_0x0cb1('0x2f')]})[_0x0cb1('0xd')](function(){logger[_0x0cb1('0x8')](util['format']('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x3201b5['id']));_0x2ce41b();});default:logger['info'](util[_0x0cb1('0x9')]('[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed',_0x3201b5['id']));break;}}else{return BPromise[_0x0cb1('0x30')]()[_0x0cb1('0xd')](function(){if(!_0x3201b5[_0x0cb1('0x18')]){throw new db[(_0x0cb1('0x1f'))][(_0x0cb1('0x19'))](_0x0cb1('0x1a'));}if(!_0x5ab983['sentiment']||!_0x5ab983['sentimentAccountId']||!_0x5ab983[_0x0cb1('0x1d')]||!_0x5ab983[_0x0cb1('0x26')]||!_0x5ab983[_0x0cb1('0x1e')]){throw new db[(_0x0cb1('0x1f'))][(_0x0cb1('0x19'))]('Sentiment\x20Analysis\x20not\x20configured');}if(!_0x3201b5['fileText']){throw new Error(_0x0cb1('0x31'));}if(_0x5ab983[_0x0cb1('0x1c')]===_0x6b6477['id']){return _0x6b6477;}else{return db['CloudProvider'][_0x0cb1('0x22')]({'where':{'id':_settings[_0x0cb1('0x1c')]}});}})[_0x0cb1('0xd')](function(_0x295648){if(!_0x295648){throw new db['Sequelize']['ValidationError'](_0x0cb1('0x23'));}if(!_0x295648[_0x0cb1('0xb')]||!_0x295648[_0x0cb1('0x25')]){throw new db[(_0x0cb1('0x1f'))][(_0x0cb1('0x19'))](_0x0cb1('0x32'));}_0x1c5680=_0x295648;logger[_0x0cb1('0x8')](util[_0x0cb1('0x9')](_0x0cb1('0x24'),_0x3201b5['id']));return sentiment(_0x1c5680[_0x0cb1('0xb')],_0x1c5680['data2'],_0x5ab983['sentimentRegion'],_0x3201b5['fileText'],_0x5ab983[_0x0cb1('0x26')]);})[_0x0cb1('0xd')](function(_0x4ba2d4){logger['info'](util['format'](_0x0cb1('0x27'),_0x3201b5['id']));return _0x3201b5[_0x0cb1('0x28')]({'sentiment':_0x4ba2d4[_0x0cb1('0x29')],'sPositive':_0x4ba2d4[_0x0cb1('0x2a')][_0x0cb1('0x33')],'sNegative':_0x4ba2d4[_0x0cb1('0x2a')][_0x0cb1('0x2b')],'sMixed':_0x4ba2d4[_0x0cb1('0x2a')]['Mixed'],'sNeutral':_0x4ba2d4[_0x0cb1('0x2a')][_0x0cb1('0x2c')],'transcribeStatus':_0x0cb1('0x34')});})[_0x0cb1('0xd')](function(){logger[_0x0cb1('0x8')](util[_0x0cb1('0x9')](_0x0cb1('0x2d'),_0x3201b5['id']));_0x2ce41b();});}})[_0x0cb1('0x35')](function(_0x12ba75){if(_0x12ba75){if(!_0x12ba75['name']||_0x12ba75[_0x0cb1('0x36')]!==_0x0cb1('0x37')){logger[_0x0cb1('0x38')](util[_0x0cb1('0x9')]('[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis',_0x3201b5['id']),util[_0x0cb1('0x39')](_0x12ba75,{'showHidden':![],'depth':null}));}}_0x2ce41b();});});}function checkTranscribe(){var _0x551746;var _0xd468b;var _0x541fc0;return db[_0x0cb1('0x3a')]['findAll']({'where':{'transcribeStatus':_0x0cb1('0x3b')}})['then'](function(_0x3f7866){if(!_0x3f7866||!_0x3f7866[_0x0cb1('0x16')]){throw new db[(_0x0cb1('0x1f'))][(_0x0cb1('0x19'))](_0x0cb1('0x3c'));}_0x551746=_0x3f7866;return db[_0x0cb1('0x3d')][_0x0cb1('0x22')]({'where':{'id':0x1}});})['then'](function(_0x4dc3bc){if(!_0x4dc3bc){throw new db[(_0x0cb1('0x1f'))][(_0x0cb1('0x19'))](_0x0cb1('0x3e'));}_0xd468b=_0x4dc3bc;if(!_0xd468b[_0x0cb1('0x3f')]||!_0xd468b[_0x0cb1('0x40')]||!_0xd468b[_0x0cb1('0xc')]||!_0xd468b[_0x0cb1('0x26')]||!_0xd468b['bucket']){throw new db['Sequelize'][(_0x0cb1('0x19'))](_0x0cb1('0x41'));}return db[_0x0cb1('0x21')][_0x0cb1('0x22')]({'where':{'id':_0xd468b['transcribeAccountId']}});})[_0x0cb1('0xd')](function(_0xabdac5){if(!_0xabdac5){throw new db[(_0x0cb1('0x1f'))][(_0x0cb1('0x19'))](_0x0cb1('0x23'));}if(!_0xabdac5[_0x0cb1('0xb')]||!_0xabdac5[_0x0cb1('0x25')]){throw new db[(_0x0cb1('0x1f'))][(_0x0cb1('0x19'))](_0x0cb1('0x32'));}_0x541fc0=_0xabdac5;var _0x399d4e=[];_0x551746['forEach'](function(_0x380df2){_0x399d4e[_0x0cb1('0x42')](checkTranscribeJob(_0x380df2,_0xd468b,_0x541fc0));});return BPromise[_0x0cb1('0x43')](_0x399d4e);})['catch'](function(_0x32ace6){if(_0x32ace6){if(!_0x32ace6[_0x0cb1('0x36')]||_0x32ace6[_0x0cb1('0x36')]!==_0x0cb1('0x37')){logger[_0x0cb1('0x38')](util[_0x0cb1('0x39')](_0x32ace6,{'showHidden':![],'depth':null}));}}});}exports['start']=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};