ed1cda11af03ea524118a4da0c4791a84fb4781f
[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 _0xd5a2=['TranscriptionJob','fileText','TranscriptionJobStatus','COMPLETED','Transcript','TranscriptFileUri','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','transcript','update','Sequelize','ValidationError','sentiment','sentimentAccountId','sentimentRegion','language','bucket','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available','CloudProvider','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','Sentiment','SentimentScore','Positive','Negative','Mixed','Neutral','FAILED','FailureReason','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','tempSentiment','findOne','Cloud\x20Provider\x20not\x20available','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','catch','name','error','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','inspect','findAll','No\x20transcribe\x20job\x20to\x20check','Setting','Settings\x20not\x20available','transcribeAccountId','forEach','push','SequelizeValidationError','start','aws-sdk','request-promise','util','bluebird','../../mysqldb','transcribe','TranscribeService','getTranscriptionJob','Comprehend','detectSentiment','substring','info','format','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','data1','data2','transcribeRegion','transcribeName','then','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s'];(function(_0x40ebff,_0x1dd15e){var _0x40122a=function(_0xae6174){while(--_0xae6174){_0x40ebff['push'](_0x40ebff['shift']());}};_0x40122a(++_0x1dd15e);}(_0xd5a2,0x1eb));var _0x2d5a=function(_0x2fd955,_0x2d0785){_0x2fd955=_0x2fd955-0x0;var _0x1b3f9f=_0xd5a2[_0x2fd955];return _0x1b3f9f;};var _=require('lodash');var AWS=require(_0x2d5a('0x0'));var rp=require(_0x2d5a('0x1'));var util=require(_0x2d5a('0x2'));var BPromise=require(_0x2d5a('0x3'));var db=require(_0x2d5a('0x4'))['db'];var logger=require('../../config/logger')(_0x2d5a('0x5'));function getTranscriptionJob(_0xaeebb3,_0x18590d,_0x42947b,_0x2f7a0a){return new Promise(function(_0x1187b5,_0x923c29){var _0x1ae103=new AWS[(_0x2d5a('0x6'))]({'accessKeyId':_0x18590d,'secretAccessKey':_0xaeebb3,'region':_0x42947b});_0x1ae103[_0x2d5a('0x7')]({'TranscriptionJobName':_0x2f7a0a},function(_0x79898c,_0x4d5c52){if(_0x79898c){return _0x923c29(_0x79898c);}else{return _0x1187b5(_0x4d5c52);}});});}function sentiment(_0x5054c8,_0x3737a1,_0x562b6a,_0x2ddd41,_0x3f2238){return new Promise(function(_0x508d85,_0x2d468f){var _0x1b7cbc=new AWS[(_0x2d5a('0x8'))]({'accessKeyId':_0x3737a1,'secretAccessKey':_0x5054c8,'region':_0x562b6a});_0x1b7cbc[_0x2d5a('0x9')]({'Text':_0x2ddd41,'LanguageCode':_0x3f2238[_0x2d5a('0xa')](0x0,0x2)},function(_0x5329c3,_0x3b9d31){if(_0x5329c3){return _0x2d468f(_0x5329c3);}else{return _0x508d85(_0x3b9d31);}});});}function checkTranscribeJob(_0x457e7e,_0x21b294,_0x3a563d){var _0x583be2;return new BPromise(function(_0x535dd7,_0x1fdb87){logger[_0x2d5a('0xb')](util[_0x2d5a('0xc')](_0x2d5a('0xd'),_0x457e7e['id'],_0x457e7e['transcribeName']));return getTranscriptionJob(_0x3a563d[_0x2d5a('0xe')],_0x3a563d[_0x2d5a('0xf')],_0x21b294[_0x2d5a('0x10')],_0x457e7e[_0x2d5a('0x11')])[_0x2d5a('0x12')](function(_0x4e4e9c){logger[_0x2d5a('0xb')](util[_0x2d5a('0xc')](_0x2d5a('0x13'),_0x457e7e['id'],_0x457e7e[_0x2d5a('0x11')],_0x4e4e9c[_0x2d5a('0x14')]['TranscriptionJobStatus']));if(!_0x457e7e[_0x2d5a('0x15')]){switch(_0x4e4e9c['TranscriptionJob'][_0x2d5a('0x16')]){case _0x2d5a('0x17'):var _0xd71c5a={'transcribeStatus':_0x4e4e9c[_0x2d5a('0x14')]['TranscriptionJobStatus'],'fileUri':_0x4e4e9c['TranscriptionJob']['Transcript']['TranscriptFileUri']};logger[_0x2d5a('0xb')](util[_0x2d5a('0xc')]('[RECORDING:%d]\x20Get\x20transcript',_0x457e7e['id']));return rp({'uri':_0x4e4e9c[_0x2d5a('0x14')][_0x2d5a('0x18')][_0x2d5a('0x19')],'json':!![]})[_0x2d5a('0x12')](function(_0x49d731){logger[_0x2d5a('0xb')](util['format'](_0x2d5a('0x1a'),_0x457e7e['id']));if(_0x49d731&&_0x49d731[_0x2d5a('0x1b')]&&_0x49d731[_0x2d5a('0x1b')][_0x2d5a('0x1c')]&&_0x49d731['results']['transcripts']['length']){_0xd71c5a[_0x2d5a('0x15')]='';for(var _0x1beb0e=0x0;_0x1beb0e<_0x49d731[_0x2d5a('0x1b')][_0x2d5a('0x1c')][_0x2d5a('0x1d')];_0x1beb0e++){_0xd71c5a[_0x2d5a('0x15')]+=_0x49d731['results'][_0x2d5a('0x1c')][_0x1beb0e][_0x2d5a('0x1e')]+'';}}return _0x457e7e[_0x2d5a('0x1f')](_0xd71c5a);})[_0x2d5a('0x12')](function(){logger[_0x2d5a('0xb')](util[_0x2d5a('0xc')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x457e7e['id']));if(!_0x457e7e['tempSentiment']){throw new db[(_0x2d5a('0x20'))][(_0x2d5a('0x21'))]('Sentiment\x20Analysis\x20not\x20requested');}if(!_0x21b294[_0x2d5a('0x22')]||!_0x21b294[_0x2d5a('0x23')]||!_0x21b294[_0x2d5a('0x24')]||!_0x21b294[_0x2d5a('0x25')]||!_0x21b294[_0x2d5a('0x26')]){throw new db[(_0x2d5a('0x20'))][(_0x2d5a('0x21'))](_0x2d5a('0x27'));}if(!_0xd71c5a[_0x2d5a('0x15')]){throw new Error(_0x2d5a('0x28'));}if(_0x21b294[_0x2d5a('0x23')]===_0x3a563d['id']){return _0x3a563d;}else{return db[_0x2d5a('0x29')]['findOne']({'where':{'id':_settings[_0x2d5a('0x23')]}});}})[_0x2d5a('0x12')](function(_0x55af0a){if(!_0x55af0a){throw new db[(_0x2d5a('0x20'))]['ValidationError']('Cloud\x20Provider\x20not\x20available');}if(!_0x55af0a['data1']||!_0x55af0a['data2']){throw new db[(_0x2d5a('0x20'))]['ValidationError'](_0x2d5a('0x2a'));}_0x583be2=_0x55af0a;logger[_0x2d5a('0xb')](util['format'](_0x2d5a('0x2b'),_0x457e7e['id']));return sentiment(_0x583be2['data1'],_0x583be2[_0x2d5a('0xf')],_0x21b294[_0x2d5a('0x24')],_0xd71c5a[_0x2d5a('0x15')],_0x21b294['language']);})[_0x2d5a('0x12')](function(_0x1aef9f){logger['info'](util[_0x2d5a('0xc')]('[RECORDING:%d]\x20Sentiment\x20Analysis\x20available',_0x457e7e['id']));return _0x457e7e[_0x2d5a('0x1f')]({'sentiment':_0x1aef9f[_0x2d5a('0x2c')],'sPositive':_0x1aef9f[_0x2d5a('0x2d')][_0x2d5a('0x2e')],'sNegative':_0x1aef9f[_0x2d5a('0x2d')][_0x2d5a('0x2f')],'sMixed':_0x1aef9f[_0x2d5a('0x2d')][_0x2d5a('0x30')],'sNeutral':_0x1aef9f[_0x2d5a('0x2d')][_0x2d5a('0x31')]});})[_0x2d5a('0x12')](function(){logger['info'](util[_0x2d5a('0xc')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x457e7e['id']));_0x535dd7();});case'FAILED':return _0x457e7e[_0x2d5a('0x1f')]({'transcribeStatus':_0x2d5a('0x32'),'failureReason':_0x4e4e9c[_0x2d5a('0x14')][_0x2d5a('0x33')]})[_0x2d5a('0x12')](function(){logger[_0x2d5a('0xb')](util['format'](_0x2d5a('0x34'),_0x457e7e['id']));_0x535dd7();});default:logger['info'](util[_0x2d5a('0xc')](_0x2d5a('0x35'),_0x457e7e['id']));break;}}else{return BPromise[_0x2d5a('0x36')]()[_0x2d5a('0x12')](function(){if(!_0x457e7e[_0x2d5a('0x37')]){throw new db[(_0x2d5a('0x20'))]['ValidationError']('Sentiment\x20Analysis\x20not\x20requested');}if(!_0x21b294[_0x2d5a('0x22')]||!_0x21b294['sentimentAccountId']||!_0x21b294[_0x2d5a('0x24')]||!_0x21b294['language']||!_0x21b294[_0x2d5a('0x26')]){throw new db['Sequelize'][(_0x2d5a('0x21'))](_0x2d5a('0x27'));}if(!_0x457e7e['fileText']){throw new Error(_0x2d5a('0x28'));}if(_0x21b294[_0x2d5a('0x23')]===_0x3a563d['id']){return _0x3a563d;}else{return db['CloudProvider'][_0x2d5a('0x38')]({'where':{'id':_settings['sentimentAccountId']}});}})['then'](function(_0x369ce9){if(!_0x369ce9){throw new db[(_0x2d5a('0x20'))][(_0x2d5a('0x21'))](_0x2d5a('0x39'));}if(!_0x369ce9[_0x2d5a('0xe')]||!_0x369ce9[_0x2d5a('0xf')]){throw new db[(_0x2d5a('0x20'))][(_0x2d5a('0x21'))]('Cloud\x20Provider\x20not\x20configured');}_0x583be2=_0x369ce9;logger[_0x2d5a('0xb')](util['format'](_0x2d5a('0x2b'),_0x457e7e['id']));return sentiment(_0x583be2[_0x2d5a('0xe')],_0x583be2[_0x2d5a('0xf')],_0x21b294[_0x2d5a('0x24')],_0x457e7e[_0x2d5a('0x15')],_0x21b294[_0x2d5a('0x25')]);})[_0x2d5a('0x12')](function(_0x5b8928){logger[_0x2d5a('0xb')](util[_0x2d5a('0xc')](_0x2d5a('0x3a'),_0x457e7e['id']));return _0x457e7e[_0x2d5a('0x1f')]({'sentiment':_0x5b8928[_0x2d5a('0x2c')],'sPositive':_0x5b8928['SentimentScore']['Positive'],'sNegative':_0x5b8928[_0x2d5a('0x2d')][_0x2d5a('0x2f')],'sMixed':_0x5b8928['SentimentScore'][_0x2d5a('0x30')],'sNeutral':_0x5b8928[_0x2d5a('0x2d')][_0x2d5a('0x31')],'transcribeStatus':_0x2d5a('0x17')});})['then'](function(){logger['info'](util['format']('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x457e7e['id']));_0x535dd7();});}})[_0x2d5a('0x3b')](function(_0xe99eed){if(_0xe99eed){if(!_0xe99eed[_0x2d5a('0x3c')]||_0xe99eed['name']!=='SequelizeValidationError'){logger[_0x2d5a('0x3d')](util[_0x2d5a('0xc')](_0x2d5a('0x3e'),_0x457e7e['id']),util[_0x2d5a('0x3f')](_0xe99eed,{'showHidden':![],'depth':null}));}}_0x535dd7();});});}function checkTranscribe(){var _0x10b742;var _0x482c54;var _0x2b5325;return db['VoiceRecording'][_0x2d5a('0x40')]({'where':{'transcribeStatus':'IN_PROGRESS'}})[_0x2d5a('0x12')](function(_0x4b90f0){if(!_0x4b90f0||!_0x4b90f0[_0x2d5a('0x1d')]){throw new db[(_0x2d5a('0x20'))][(_0x2d5a('0x21'))](_0x2d5a('0x41'));}_0x10b742=_0x4b90f0;return db[_0x2d5a('0x42')][_0x2d5a('0x38')]({'where':{'id':0x1}});})[_0x2d5a('0x12')](function(_0x10039a){if(!_0x10039a){throw new db[(_0x2d5a('0x20'))][(_0x2d5a('0x21'))](_0x2d5a('0x43'));}_0x482c54=_0x10039a;if(!_0x482c54[_0x2d5a('0x5')]||!_0x482c54[_0x2d5a('0x44')]||!_0x482c54[_0x2d5a('0x10')]||!_0x482c54['language']||!_0x482c54[_0x2d5a('0x26')]){throw new db[(_0x2d5a('0x20'))][(_0x2d5a('0x21'))]('Transcribe\x20not\x20configured');}return db['CloudProvider']['findOne']({'where':{'id':_0x482c54[_0x2d5a('0x44')]}});})['then'](function(_0x4c91d0){if(!_0x4c91d0){throw new db[(_0x2d5a('0x20'))][(_0x2d5a('0x21'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x4c91d0[_0x2d5a('0xe')]||!_0x4c91d0[_0x2d5a('0xf')]){throw new db[(_0x2d5a('0x20'))]['ValidationError'](_0x2d5a('0x2a'));}_0x2b5325=_0x4c91d0;var _0x41be8b=[];_0x10b742[_0x2d5a('0x45')](function(_0x2d70a0){_0x41be8b[_0x2d5a('0x46')](checkTranscribeJob(_0x2d70a0,_0x482c54,_0x2b5325));});return BPromise['all'](_0x41be8b);})['catch'](function(_0x4b4154){if(_0x4b4154){if(!_0x4b4154[_0x2d5a('0x3c')]||_0x4b4154[_0x2d5a('0x3c')]!==_0x2d5a('0x47')){logger[_0x2d5a('0x3d')](util[_0x2d5a('0x3f')](_0x4b4154,{'showHidden':![],'depth':null}));}}});}exports[_0x2d5a('0x48')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};