Built motion from commit (unavailable).|2.5.7
[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 _0xe021=['Positive','Negative','Mixed','Neutral','FAILED','FailureReason','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','tempSentiment','Sentiment','catch','name','SequelizeValidationError','error','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','inspect','findAll','IN_PROGRESS','No\x20transcribe\x20job\x20to\x20check','Setting','findOne','Settings\x20not\x20available','transcribeAccountId','Transcribe\x20not\x20configured','forEach','push','all','start','aws-sdk','request-promise','util','transcribe','getTranscriptionJob','Comprehend','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeName','data1','transcribeRegion','then','info','format','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJob','TranscriptionJobStatus','Transcript','TranscriptFileUri','[RECORDING:%d]\x20Get\x20transcript','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','fileText','transcript','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','Sequelize','ValidationError','Sentiment\x20Analysis\x20not\x20requested','sentiment','language','bucket','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available','CloudProvider','sentimentAccountId','Cloud\x20Provider\x20not\x20available','data2','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','sentimentRegion','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','update','SentimentScore'];(function(_0x36eaaa,_0x326732){var _0x461349=function(_0x4e4180){while(--_0x4e4180){_0x36eaaa['push'](_0x36eaaa['shift']());}};_0x461349(++_0x326732);}(_0xe021,0xf1));var _0x1e02=function(_0x24ae38,_0x2a9aa3){_0x24ae38=_0x24ae38-0x0;var _0x16d906=_0xe021[_0x24ae38];return _0x16d906;};var _=require('lodash');var AWS=require(_0x1e02('0x0'));var rp=require(_0x1e02('0x1'));var util=require(_0x1e02('0x2'));var BPromise=require('bluebird');var db=require('../../mysqldb')['db'];var logger=require('../../config/logger')(_0x1e02('0x3'));function getTranscriptionJob(_0x2d5d49,_0x49abc1,_0x5f2b96,_0x43eedd){return new Promise(function(_0x27b735,_0x42e3ef){var _0x222a33=new AWS['TranscribeService']({'accessKeyId':_0x49abc1,'secretAccessKey':_0x2d5d49,'region':_0x5f2b96});_0x222a33[_0x1e02('0x4')]({'TranscriptionJobName':_0x43eedd},function(_0x8725e7,_0xbdaf95){if(_0x8725e7){return _0x42e3ef(_0x8725e7);}else{return _0x27b735(_0xbdaf95);}});});}function sentiment(_0x39adf7,_0x3a6486,_0x19cd58,_0x31b747,_0x19a47d){return new Promise(function(_0x57f1f5,_0x4d4dcc){var _0x475c41=new AWS[(_0x1e02('0x5'))]({'accessKeyId':_0x3a6486,'secretAccessKey':_0x39adf7,'region':_0x19cd58});_0x475c41['detectSentiment']({'Text':_0x31b747,'LanguageCode':_0x19a47d['substring'](0x0,0x2)},function(_0x12b438,_0x156c71){if(_0x12b438){return _0x4d4dcc(_0x12b438);}else{return _0x57f1f5(_0x156c71);}});});}function checkTranscribeJob(_0x558171,_0x16b652,_0x2890e3){var _0x78e7bd;return new BPromise(function(_0xe4a8c9,_0x2a2296){logger['info'](util['format'](_0x1e02('0x6'),_0x558171['id'],_0x558171[_0x1e02('0x7')]));return getTranscriptionJob(_0x2890e3[_0x1e02('0x8')],_0x2890e3['data2'],_0x16b652[_0x1e02('0x9')],_0x558171['transcribeName'])[_0x1e02('0xa')](function(_0x595224){logger[_0x1e02('0xb')](util[_0x1e02('0xc')](_0x1e02('0xd'),_0x558171['id'],_0x558171[_0x1e02('0x7')],_0x595224[_0x1e02('0xe')][_0x1e02('0xf')]));if(!_0x558171['fileText']){switch(_0x595224[_0x1e02('0xe')]['TranscriptionJobStatus']){case'COMPLETED':var _0x5d5dbe={'transcribeStatus':_0x595224['TranscriptionJob'][_0x1e02('0xf')],'fileUri':_0x595224['TranscriptionJob'][_0x1e02('0x10')][_0x1e02('0x11')]};logger[_0x1e02('0xb')](util['format'](_0x1e02('0x12'),_0x558171['id']));return rp({'uri':_0x595224[_0x1e02('0xe')]['Transcript'][_0x1e02('0x11')],'json':!![]})[_0x1e02('0xa')](function(_0x232898){logger[_0x1e02('0xb')](util[_0x1e02('0xc')](_0x1e02('0x13'),_0x558171['id']));if(_0x232898&&_0x232898[_0x1e02('0x14')]&&_0x232898[_0x1e02('0x14')][_0x1e02('0x15')]&&_0x232898[_0x1e02('0x14')][_0x1e02('0x15')][_0x1e02('0x16')]){_0x5d5dbe[_0x1e02('0x17')]='';for(var _0x4848ea=0x0;_0x4848ea<_0x232898[_0x1e02('0x14')][_0x1e02('0x15')][_0x1e02('0x16')];_0x4848ea++){_0x5d5dbe[_0x1e02('0x17')]+=_0x232898['results']['transcripts'][_0x4848ea][_0x1e02('0x18')]+'';}}return _0x558171['update'](_0x5d5dbe);})[_0x1e02('0xa')](function(){logger[_0x1e02('0xb')](util[_0x1e02('0xc')](_0x1e02('0x19'),_0x558171['id']));if(!_0x558171['tempSentiment']){throw new db[(_0x1e02('0x1a'))][(_0x1e02('0x1b'))](_0x1e02('0x1c'));}if(!_0x16b652[_0x1e02('0x1d')]||!_0x16b652['sentimentAccountId']||!_0x16b652['sentimentRegion']||!_0x16b652[_0x1e02('0x1e')]||!_0x16b652[_0x1e02('0x1f')]){throw new db[(_0x1e02('0x1a'))][(_0x1e02('0x1b'))](_0x1e02('0x20'));}if(!_0x5d5dbe['fileText']){throw new Error(_0x1e02('0x21'));}if(_0x16b652['sentimentAccountId']===_0x2890e3['id']){return _0x2890e3;}else{return db[_0x1e02('0x22')]['findOne']({'where':{'id':_settings[_0x1e02('0x23')]}});}})[_0x1e02('0xa')](function(_0x2a368d){if(!_0x2a368d){throw new db[(_0x1e02('0x1a'))]['ValidationError'](_0x1e02('0x24'));}if(!_0x2a368d[_0x1e02('0x8')]||!_0x2a368d[_0x1e02('0x25')]){throw new db[(_0x1e02('0x1a'))][(_0x1e02('0x1b'))]('Cloud\x20Provider\x20not\x20configured');}_0x78e7bd=_0x2a368d;logger[_0x1e02('0xb')](util[_0x1e02('0xc')](_0x1e02('0x26'),_0x558171['id']));return sentiment(_0x78e7bd[_0x1e02('0x8')],_0x78e7bd[_0x1e02('0x25')],_0x16b652[_0x1e02('0x27')],_0x5d5dbe[_0x1e02('0x17')],_0x16b652[_0x1e02('0x1e')]);})[_0x1e02('0xa')](function(_0x138acf){logger[_0x1e02('0xb')](util[_0x1e02('0xc')](_0x1e02('0x28'),_0x558171['id']));return _0x558171[_0x1e02('0x29')]({'sentiment':_0x138acf['Sentiment'],'sPositive':_0x138acf[_0x1e02('0x2a')][_0x1e02('0x2b')],'sNegative':_0x138acf[_0x1e02('0x2a')][_0x1e02('0x2c')],'sMixed':_0x138acf['SentimentScore'][_0x1e02('0x2d')],'sNeutral':_0x138acf['SentimentScore'][_0x1e02('0x2e')]});})[_0x1e02('0xa')](function(){logger[_0x1e02('0xb')](util['format'](_0x1e02('0x19'),_0x558171['id']));_0xe4a8c9();});case _0x1e02('0x2f'):return _0x558171[_0x1e02('0x29')]({'transcribeStatus':_0x1e02('0x2f'),'failureReason':_0x595224[_0x1e02('0xe')][_0x1e02('0x30')]})[_0x1e02('0xa')](function(){logger[_0x1e02('0xb')](util['format'](_0x1e02('0x19'),_0x558171['id']));_0xe4a8c9();});default:logger['info'](util[_0x1e02('0xc')](_0x1e02('0x31'),_0x558171['id']));break;}}else{return BPromise[_0x1e02('0x32')]()[_0x1e02('0xa')](function(){if(!_0x558171[_0x1e02('0x33')]){throw new db[(_0x1e02('0x1a'))][(_0x1e02('0x1b'))]('Sentiment\x20Analysis\x20not\x20requested');}if(!_0x16b652['sentiment']||!_0x16b652[_0x1e02('0x23')]||!_0x16b652[_0x1e02('0x27')]||!_0x16b652[_0x1e02('0x1e')]||!_0x16b652[_0x1e02('0x1f')]){throw new db['Sequelize']['ValidationError'](_0x1e02('0x20'));}if(!_0x558171[_0x1e02('0x17')]){throw new Error(_0x1e02('0x21'));}if(_0x16b652['sentimentAccountId']===_0x2890e3['id']){return _0x2890e3;}else{return db[_0x1e02('0x22')]['findOne']({'where':{'id':_settings['sentimentAccountId']}});}})[_0x1e02('0xa')](function(_0x22bdba){if(!_0x22bdba){throw new db[(_0x1e02('0x1a'))][(_0x1e02('0x1b'))](_0x1e02('0x24'));}if(!_0x22bdba['data1']||!_0x22bdba['data2']){throw new db[(_0x1e02('0x1a'))][(_0x1e02('0x1b'))]('Cloud\x20Provider\x20not\x20configured');}_0x78e7bd=_0x22bdba;logger[_0x1e02('0xb')](util[_0x1e02('0xc')](_0x1e02('0x26'),_0x558171['id']));return sentiment(_0x78e7bd[_0x1e02('0x8')],_0x78e7bd['data2'],_0x16b652[_0x1e02('0x27')],_0x558171[_0x1e02('0x17')],_0x16b652['language']);})[_0x1e02('0xa')](function(_0x27f1f9){logger[_0x1e02('0xb')](util[_0x1e02('0xc')](_0x1e02('0x28'),_0x558171['id']));return _0x558171['update']({'sentiment':_0x27f1f9[_0x1e02('0x34')],'sPositive':_0x27f1f9[_0x1e02('0x2a')][_0x1e02('0x2b')],'sNegative':_0x27f1f9[_0x1e02('0x2a')][_0x1e02('0x2c')],'sMixed':_0x27f1f9['SentimentScore'][_0x1e02('0x2d')],'sNeutral':_0x27f1f9['SentimentScore'][_0x1e02('0x2e')],'transcribeStatus':'COMPLETED'});})[_0x1e02('0xa')](function(){logger[_0x1e02('0xb')](util['format'](_0x1e02('0x19'),_0x558171['id']));_0xe4a8c9();});}})[_0x1e02('0x35')](function(_0x47330b){if(_0x47330b){if(!_0x47330b[_0x1e02('0x36')]||_0x47330b[_0x1e02('0x36')]!==_0x1e02('0x37')){logger[_0x1e02('0x38')](util[_0x1e02('0xc')](_0x1e02('0x39'),_0x558171['id']),util[_0x1e02('0x3a')](_0x47330b,{'showHidden':![],'depth':null}));}}_0xe4a8c9();});});}function checkTranscribe(){var _0x4d5ce5;var _0x27082b;var _0x202cb9;return db['VoiceRecording'][_0x1e02('0x3b')]({'where':{'transcribeStatus':_0x1e02('0x3c')}})[_0x1e02('0xa')](function(_0x1933f7){if(!_0x1933f7||!_0x1933f7['length']){throw new db['Sequelize'][(_0x1e02('0x1b'))](_0x1e02('0x3d'));}_0x4d5ce5=_0x1933f7;return db[_0x1e02('0x3e')][_0x1e02('0x3f')]({'where':{'id':0x1}});})[_0x1e02('0xa')](function(_0x3d84f0){if(!_0x3d84f0){throw new db[(_0x1e02('0x1a'))][(_0x1e02('0x1b'))](_0x1e02('0x40'));}_0x27082b=_0x3d84f0;if(!_0x27082b['transcribe']||!_0x27082b[_0x1e02('0x41')]||!_0x27082b[_0x1e02('0x9')]||!_0x27082b['language']||!_0x27082b[_0x1e02('0x1f')]){throw new db[(_0x1e02('0x1a'))][(_0x1e02('0x1b'))](_0x1e02('0x42'));}return db[_0x1e02('0x22')][_0x1e02('0x3f')]({'where':{'id':_0x27082b['transcribeAccountId']}});})[_0x1e02('0xa')](function(_0x3ac4f1){if(!_0x3ac4f1){throw new db[(_0x1e02('0x1a'))][(_0x1e02('0x1b'))](_0x1e02('0x24'));}if(!_0x3ac4f1[_0x1e02('0x8')]||!_0x3ac4f1[_0x1e02('0x25')]){throw new db[(_0x1e02('0x1a'))]['ValidationError']('Cloud\x20Provider\x20not\x20configured');}_0x202cb9=_0x3ac4f1;var _0x4a5873=[];_0x4d5ce5[_0x1e02('0x43')](function(_0x170af1){_0x4a5873[_0x1e02('0x44')](checkTranscribeJob(_0x170af1,_0x27082b,_0x202cb9));});return BPromise[_0x1e02('0x45')](_0x4a5873);})[_0x1e02('0x35')](function(_0x5e45ba){if(_0x5e45ba){if(!_0x5e45ba['name']||_0x5e45ba[_0x1e02('0x36')]!==_0x1e02('0x37')){logger[_0x1e02('0x38')](util[_0x1e02('0x3a')](_0x5e45ba,{'showHidden':![],'depth':null}));}}});}exports[_0x1e02('0x46')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};