a6e5a596ca9066ae4beb143171da4f828ed77d8e
[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 _0x60d7=['[RECORDING:%d]\x20Get\x20transcript','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','transcript','update','Sequelize','ValidationError','Sentiment\x20Analysis\x20not\x20requested','sentiment','sentimentAccountId','sentimentRegion','language','bucket','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available','findOne','Cloud\x20Provider\x20not\x20available','data1','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Sentiment','SentimentScore','Positive','Neutral','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','FAILED','FailureReason','resolve','CloudProvider','Mixed','catch','name','SequelizeValidationError','error','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','inspect','IN_PROGRESS','Settings\x20not\x20available','transcribeAccountId','push','all','start','lodash','aws-sdk','util','../../mysqldb','transcribe','TranscribeService','getTranscriptionJob','Comprehend','substring','info','format','transcribeName','data2','transcribeRegion','then','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJob','TranscriptionJobStatus','fileText','COMPLETED','Transcript','TranscriptFileUri'];(function(_0x472e14,_0x5547da){var _0x5d2f40=function(_0xab2a42){while(--_0xab2a42){_0x472e14['push'](_0x472e14['shift']());}};_0x5d2f40(++_0x5547da);}(_0x60d7,0x139));var _0x760d=function(_0x1c9fef,_0x23b25d){_0x1c9fef=_0x1c9fef-0x0;var _0x2c1dc5=_0x60d7[_0x1c9fef];return _0x2c1dc5;};var _=require(_0x760d('0x0'));var AWS=require(_0x760d('0x1'));var rp=require('request-promise');var util=require(_0x760d('0x2'));var BPromise=require('bluebird');var db=require(_0x760d('0x3'))['db'];var logger=require('../../config/logger')(_0x760d('0x4'));function getTranscriptionJob(_0x1d35b7,_0x2eebb3,_0x2d963b,_0x47affe){return new Promise(function(_0x34ebba,_0x320086){var _0x39282b=new AWS[(_0x760d('0x5'))]({'accessKeyId':_0x2eebb3,'secretAccessKey':_0x1d35b7,'region':_0x2d963b});_0x39282b[_0x760d('0x6')]({'TranscriptionJobName':_0x47affe},function(_0x5db4c2,_0x2ca05d){if(_0x5db4c2){return _0x320086(_0x5db4c2);}else{return _0x34ebba(_0x2ca05d);}});});}function sentiment(_0x3ffaa4,_0x314059,_0x5c4884,_0x465102,_0xc85e42){return new Promise(function(_0x16f645,_0x52165a){var _0x1259ed=new AWS[(_0x760d('0x7'))]({'accessKeyId':_0x314059,'secretAccessKey':_0x3ffaa4,'region':_0x5c4884});_0x1259ed['detectSentiment']({'Text':_0x465102,'LanguageCode':_0xc85e42[_0x760d('0x8')](0x0,0x2)},function(_0x14b79e,_0x13433f){if(_0x14b79e){return _0x52165a(_0x14b79e);}else{return _0x16f645(_0x13433f);}});});}function checkTranscribeJob(_0x18dfba,_0x1c6d0d,_0x40b3ee){var _0xffb1f9;return new BPromise(function(_0x368669,_0x1be8a0){logger[_0x760d('0x9')](util[_0x760d('0xa')]('[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)',_0x18dfba['id'],_0x18dfba[_0x760d('0xb')]));return getTranscriptionJob(_0x40b3ee['data1'],_0x40b3ee[_0x760d('0xc')],_0x1c6d0d[_0x760d('0xd')],_0x18dfba[_0x760d('0xb')])[_0x760d('0xe')](function(_0x49c0d4){logger['info'](util[_0x760d('0xa')](_0x760d('0xf'),_0x18dfba['id'],_0x18dfba[_0x760d('0xb')],_0x49c0d4[_0x760d('0x10')][_0x760d('0x11')]));if(!_0x18dfba[_0x760d('0x12')]){switch(_0x49c0d4['TranscriptionJob']['TranscriptionJobStatus']){case _0x760d('0x13'):var _0x17c761={'transcribeStatus':_0x49c0d4[_0x760d('0x10')][_0x760d('0x11')],'fileUri':_0x49c0d4[_0x760d('0x10')][_0x760d('0x14')][_0x760d('0x15')]};logger[_0x760d('0x9')](util[_0x760d('0xa')](_0x760d('0x16'),_0x18dfba['id']));return rp({'uri':_0x49c0d4['TranscriptionJob'][_0x760d('0x14')][_0x760d('0x15')],'json':!![]})[_0x760d('0xe')](function(_0x2797bf){logger[_0x760d('0x9')](util['format'](_0x760d('0x17'),_0x18dfba['id']));if(_0x2797bf&&_0x2797bf[_0x760d('0x18')]&&_0x2797bf[_0x760d('0x18')]['transcripts']&&_0x2797bf['results'][_0x760d('0x19')][_0x760d('0x1a')]){_0x17c761[_0x760d('0x12')]='';for(var _0x19cd53=0x0;_0x19cd53<_0x2797bf[_0x760d('0x18')][_0x760d('0x19')][_0x760d('0x1a')];_0x19cd53++){_0x17c761[_0x760d('0x12')]+=_0x2797bf['results'][_0x760d('0x19')][_0x19cd53][_0x760d('0x1b')]+'';}}return _0x18dfba[_0x760d('0x1c')](_0x17c761);})[_0x760d('0xe')](function(){logger['info'](util[_0x760d('0xa')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x18dfba['id']));if(!_0x18dfba['tempSentiment']){throw new db[(_0x760d('0x1d'))][(_0x760d('0x1e'))](_0x760d('0x1f'));}if(!_0x1c6d0d[_0x760d('0x20')]||!_0x1c6d0d[_0x760d('0x21')]||!_0x1c6d0d[_0x760d('0x22')]||!_0x1c6d0d[_0x760d('0x23')]||!_0x1c6d0d[_0x760d('0x24')]){throw new db['Sequelize'][(_0x760d('0x1e'))](_0x760d('0x25'));}if(!_0x17c761[_0x760d('0x12')]){throw new Error(_0x760d('0x26'));}if(_0x1c6d0d['sentimentAccountId']===_0x40b3ee['id']){return _0x40b3ee;}else{return db['CloudProvider'][_0x760d('0x27')]({'where':{'id':_settings[_0x760d('0x21')]}});}})[_0x760d('0xe')](function(_0x1b0bd9){if(!_0x1b0bd9){throw new db[(_0x760d('0x1d'))][(_0x760d('0x1e'))](_0x760d('0x28'));}if(!_0x1b0bd9[_0x760d('0x29')]||!_0x1b0bd9[_0x760d('0xc')]){throw new db[(_0x760d('0x1d'))][(_0x760d('0x1e'))](_0x760d('0x2a'));}_0xffb1f9=_0x1b0bd9;logger[_0x760d('0x9')](util['format'](_0x760d('0x2b'),_0x18dfba['id']));return sentiment(_0xffb1f9[_0x760d('0x29')],_0xffb1f9['data2'],_0x1c6d0d['sentimentRegion'],_0x17c761[_0x760d('0x12')],_0x1c6d0d[_0x760d('0x23')]);})['then'](function(_0x52b3b5){logger['info'](util['format'](_0x760d('0x2c'),_0x18dfba['id']));return _0x18dfba[_0x760d('0x1c')]({'sentiment':_0x52b3b5[_0x760d('0x2d')],'sPositive':_0x52b3b5[_0x760d('0x2e')][_0x760d('0x2f')],'sNegative':_0x52b3b5['SentimentScore']['Negative'],'sMixed':_0x52b3b5['SentimentScore']['Mixed'],'sNeutral':_0x52b3b5[_0x760d('0x2e')][_0x760d('0x30')]});})[_0x760d('0xe')](function(){logger[_0x760d('0x9')](util[_0x760d('0xa')](_0x760d('0x31'),_0x18dfba['id']));_0x368669();});case'FAILED':return _0x18dfba[_0x760d('0x1c')]({'transcribeStatus':_0x760d('0x32'),'failureReason':_0x49c0d4[_0x760d('0x10')][_0x760d('0x33')]})[_0x760d('0xe')](function(){logger[_0x760d('0x9')](util[_0x760d('0xa')](_0x760d('0x31'),_0x18dfba['id']));_0x368669();});default:logger['info'](util[_0x760d('0xa')]('[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed',_0x18dfba['id']));break;}}else{return BPromise[_0x760d('0x34')]()[_0x760d('0xe')](function(){if(!_0x18dfba['tempSentiment']){throw new db[(_0x760d('0x1d'))]['ValidationError']('Sentiment\x20Analysis\x20not\x20requested');}if(!_0x1c6d0d[_0x760d('0x20')]||!_0x1c6d0d['sentimentAccountId']||!_0x1c6d0d['sentimentRegion']||!_0x1c6d0d[_0x760d('0x23')]||!_0x1c6d0d[_0x760d('0x24')]){throw new db[(_0x760d('0x1d'))]['ValidationError']('Sentiment\x20Analysis\x20not\x20configured');}if(!_0x18dfba['fileText']){throw new Error(_0x760d('0x26'));}if(_0x1c6d0d[_0x760d('0x21')]===_0x40b3ee['id']){return _0x40b3ee;}else{return db[_0x760d('0x35')][_0x760d('0x27')]({'where':{'id':_settings[_0x760d('0x21')]}});}})[_0x760d('0xe')](function(_0x144784){if(!_0x144784){throw new db[(_0x760d('0x1d'))][(_0x760d('0x1e'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x144784['data1']||!_0x144784[_0x760d('0xc')]){throw new db['Sequelize'][(_0x760d('0x1e'))](_0x760d('0x2a'));}_0xffb1f9=_0x144784;logger[_0x760d('0x9')](util[_0x760d('0xa')](_0x760d('0x2b'),_0x18dfba['id']));return sentiment(_0xffb1f9[_0x760d('0x29')],_0xffb1f9[_0x760d('0xc')],_0x1c6d0d[_0x760d('0x22')],_0x18dfba[_0x760d('0x12')],_0x1c6d0d[_0x760d('0x23')]);})[_0x760d('0xe')](function(_0x271ecc){logger[_0x760d('0x9')](util[_0x760d('0xa')](_0x760d('0x2c'),_0x18dfba['id']));return _0x18dfba[_0x760d('0x1c')]({'sentiment':_0x271ecc[_0x760d('0x2d')],'sPositive':_0x271ecc['SentimentScore']['Positive'],'sNegative':_0x271ecc['SentimentScore']['Negative'],'sMixed':_0x271ecc[_0x760d('0x2e')][_0x760d('0x36')],'sNeutral':_0x271ecc[_0x760d('0x2e')]['Neutral'],'transcribeStatus':_0x760d('0x13')});})[_0x760d('0xe')](function(){logger[_0x760d('0x9')](util[_0x760d('0xa')](_0x760d('0x31'),_0x18dfba['id']));_0x368669();});}})[_0x760d('0x37')](function(_0x5808f6){if(_0x5808f6){if(!_0x5808f6[_0x760d('0x38')]||_0x5808f6[_0x760d('0x38')]!==_0x760d('0x39')){logger[_0x760d('0x3a')](util[_0x760d('0xa')](_0x760d('0x3b'),_0x18dfba['id']),util[_0x760d('0x3c')](_0x5808f6,{'showHidden':![],'depth':null}));}}_0x368669();});});}function checkTranscribe(){var _0x1036af;var _0x3fab2d;var _0x823b7b;return db['VoiceRecording']['findAll']({'where':{'transcribeStatus':_0x760d('0x3d')}})[_0x760d('0xe')](function(_0x519379){if(!_0x519379||!_0x519379[_0x760d('0x1a')]){throw new db['Sequelize'][(_0x760d('0x1e'))]('No\x20transcribe\x20job\x20to\x20check');}_0x1036af=_0x519379;return db['Setting'][_0x760d('0x27')]({'where':{'id':0x1}});})[_0x760d('0xe')](function(_0x3dbfa5){if(!_0x3dbfa5){throw new db[(_0x760d('0x1d'))]['ValidationError'](_0x760d('0x3e'));}_0x3fab2d=_0x3dbfa5;if(!_0x3fab2d[_0x760d('0x4')]||!_0x3fab2d['transcribeAccountId']||!_0x3fab2d[_0x760d('0xd')]||!_0x3fab2d['language']||!_0x3fab2d[_0x760d('0x24')]){throw new db[(_0x760d('0x1d'))][(_0x760d('0x1e'))]('Transcribe\x20not\x20configured');}return db[_0x760d('0x35')][_0x760d('0x27')]({'where':{'id':_0x3fab2d[_0x760d('0x3f')]}});})[_0x760d('0xe')](function(_0x102e7d){if(!_0x102e7d){throw new db[(_0x760d('0x1d'))][(_0x760d('0x1e'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x102e7d[_0x760d('0x29')]||!_0x102e7d[_0x760d('0xc')]){throw new db[(_0x760d('0x1d'))][(_0x760d('0x1e'))](_0x760d('0x2a'));}_0x823b7b=_0x102e7d;var _0x83749a=[];_0x1036af['forEach'](function(_0x559577){_0x83749a[_0x760d('0x40')](checkTranscribeJob(_0x559577,_0x3fab2d,_0x823b7b));});return BPromise[_0x760d('0x41')](_0x83749a);})['catch'](function(_0x1b7ed7){if(_0x1b7ed7){if(!_0x1b7ed7[_0x760d('0x38')]||_0x1b7ed7['name']!==_0x760d('0x39')){logger['error'](util[_0x760d('0x3c')](_0x1b7ed7,{'showHidden':![],'depth':null}));}}});}exports[_0x760d('0x42')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};