Built motion from commit (unavailable).|2.5.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 _0xc131=['Sentiment','SentimentScore','Positive','Negative','Mixed','FailureReason','resolve','Transcript\x20not\x20available','Cloud\x20Provider\x20not\x20available','Cloud\x20Provider\x20not\x20configured','COMPLETED','catch','name','SequelizeValidationError','error','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','inspect','VoiceRecording','findAll','IN_PROGRESS','No\x20transcribe\x20job\x20to\x20check','Setting','Settings\x20not\x20available','Transcribe\x20not\x20configured','transcribeAccountId','forEach','push','all','start','aws-sdk','request-promise','bluebird','../../mysqldb','transcribe','TranscribeService','getTranscriptionJob','Comprehend','detectSentiment','substring','info','format','transcribeRegion','transcribeName','then','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJob','TranscriptionJobStatus','fileText','Transcript','TranscriptFileUri','[RECORDING:%d]\x20Get\x20transcript','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','update','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','tempSentiment','Sequelize','ValidationError','Sentiment\x20Analysis\x20not\x20requested','sentiment','sentimentAccountId','language','bucket','Sentiment\x20Analysis\x20not\x20configured','CloudProvider','findOne','data1','data2','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','sentimentRegion','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available'];(function(_0x36c55b,_0x3b6ee1){var _0x36e605=function(_0x234825){while(--_0x234825){_0x36c55b['push'](_0x36c55b['shift']());}};_0x36e605(++_0x3b6ee1);}(_0xc131,0x18a));var _0x1c13=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0xc131[_0x19950b];return _0x3c6b41;};var _=require('lodash');var AWS=require(_0x1c13('0x0'));var rp=require(_0x1c13('0x1'));var util=require('util');var BPromise=require(_0x1c13('0x2'));var db=require(_0x1c13('0x3'))['db'];var logger=require('../../config/logger')(_0x1c13('0x4'));function getTranscriptionJob(_0x11f4d4,_0x5a3bfb,_0x4a9f7f,_0x22facf){return new Promise(function(_0x2fea1f,_0x1b25c9){var _0x44679f=new AWS[(_0x1c13('0x5'))]({'accessKeyId':_0x5a3bfb,'secretAccessKey':_0x11f4d4,'region':_0x4a9f7f});_0x44679f[_0x1c13('0x6')]({'TranscriptionJobName':_0x22facf},function(_0x45815d,_0x5c508a){if(_0x45815d){return _0x1b25c9(_0x45815d);}else{return _0x2fea1f(_0x5c508a);}});});}function sentiment(_0x406045,_0x3ca892,_0xe742ee,_0x5b306e,_0x483f2e){return new Promise(function(_0x286143,_0x3374ef){var _0xd4e7e=new AWS[(_0x1c13('0x7'))]({'accessKeyId':_0x3ca892,'secretAccessKey':_0x406045,'region':_0xe742ee});_0xd4e7e[_0x1c13('0x8')]({'Text':_0x5b306e,'LanguageCode':_0x483f2e[_0x1c13('0x9')](0x0,0x2)},function(_0x23b7df,_0xf30283){if(_0x23b7df){return _0x3374ef(_0x23b7df);}else{return _0x286143(_0xf30283);}});});}function checkTranscribeJob(_0x13fd4c,_0xcf64ef,_0x1dbd57){var _0x1af8dc;return new BPromise(function(_0x23e240,_0x228a9b){logger[_0x1c13('0xa')](util[_0x1c13('0xb')]('[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)',_0x13fd4c['id'],_0x13fd4c['transcribeName']));return getTranscriptionJob(_0x1dbd57['data1'],_0x1dbd57['data2'],_0xcf64ef[_0x1c13('0xc')],_0x13fd4c[_0x1c13('0xd')])[_0x1c13('0xe')](function(_0x5d8f7b){logger[_0x1c13('0xa')](util['format'](_0x1c13('0xf'),_0x13fd4c['id'],_0x13fd4c[_0x1c13('0xd')],_0x5d8f7b[_0x1c13('0x10')][_0x1c13('0x11')]));if(!_0x13fd4c[_0x1c13('0x12')]){switch(_0x5d8f7b[_0x1c13('0x10')][_0x1c13('0x11')]){case'COMPLETED':var _0x29af3f={'transcribeStatus':_0x5d8f7b[_0x1c13('0x10')]['TranscriptionJobStatus'],'fileUri':_0x5d8f7b[_0x1c13('0x10')][_0x1c13('0x13')][_0x1c13('0x14')]};logger[_0x1c13('0xa')](util['format'](_0x1c13('0x15'),_0x13fd4c['id']));return rp({'uri':_0x5d8f7b[_0x1c13('0x10')][_0x1c13('0x13')][_0x1c13('0x14')],'json':!![]})['then'](function(_0x2e174c){logger[_0x1c13('0xa')](util[_0x1c13('0xb')](_0x1c13('0x16'),_0x13fd4c['id']));if(_0x2e174c&&_0x2e174c[_0x1c13('0x17')]&&_0x2e174c['results']['transcripts']&&_0x2e174c['results'][_0x1c13('0x18')][_0x1c13('0x19')]){_0x29af3f[_0x1c13('0x12')]='';for(var _0x16dd9b=0x0;_0x16dd9b<_0x2e174c[_0x1c13('0x17')][_0x1c13('0x18')][_0x1c13('0x19')];_0x16dd9b++){_0x29af3f[_0x1c13('0x12')]+=_0x2e174c[_0x1c13('0x17')]['transcripts'][_0x16dd9b]['transcript']+'';}}return _0x13fd4c[_0x1c13('0x1a')](_0x29af3f);})[_0x1c13('0xe')](function(){logger[_0x1c13('0xa')](util[_0x1c13('0xb')](_0x1c13('0x1b'),_0x13fd4c['id']));if(!_0x13fd4c[_0x1c13('0x1c')]){throw new db[(_0x1c13('0x1d'))][(_0x1c13('0x1e'))](_0x1c13('0x1f'));}if(!_0xcf64ef[_0x1c13('0x20')]||!_0xcf64ef[_0x1c13('0x21')]||!_0xcf64ef['sentimentRegion']||!_0xcf64ef[_0x1c13('0x22')]||!_0xcf64ef[_0x1c13('0x23')]){throw new db['Sequelize']['ValidationError'](_0x1c13('0x24'));}if(!_0x29af3f[_0x1c13('0x12')]){throw new Error('Transcript\x20not\x20available');}if(_0xcf64ef['sentimentAccountId']===_0x1dbd57['id']){return _0x1dbd57;}else{return db[_0x1c13('0x25')][_0x1c13('0x26')]({'where':{'id':_settings[_0x1c13('0x21')]}});}})['then'](function(_0x2583a4){if(!_0x2583a4){throw new db[(_0x1c13('0x1d'))][(_0x1c13('0x1e'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x2583a4[_0x1c13('0x27')]||!_0x2583a4[_0x1c13('0x28')]){throw new db[(_0x1c13('0x1d'))]['ValidationError']('Cloud\x20Provider\x20not\x20configured');}_0x1af8dc=_0x2583a4;logger[_0x1c13('0xa')](util[_0x1c13('0xb')](_0x1c13('0x29'),_0x13fd4c['id']));return sentiment(_0x1af8dc[_0x1c13('0x27')],_0x1af8dc['data2'],_0xcf64ef[_0x1c13('0x2a')],_0x29af3f[_0x1c13('0x12')],_0xcf64ef[_0x1c13('0x22')]);})[_0x1c13('0xe')](function(_0x25560b){logger[_0x1c13('0xa')](util['format'](_0x1c13('0x2b'),_0x13fd4c['id']));return _0x13fd4c[_0x1c13('0x1a')]({'sentiment':_0x25560b[_0x1c13('0x2c')],'sPositive':_0x25560b[_0x1c13('0x2d')][_0x1c13('0x2e')],'sNegative':_0x25560b[_0x1c13('0x2d')][_0x1c13('0x2f')],'sMixed':_0x25560b[_0x1c13('0x2d')][_0x1c13('0x30')],'sNeutral':_0x25560b[_0x1c13('0x2d')]['Neutral']});})[_0x1c13('0xe')](function(){logger[_0x1c13('0xa')](util[_0x1c13('0xb')](_0x1c13('0x1b'),_0x13fd4c['id']));_0x23e240();});case'FAILED':return _0x13fd4c[_0x1c13('0x1a')]({'transcribeStatus':'FAILED','failureReason':_0x5d8f7b[_0x1c13('0x10')][_0x1c13('0x31')]})[_0x1c13('0xe')](function(){logger[_0x1c13('0xa')](util[_0x1c13('0xb')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x13fd4c['id']));_0x23e240();});default:logger[_0x1c13('0xa')](util[_0x1c13('0xb')]('[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed',_0x13fd4c['id']));break;}}else{return BPromise[_0x1c13('0x32')]()[_0x1c13('0xe')](function(){if(!_0x13fd4c[_0x1c13('0x1c')]){throw new db[(_0x1c13('0x1d'))][(_0x1c13('0x1e'))](_0x1c13('0x1f'));}if(!_0xcf64ef[_0x1c13('0x20')]||!_0xcf64ef[_0x1c13('0x21')]||!_0xcf64ef[_0x1c13('0x2a')]||!_0xcf64ef[_0x1c13('0x22')]||!_0xcf64ef[_0x1c13('0x23')]){throw new db['Sequelize']['ValidationError']('Sentiment\x20Analysis\x20not\x20configured');}if(!_0x13fd4c[_0x1c13('0x12')]){throw new Error(_0x1c13('0x33'));}if(_0xcf64ef[_0x1c13('0x21')]===_0x1dbd57['id']){return _0x1dbd57;}else{return db['CloudProvider'][_0x1c13('0x26')]({'where':{'id':_settings[_0x1c13('0x21')]}});}})[_0x1c13('0xe')](function(_0x54288c){if(!_0x54288c){throw new db[(_0x1c13('0x1d'))][(_0x1c13('0x1e'))](_0x1c13('0x34'));}if(!_0x54288c[_0x1c13('0x27')]||!_0x54288c[_0x1c13('0x28')]){throw new db['Sequelize'][(_0x1c13('0x1e'))](_0x1c13('0x35'));}_0x1af8dc=_0x54288c;logger[_0x1c13('0xa')](util[_0x1c13('0xb')](_0x1c13('0x29'),_0x13fd4c['id']));return sentiment(_0x1af8dc['data1'],_0x1af8dc[_0x1c13('0x28')],_0xcf64ef[_0x1c13('0x2a')],_0x13fd4c[_0x1c13('0x12')],_0xcf64ef[_0x1c13('0x22')]);})[_0x1c13('0xe')](function(_0x2232b4){logger['info'](util[_0x1c13('0xb')](_0x1c13('0x2b'),_0x13fd4c['id']));return _0x13fd4c[_0x1c13('0x1a')]({'sentiment':_0x2232b4[_0x1c13('0x2c')],'sPositive':_0x2232b4[_0x1c13('0x2d')][_0x1c13('0x2e')],'sNegative':_0x2232b4['SentimentScore']['Negative'],'sMixed':_0x2232b4['SentimentScore'][_0x1c13('0x30')],'sNeutral':_0x2232b4['SentimentScore']['Neutral'],'transcribeStatus':_0x1c13('0x36')});})['then'](function(){logger[_0x1c13('0xa')](util[_0x1c13('0xb')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x13fd4c['id']));_0x23e240();});}})[_0x1c13('0x37')](function(_0x35c2a3){if(_0x35c2a3){if(!_0x35c2a3['name']||_0x35c2a3[_0x1c13('0x38')]!==_0x1c13('0x39')){logger[_0x1c13('0x3a')](util[_0x1c13('0xb')](_0x1c13('0x3b'),_0x13fd4c['id']),util[_0x1c13('0x3c')](_0x35c2a3,{'showHidden':![],'depth':null}));}}_0x23e240();});});}function checkTranscribe(){var _0x1e0bc1;var _0x32eba7;var _0x1a667a;return db[_0x1c13('0x3d')][_0x1c13('0x3e')]({'where':{'transcribeStatus':_0x1c13('0x3f')}})['then'](function(_0x29df95){if(!_0x29df95||!_0x29df95[_0x1c13('0x19')]){throw new db['Sequelize'][(_0x1c13('0x1e'))](_0x1c13('0x40'));}_0x1e0bc1=_0x29df95;return db[_0x1c13('0x41')]['findOne']({'where':{'id':0x1}});})[_0x1c13('0xe')](function(_0x496f70){if(!_0x496f70){throw new db[(_0x1c13('0x1d'))][(_0x1c13('0x1e'))](_0x1c13('0x42'));}_0x32eba7=_0x496f70;if(!_0x32eba7['transcribe']||!_0x32eba7['transcribeAccountId']||!_0x32eba7[_0x1c13('0xc')]||!_0x32eba7[_0x1c13('0x22')]||!_0x32eba7[_0x1c13('0x23')]){throw new db[(_0x1c13('0x1d'))][(_0x1c13('0x1e'))](_0x1c13('0x43'));}return db[_0x1c13('0x25')][_0x1c13('0x26')]({'where':{'id':_0x32eba7[_0x1c13('0x44')]}});})[_0x1c13('0xe')](function(_0x1f36db){if(!_0x1f36db){throw new db[(_0x1c13('0x1d'))]['ValidationError'](_0x1c13('0x34'));}if(!_0x1f36db[_0x1c13('0x27')]||!_0x1f36db['data2']){throw new db['Sequelize'][(_0x1c13('0x1e'))](_0x1c13('0x35'));}_0x1a667a=_0x1f36db;var _0x3e6179=[];_0x1e0bc1[_0x1c13('0x45')](function(_0x3e4efe){_0x3e6179[_0x1c13('0x46')](checkTranscribeJob(_0x3e4efe,_0x32eba7,_0x1a667a));});return BPromise[_0x1c13('0x47')](_0x3e6179);})[_0x1c13('0x37')](function(_0x3dc50e){if(_0x3dc50e){if(!_0x3dc50e['name']||_0x3dc50e['name']!==_0x1c13('0x39')){logger[_0x1c13('0x3a')](util[_0x1c13('0x3c')](_0x3dc50e,{'showHidden':![],'depth':null}));}}});}exports[_0x1c13('0x48')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};