Built motion from commit fe909640.|2.6.8
[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 _0x2fee=['bluebird','../../config/logger','transcribe','TranscribeService','getTranscriptionJob','Comprehend','detectSentiment','substring','format','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeName','data1','transcribeRegion','info','TranscriptionJobStatus','COMPLETED','TranscriptionJob','Transcript','TranscriptFileUri','[RECORDING:%d]\x20Get\x20transcript','then','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','transcript','update','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','Sequelize','ValidationError','Sentiment\x20Analysis\x20not\x20requested','sentiment','sentimentAccountId','sentimentRegion','language','bucket','fileText','Transcript\x20not\x20available','CloudProvider','findOne','data2','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Sentiment','SentimentScore','FAILED','FailureReason','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','tempSentiment','Sentiment\x20Analysis\x20not\x20configured','Neutral','catch','name','SequelizeValidationError','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','findAll','IN_PROGRESS','No\x20transcribe\x20job\x20to\x20check','Setting','transcribeAccountId','Transcribe\x20not\x20configured','Cloud\x20Provider\x20not\x20available','forEach','all','error','inspect','start','lodash','request-promise'];(function(_0x90e9ab,_0x426802){var _0xdfa58b=function(_0x3d760e){while(--_0x3d760e){_0x90e9ab['push'](_0x90e9ab['shift']());}};_0xdfa58b(++_0x426802);}(_0x2fee,0x11a));var _0xe2fe=function(_0x592d7c,_0x405966){_0x592d7c=_0x592d7c-0x0;var _0xaa8d19=_0x2fee[_0x592d7c];return _0xaa8d19;};var _=require(_0xe2fe('0x0'));var AWS=require('aws-sdk');var rp=require(_0xe2fe('0x1'));var util=require('util');var BPromise=require(_0xe2fe('0x2'));var db=require('../../mysqldb')['db'];var logger=require(_0xe2fe('0x3'))(_0xe2fe('0x4'));function getTranscriptionJob(_0x4ca9af,_0x15f1a2,_0x2676cd,_0x128ac4){return new Promise(function(_0x4d4ac4,_0x20d031){var _0x361d40=new AWS[(_0xe2fe('0x5'))]({'accessKeyId':_0x15f1a2,'secretAccessKey':_0x4ca9af,'region':_0x2676cd});_0x361d40[_0xe2fe('0x6')]({'TranscriptionJobName':_0x128ac4},function(_0x39a31c,_0x2e0fc1){if(_0x39a31c){return _0x20d031(_0x39a31c);}else{return _0x4d4ac4(_0x2e0fc1);}});});}function sentiment(_0x51d97f,_0x2168c8,_0x38bc81,_0x5b2c6a,_0x187242){return new Promise(function(_0x28880c,_0x343be5){var _0x470b93=new AWS[(_0xe2fe('0x7'))]({'accessKeyId':_0x2168c8,'secretAccessKey':_0x51d97f,'region':_0x38bc81});_0x470b93[_0xe2fe('0x8')]({'Text':_0x5b2c6a,'LanguageCode':_0x187242[_0xe2fe('0x9')](0x0,0x2)},function(_0x42a6c0,_0xaf14b1){if(_0x42a6c0){return _0x343be5(_0x42a6c0);}else{return _0x28880c(_0xaf14b1);}});});}function checkTranscribeJob(_0x5713de,_0x2d4b18,_0x580e98){var _0x3b2753;return new BPromise(function(_0x490205,_0x83e9d1){logger['info'](util[_0xe2fe('0xa')](_0xe2fe('0xb'),_0x5713de['id'],_0x5713de[_0xe2fe('0xc')]));return getTranscriptionJob(_0x580e98[_0xe2fe('0xd')],_0x580e98['data2'],_0x2d4b18[_0xe2fe('0xe')],_0x5713de[_0xe2fe('0xc')])['then'](function(_0x523614){logger[_0xe2fe('0xf')](util['format']('[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s',_0x5713de['id'],_0x5713de[_0xe2fe('0xc')],_0x523614['TranscriptionJob'][_0xe2fe('0x10')]));if(!_0x5713de['fileText']){switch(_0x523614['TranscriptionJob'][_0xe2fe('0x10')]){case _0xe2fe('0x11'):var _0xb69904={'transcribeStatus':_0x523614[_0xe2fe('0x12')]['TranscriptionJobStatus'],'fileUri':_0x523614[_0xe2fe('0x12')][_0xe2fe('0x13')][_0xe2fe('0x14')]};logger[_0xe2fe('0xf')](util[_0xe2fe('0xa')](_0xe2fe('0x15'),_0x5713de['id']));return rp({'uri':_0x523614[_0xe2fe('0x12')][_0xe2fe('0x13')][_0xe2fe('0x14')],'json':!![]})[_0xe2fe('0x16')](function(_0x89d7c6){logger[_0xe2fe('0xf')](util[_0xe2fe('0xa')](_0xe2fe('0x17'),_0x5713de['id']));if(_0x89d7c6&&_0x89d7c6[_0xe2fe('0x18')]&&_0x89d7c6[_0xe2fe('0x18')][_0xe2fe('0x19')]&&_0x89d7c6[_0xe2fe('0x18')]['transcripts'][_0xe2fe('0x1a')]){_0xb69904['fileText']='';for(var _0x2173ad=0x0;_0x2173ad<_0x89d7c6[_0xe2fe('0x18')]['transcripts'][_0xe2fe('0x1a')];_0x2173ad++){_0xb69904['fileText']+=_0x89d7c6['results'][_0xe2fe('0x19')][_0x2173ad][_0xe2fe('0x1b')]+'';}}return _0x5713de[_0xe2fe('0x1c')](_0xb69904);})[_0xe2fe('0x16')](function(){logger[_0xe2fe('0xf')](util[_0xe2fe('0xa')](_0xe2fe('0x1d'),_0x5713de['id']));if(!_0x5713de['tempSentiment']){throw new db[(_0xe2fe('0x1e'))][(_0xe2fe('0x1f'))](_0xe2fe('0x20'));}if(!_0x2d4b18[_0xe2fe('0x21')]||!_0x2d4b18[_0xe2fe('0x22')]||!_0x2d4b18[_0xe2fe('0x23')]||!_0x2d4b18[_0xe2fe('0x24')]||!_0x2d4b18[_0xe2fe('0x25')]){throw new db[(_0xe2fe('0x1e'))][(_0xe2fe('0x1f'))]('Sentiment\x20Analysis\x20not\x20configured');}if(!_0xb69904[_0xe2fe('0x26')]){throw new Error(_0xe2fe('0x27'));}if(_0x2d4b18['sentimentAccountId']===_0x580e98['id']){return _0x580e98;}else{return db[_0xe2fe('0x28')][_0xe2fe('0x29')]({'where':{'id':_settings[_0xe2fe('0x22')]}});}})[_0xe2fe('0x16')](function(_0x59ec09){if(!_0x59ec09){throw new db[(_0xe2fe('0x1e'))][(_0xe2fe('0x1f'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x59ec09[_0xe2fe('0xd')]||!_0x59ec09[_0xe2fe('0x2a')]){throw new db['Sequelize']['ValidationError'](_0xe2fe('0x2b'));}_0x3b2753=_0x59ec09;logger[_0xe2fe('0xf')](util[_0xe2fe('0xa')](_0xe2fe('0x2c'),_0x5713de['id']));return sentiment(_0x3b2753['data1'],_0x3b2753[_0xe2fe('0x2a')],_0x2d4b18[_0xe2fe('0x23')],_0xb69904[_0xe2fe('0x26')],_0x2d4b18[_0xe2fe('0x24')]);})[_0xe2fe('0x16')](function(_0x168c99){logger[_0xe2fe('0xf')](util[_0xe2fe('0xa')](_0xe2fe('0x2d'),_0x5713de['id']));return _0x5713de['update']({'sentiment':_0x168c99[_0xe2fe('0x2e')],'sPositive':_0x168c99[_0xe2fe('0x2f')]['Positive'],'sNegative':_0x168c99[_0xe2fe('0x2f')]['Negative'],'sMixed':_0x168c99[_0xe2fe('0x2f')]['Mixed'],'sNeutral':_0x168c99['SentimentScore']['Neutral']});})[_0xe2fe('0x16')](function(){logger[_0xe2fe('0xf')](util[_0xe2fe('0xa')](_0xe2fe('0x1d'),_0x5713de['id']));_0x490205();});case _0xe2fe('0x30'):return _0x5713de[_0xe2fe('0x1c')]({'transcribeStatus':_0xe2fe('0x30'),'failureReason':_0x523614[_0xe2fe('0x12')][_0xe2fe('0x31')]})['then'](function(){logger[_0xe2fe('0xf')](util['format']('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x5713de['id']));_0x490205();});default:logger[_0xe2fe('0xf')](util[_0xe2fe('0xa')](_0xe2fe('0x32'),_0x5713de['id']));break;}}else{return BPromise[_0xe2fe('0x33')]()[_0xe2fe('0x16')](function(){if(!_0x5713de[_0xe2fe('0x34')]){throw new db[(_0xe2fe('0x1e'))]['ValidationError'](_0xe2fe('0x20'));}if(!_0x2d4b18[_0xe2fe('0x21')]||!_0x2d4b18[_0xe2fe('0x22')]||!_0x2d4b18[_0xe2fe('0x23')]||!_0x2d4b18[_0xe2fe('0x24')]||!_0x2d4b18['bucket']){throw new db['Sequelize'][(_0xe2fe('0x1f'))](_0xe2fe('0x35'));}if(!_0x5713de[_0xe2fe('0x26')]){throw new Error('Transcript\x20not\x20available');}if(_0x2d4b18[_0xe2fe('0x22')]===_0x580e98['id']){return _0x580e98;}else{return db[_0xe2fe('0x28')][_0xe2fe('0x29')]({'where':{'id':_settings[_0xe2fe('0x22')]}});}})[_0xe2fe('0x16')](function(_0x23f9af){if(!_0x23f9af){throw new db[(_0xe2fe('0x1e'))]['ValidationError']('Cloud\x20Provider\x20not\x20available');}if(!_0x23f9af['data1']||!_0x23f9af['data2']){throw new db[(_0xe2fe('0x1e'))][(_0xe2fe('0x1f'))]('Cloud\x20Provider\x20not\x20configured');}_0x3b2753=_0x23f9af;logger[_0xe2fe('0xf')](util['format'](_0xe2fe('0x2c'),_0x5713de['id']));return sentiment(_0x3b2753[_0xe2fe('0xd')],_0x3b2753['data2'],_0x2d4b18[_0xe2fe('0x23')],_0x5713de[_0xe2fe('0x26')],_0x2d4b18[_0xe2fe('0x24')]);})['then'](function(_0x58950f){logger[_0xe2fe('0xf')](util[_0xe2fe('0xa')](_0xe2fe('0x2d'),_0x5713de['id']));return _0x5713de[_0xe2fe('0x1c')]({'sentiment':_0x58950f[_0xe2fe('0x2e')],'sPositive':_0x58950f[_0xe2fe('0x2f')]['Positive'],'sNegative':_0x58950f[_0xe2fe('0x2f')]['Negative'],'sMixed':_0x58950f[_0xe2fe('0x2f')]['Mixed'],'sNeutral':_0x58950f[_0xe2fe('0x2f')][_0xe2fe('0x36')],'transcribeStatus':_0xe2fe('0x11')});})[_0xe2fe('0x16')](function(){logger[_0xe2fe('0xf')](util[_0xe2fe('0xa')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x5713de['id']));_0x490205();});}})[_0xe2fe('0x37')](function(_0xb80c22){if(_0xb80c22){if(!_0xb80c22[_0xe2fe('0x38')]||_0xb80c22[_0xe2fe('0x38')]!==_0xe2fe('0x39')){logger['error'](util[_0xe2fe('0xa')](_0xe2fe('0x3a'),_0x5713de['id']),util['inspect'](_0xb80c22,{'showHidden':![],'depth':null}));}}_0x490205();});});}function checkTranscribe(){var _0x134c43;var _0x3af02b;var _0x95cbdf;return db['VoiceRecording'][_0xe2fe('0x3b')]({'where':{'transcribeStatus':_0xe2fe('0x3c')}})[_0xe2fe('0x16')](function(_0x5820d4){if(!_0x5820d4||!_0x5820d4['length']){throw new db[(_0xe2fe('0x1e'))][(_0xe2fe('0x1f'))](_0xe2fe('0x3d'));}_0x134c43=_0x5820d4;return db[_0xe2fe('0x3e')][_0xe2fe('0x29')]({'where':{'id':0x1}});})[_0xe2fe('0x16')](function(_0x1b6e38){if(!_0x1b6e38){throw new db['Sequelize']['ValidationError']('Settings\x20not\x20available');}_0x3af02b=_0x1b6e38;if(!_0x3af02b[_0xe2fe('0x4')]||!_0x3af02b[_0xe2fe('0x3f')]||!_0x3af02b[_0xe2fe('0xe')]||!_0x3af02b[_0xe2fe('0x24')]||!_0x3af02b[_0xe2fe('0x25')]){throw new db[(_0xe2fe('0x1e'))]['ValidationError'](_0xe2fe('0x40'));}return db[_0xe2fe('0x28')][_0xe2fe('0x29')]({'where':{'id':_0x3af02b[_0xe2fe('0x3f')]}});})[_0xe2fe('0x16')](function(_0x112da3){if(!_0x112da3){throw new db[(_0xe2fe('0x1e'))][(_0xe2fe('0x1f'))](_0xe2fe('0x41'));}if(!_0x112da3[_0xe2fe('0xd')]||!_0x112da3[_0xe2fe('0x2a')]){throw new db[(_0xe2fe('0x1e'))]['ValidationError'](_0xe2fe('0x2b'));}_0x95cbdf=_0x112da3;var _0x53f6a6=[];_0x134c43[_0xe2fe('0x42')](function(_0x39d3eb){_0x53f6a6['push'](checkTranscribeJob(_0x39d3eb,_0x3af02b,_0x95cbdf));});return BPromise[_0xe2fe('0x43')](_0x53f6a6);})[_0xe2fe('0x37')](function(_0x863d8d){if(_0x863d8d){if(!_0x863d8d[_0xe2fe('0x38')]||_0x863d8d[_0xe2fe('0x38')]!==_0xe2fe('0x39')){logger[_0xe2fe('0x44')](util[_0xe2fe('0x45')](_0x863d8d,{'showHidden':![],'depth':null}));}}});}exports[_0xe2fe('0x46')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};