9562c5a67cee42a8a7551ddcc6e2835fa158e72d
[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 _0xc961=['Settings\x20not\x20available','Transcribe\x20not\x20configured','forEach','push','all','catch','error','start','lodash','aws-sdk','request-promise','util','bluebird','../../mysqldb','TranscribeService','getTranscriptionJob','Comprehend','detectSentiment','substring','info','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','Transcript','TranscriptFileUri','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','fileText','transcript','update','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','Sequelize','ValidationError','Sentiment\x20Analysis\x20not\x20requested','sentiment','language','Transcript\x20not\x20available','sentimentAccountId','CloudProvider','findOne','Cloud\x20Provider\x20not\x20available','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','sentimentRegion','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Sentiment','SentimentScore','Positive','Negative','Neutral','FAILED','FailureReason','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','tempSentiment','bucket','name','SequelizeValidationError','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','inspect','VoiceRecording','findAll','IN_PROGRESS','No\x20transcribe\x20job\x20to\x20check','Setting'];(function(_0x4e15e8,_0x3544f4){var _0x1b9825=function(_0x670a90){while(--_0x670a90){_0x4e15e8['push'](_0x4e15e8['shift']());}};_0x1b9825(++_0x3544f4);}(_0xc961,0x17a));var _0x1c96=function(_0x5d990e,_0x4ba9f5){_0x5d990e=_0x5d990e-0x0;var _0x36c763=_0xc961[_0x5d990e];return _0x36c763;};var _=require(_0x1c96('0x0'));var AWS=require(_0x1c96('0x1'));var rp=require(_0x1c96('0x2'));var util=require(_0x1c96('0x3'));var BPromise=require(_0x1c96('0x4'));var db=require(_0x1c96('0x5'))['db'];var logger=require('../../config/logger')('transcribe');function getTranscriptionJob(_0x4e5884,_0x30d2e0,_0x494d92,_0x180969){return new Promise(function(_0x5594ee,_0x19d78b){var _0x2d4b23=new AWS[(_0x1c96('0x6'))]({'accessKeyId':_0x30d2e0,'secretAccessKey':_0x4e5884,'region':_0x494d92});_0x2d4b23[_0x1c96('0x7')]({'TranscriptionJobName':_0x180969},function(_0x2e4fa5,_0x473a4c){if(_0x2e4fa5){return _0x19d78b(_0x2e4fa5);}else{return _0x5594ee(_0x473a4c);}});});}function sentiment(_0x5523de,_0x360c75,_0x362e46,_0x691a95,_0x34497e){return new Promise(function(_0x11a521,_0x14ae4a){var _0x435739=new AWS[(_0x1c96('0x8'))]({'accessKeyId':_0x360c75,'secretAccessKey':_0x5523de,'region':_0x362e46});_0x435739[_0x1c96('0x9')]({'Text':_0x691a95,'LanguageCode':_0x34497e[_0x1c96('0xa')](0x0,0x2)},function(_0x262165,_0x26b8f3){if(_0x262165){return _0x14ae4a(_0x262165);}else{return _0x11a521(_0x26b8f3);}});});}function checkTranscribeJob(_0x5bb3c3,_0x1e0663,_0x3c9850){var _0x5a8f97;return new BPromise(function(_0x425345,_0x2d44f0){logger[_0x1c96('0xb')](util[_0x1c96('0xc')](_0x1c96('0xd'),_0x5bb3c3['id'],_0x5bb3c3[_0x1c96('0xe')]));return getTranscriptionJob(_0x3c9850[_0x1c96('0xf')],_0x3c9850[_0x1c96('0x10')],_0x1e0663[_0x1c96('0x11')],_0x5bb3c3[_0x1c96('0xe')])[_0x1c96('0x12')](function(_0x7cfdeb){logger[_0x1c96('0xb')](util['format'](_0x1c96('0x13'),_0x5bb3c3['id'],_0x5bb3c3['transcribeName'],_0x7cfdeb[_0x1c96('0x14')][_0x1c96('0x15')]));if(!_0x5bb3c3['fileText']){switch(_0x7cfdeb[_0x1c96('0x14')]['TranscriptionJobStatus']){case'COMPLETED':var _0x15b1de={'transcribeStatus':_0x7cfdeb[_0x1c96('0x14')][_0x1c96('0x15')],'fileUri':_0x7cfdeb['TranscriptionJob'][_0x1c96('0x16')]['TranscriptFileUri']};logger[_0x1c96('0xb')](util[_0x1c96('0xc')]('[RECORDING:%d]\x20Get\x20transcript',_0x5bb3c3['id']));return rp({'uri':_0x7cfdeb[_0x1c96('0x14')]['Transcript'][_0x1c96('0x17')],'json':!![]})[_0x1c96('0x12')](function(_0x23722c){logger[_0x1c96('0xb')](util[_0x1c96('0xc')](_0x1c96('0x18'),_0x5bb3c3['id']));if(_0x23722c&&_0x23722c[_0x1c96('0x19')]&&_0x23722c[_0x1c96('0x19')][_0x1c96('0x1a')]&&_0x23722c[_0x1c96('0x19')]['transcripts'][_0x1c96('0x1b')]){_0x15b1de[_0x1c96('0x1c')]='';for(var _0x289ee5=0x0;_0x289ee5<_0x23722c['results']['transcripts'][_0x1c96('0x1b')];_0x289ee5++){_0x15b1de[_0x1c96('0x1c')]+=_0x23722c['results'][_0x1c96('0x1a')][_0x289ee5][_0x1c96('0x1d')]+'';}}return _0x5bb3c3[_0x1c96('0x1e')](_0x15b1de);})['then'](function(){logger['info'](util[_0x1c96('0xc')](_0x1c96('0x1f'),_0x5bb3c3['id']));if(!_0x5bb3c3['tempSentiment']){throw new db[(_0x1c96('0x20'))][(_0x1c96('0x21'))](_0x1c96('0x22'));}if(!_0x1e0663[_0x1c96('0x23')]||!_0x1e0663['sentimentAccountId']||!_0x1e0663['sentimentRegion']||!_0x1e0663[_0x1c96('0x24')]||!_0x1e0663['bucket']){throw new db[(_0x1c96('0x20'))]['ValidationError']('Sentiment\x20Analysis\x20not\x20configured');}if(!_0x15b1de[_0x1c96('0x1c')]){throw new Error(_0x1c96('0x25'));}if(_0x1e0663[_0x1c96('0x26')]===_0x3c9850['id']){return _0x3c9850;}else{return db[_0x1c96('0x27')][_0x1c96('0x28')]({'where':{'id':_settings[_0x1c96('0x26')]}});}})['then'](function(_0x569dd9){if(!_0x569dd9){throw new db[(_0x1c96('0x20'))][(_0x1c96('0x21'))](_0x1c96('0x29'));}if(!_0x569dd9[_0x1c96('0xf')]||!_0x569dd9[_0x1c96('0x10')]){throw new db[(_0x1c96('0x20'))][(_0x1c96('0x21'))](_0x1c96('0x2a'));}_0x5a8f97=_0x569dd9;logger[_0x1c96('0xb')](util['format'](_0x1c96('0x2b'),_0x5bb3c3['id']));return sentiment(_0x5a8f97[_0x1c96('0xf')],_0x5a8f97[_0x1c96('0x10')],_0x1e0663[_0x1c96('0x2c')],_0x15b1de[_0x1c96('0x1c')],_0x1e0663[_0x1c96('0x24')]);})['then'](function(_0x353732){logger[_0x1c96('0xb')](util['format'](_0x1c96('0x2d'),_0x5bb3c3['id']));return _0x5bb3c3[_0x1c96('0x1e')]({'sentiment':_0x353732[_0x1c96('0x2e')],'sPositive':_0x353732[_0x1c96('0x2f')][_0x1c96('0x30')],'sNegative':_0x353732[_0x1c96('0x2f')][_0x1c96('0x31')],'sMixed':_0x353732['SentimentScore']['Mixed'],'sNeutral':_0x353732[_0x1c96('0x2f')][_0x1c96('0x32')]});})['then'](function(){logger[_0x1c96('0xb')](util['format'](_0x1c96('0x1f'),_0x5bb3c3['id']));_0x425345();});case _0x1c96('0x33'):return _0x5bb3c3['update']({'transcribeStatus':'FAILED','failureReason':_0x7cfdeb[_0x1c96('0x14')][_0x1c96('0x34')]})[_0x1c96('0x12')](function(){logger[_0x1c96('0xb')](util[_0x1c96('0xc')](_0x1c96('0x1f'),_0x5bb3c3['id']));_0x425345();});default:logger[_0x1c96('0xb')](util['format'](_0x1c96('0x35'),_0x5bb3c3['id']));break;}}else{return BPromise[_0x1c96('0x36')]()['then'](function(){if(!_0x5bb3c3[_0x1c96('0x37')]){throw new db['Sequelize'][(_0x1c96('0x21'))](_0x1c96('0x22'));}if(!_0x1e0663[_0x1c96('0x23')]||!_0x1e0663[_0x1c96('0x26')]||!_0x1e0663['sentimentRegion']||!_0x1e0663[_0x1c96('0x24')]||!_0x1e0663[_0x1c96('0x38')]){throw new db[(_0x1c96('0x20'))][(_0x1c96('0x21'))]('Sentiment\x20Analysis\x20not\x20configured');}if(!_0x5bb3c3[_0x1c96('0x1c')]){throw new Error(_0x1c96('0x25'));}if(_0x1e0663['sentimentAccountId']===_0x3c9850['id']){return _0x3c9850;}else{return db[_0x1c96('0x27')][_0x1c96('0x28')]({'where':{'id':_settings[_0x1c96('0x26')]}});}})[_0x1c96('0x12')](function(_0x1ade48){if(!_0x1ade48){throw new db[(_0x1c96('0x20'))][(_0x1c96('0x21'))](_0x1c96('0x29'));}if(!_0x1ade48['data1']||!_0x1ade48[_0x1c96('0x10')]){throw new db[(_0x1c96('0x20'))][(_0x1c96('0x21'))](_0x1c96('0x2a'));}_0x5a8f97=_0x1ade48;logger[_0x1c96('0xb')](util[_0x1c96('0xc')](_0x1c96('0x2b'),_0x5bb3c3['id']));return sentiment(_0x5a8f97[_0x1c96('0xf')],_0x5a8f97[_0x1c96('0x10')],_0x1e0663['sentimentRegion'],_0x5bb3c3['fileText'],_0x1e0663[_0x1c96('0x24')]);})[_0x1c96('0x12')](function(_0xaf5b6f){logger[_0x1c96('0xb')](util[_0x1c96('0xc')]('[RECORDING:%d]\x20Sentiment\x20Analysis\x20available',_0x5bb3c3['id']));return _0x5bb3c3['update']({'sentiment':_0xaf5b6f[_0x1c96('0x2e')],'sPositive':_0xaf5b6f[_0x1c96('0x2f')][_0x1c96('0x30')],'sNegative':_0xaf5b6f['SentimentScore'][_0x1c96('0x31')],'sMixed':_0xaf5b6f[_0x1c96('0x2f')]['Mixed'],'sNeutral':_0xaf5b6f[_0x1c96('0x2f')]['Neutral'],'transcribeStatus':'COMPLETED'});})[_0x1c96('0x12')](function(){logger[_0x1c96('0xb')](util[_0x1c96('0xc')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x5bb3c3['id']));_0x425345();});}})['catch'](function(_0x4fd7de){if(_0x4fd7de){if(!_0x4fd7de[_0x1c96('0x39')]||_0x4fd7de['name']!==_0x1c96('0x3a')){logger['error'](util[_0x1c96('0xc')](_0x1c96('0x3b'),_0x5bb3c3['id']),util[_0x1c96('0x3c')](_0x4fd7de,{'showHidden':![],'depth':null}));}}_0x425345();});});}function checkTranscribe(){var _0x1f0a98;var _0x5c7720;var _0x200fc9;return db[_0x1c96('0x3d')][_0x1c96('0x3e')]({'where':{'transcribeStatus':_0x1c96('0x3f')}})['then'](function(_0x271a10){if(!_0x271a10||!_0x271a10[_0x1c96('0x1b')]){throw new db[(_0x1c96('0x20'))][(_0x1c96('0x21'))](_0x1c96('0x40'));}_0x1f0a98=_0x271a10;return db[_0x1c96('0x41')][_0x1c96('0x28')]({'where':{'id':0x1}});})['then'](function(_0x2a4249){if(!_0x2a4249){throw new db['Sequelize'][(_0x1c96('0x21'))](_0x1c96('0x42'));}_0x5c7720=_0x2a4249;if(!_0x5c7720['transcribe']||!_0x5c7720['transcribeAccountId']||!_0x5c7720[_0x1c96('0x11')]||!_0x5c7720[_0x1c96('0x24')]||!_0x5c7720[_0x1c96('0x38')]){throw new db['Sequelize'][(_0x1c96('0x21'))](_0x1c96('0x43'));}return db[_0x1c96('0x27')]['findOne']({'where':{'id':_0x5c7720['transcribeAccountId']}});})[_0x1c96('0x12')](function(_0x534f61){if(!_0x534f61){throw new db['Sequelize']['ValidationError']('Cloud\x20Provider\x20not\x20available');}if(!_0x534f61[_0x1c96('0xf')]||!_0x534f61['data2']){throw new db['Sequelize']['ValidationError'](_0x1c96('0x2a'));}_0x200fc9=_0x534f61;var _0x75d719=[];_0x1f0a98[_0x1c96('0x44')](function(_0x1630e){_0x75d719[_0x1c96('0x45')](checkTranscribeJob(_0x1630e,_0x5c7720,_0x200fc9));});return BPromise[_0x1c96('0x46')](_0x75d719);})[_0x1c96('0x47')](function(_0x365116){if(_0x365116){if(!_0x365116[_0x1c96('0x39')]||_0x365116['name']!==_0x1c96('0x3a')){logger[_0x1c96('0x48')](util[_0x1c96('0x3c')](_0x365116,{'showHidden':![],'depth':null}));}}});}exports[_0x1c96('0x49')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};