Built motion from commit a61a4a20.|2.5.46
[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 _0x7834=['SentimentScore','Mixed','FAILED','FailureReason','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','Sentiment\x20Analysis\x20not\x20requested','Sentiment\x20Analysis\x20not\x20configured','sentimentAccountId','Negative','Neutral','catch','SequelizeValidationError','error','inspect','VoiceRecording','IN_PROGRESS','No\x20transcribe\x20job\x20to\x20check','Settings\x20not\x20available','transcribeAccountId','Transcribe\x20not\x20configured','forEach','push','all','name','start','lodash','util','../../mysqldb','../../config/logger','transcribe','getTranscriptionJob','Comprehend','detectSentiment','substring','info','format','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeName','data2','transcribeRegion','then','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJob','TranscriptionJobStatus','fileText','COMPLETED','Transcript','TranscriptFileUri','[RECORDING:%d]\x20Get\x20transcript','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','transcript','update','sentiment','sentimentRegion','language','bucket','Sequelize','ValidationError','Transcript\x20not\x20available','CloudProvider','findOne','Cloud\x20Provider\x20not\x20available','data1','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Sentiment','Positive'];(function(_0xe7a6ad,_0x45203f){var _0x3e14de=function(_0x320590){while(--_0x320590){_0xe7a6ad['push'](_0xe7a6ad['shift']());}};_0x3e14de(++_0x45203f);}(_0x7834,0x13f));var _0x4783=function(_0x41f6d4,_0x255693){_0x41f6d4=_0x41f6d4-0x0;var _0x42a2a9=_0x7834[_0x41f6d4];return _0x42a2a9;};var _=require(_0x4783('0x0'));var AWS=require('aws-sdk');var rp=require('request-promise');var util=require(_0x4783('0x1'));var BPromise=require('bluebird');var db=require(_0x4783('0x2'))['db'];var logger=require(_0x4783('0x3'))(_0x4783('0x4'));function getTranscriptionJob(_0x2ebef6,_0x29566c,_0x3ebf06,_0x4150f2){return new Promise(function(_0x49114c,_0x1cb674){var _0xf8c030=new AWS['TranscribeService']({'accessKeyId':_0x29566c,'secretAccessKey':_0x2ebef6,'region':_0x3ebf06});_0xf8c030[_0x4783('0x5')]({'TranscriptionJobName':_0x4150f2},function(_0x16c83e,_0x36c0a7){if(_0x16c83e){return _0x1cb674(_0x16c83e);}else{return _0x49114c(_0x36c0a7);}});});}function sentiment(_0x112a19,_0xc8b2d7,_0x1f8b29,_0x5caa81,_0xf75e9e){return new Promise(function(_0x2e2f83,_0x2da940){var _0x1e558e=new AWS[(_0x4783('0x6'))]({'accessKeyId':_0xc8b2d7,'secretAccessKey':_0x112a19,'region':_0x1f8b29});_0x1e558e[_0x4783('0x7')]({'Text':_0x5caa81,'LanguageCode':_0xf75e9e[_0x4783('0x8')](0x0,0x2)},function(_0x5b8428,_0x4ef2c7){if(_0x5b8428){return _0x2da940(_0x5b8428);}else{return _0x2e2f83(_0x4ef2c7);}});});}function checkTranscribeJob(_0x1a40c0,_0x85087d,_0x4ce944){var _0x2afbdc;return new BPromise(function(_0x5c7d51,_0x3ac2b1){logger[_0x4783('0x9')](util[_0x4783('0xa')](_0x4783('0xb'),_0x1a40c0['id'],_0x1a40c0[_0x4783('0xc')]));return getTranscriptionJob(_0x4ce944['data1'],_0x4ce944[_0x4783('0xd')],_0x85087d[_0x4783('0xe')],_0x1a40c0[_0x4783('0xc')])[_0x4783('0xf')](function(_0x3cb485){logger[_0x4783('0x9')](util[_0x4783('0xa')](_0x4783('0x10'),_0x1a40c0['id'],_0x1a40c0[_0x4783('0xc')],_0x3cb485[_0x4783('0x11')][_0x4783('0x12')]));if(!_0x1a40c0[_0x4783('0x13')]){switch(_0x3cb485['TranscriptionJob'][_0x4783('0x12')]){case _0x4783('0x14'):var _0x58fbae={'transcribeStatus':_0x3cb485[_0x4783('0x11')]['TranscriptionJobStatus'],'fileUri':_0x3cb485[_0x4783('0x11')][_0x4783('0x15')][_0x4783('0x16')]};logger[_0x4783('0x9')](util[_0x4783('0xa')](_0x4783('0x17'),_0x1a40c0['id']));return rp({'uri':_0x3cb485[_0x4783('0x11')]['Transcript'][_0x4783('0x16')],'json':!![]})['then'](function(_0x429801){logger[_0x4783('0x9')](util[_0x4783('0xa')](_0x4783('0x18'),_0x1a40c0['id']));if(_0x429801&&_0x429801[_0x4783('0x19')]&&_0x429801['results'][_0x4783('0x1a')]&&_0x429801[_0x4783('0x19')][_0x4783('0x1a')][_0x4783('0x1b')]){_0x58fbae[_0x4783('0x13')]='';for(var _0x1c7ebf=0x0;_0x1c7ebf<_0x429801[_0x4783('0x19')]['transcripts'][_0x4783('0x1b')];_0x1c7ebf++){_0x58fbae[_0x4783('0x13')]+=_0x429801['results']['transcripts'][_0x1c7ebf][_0x4783('0x1c')]+'';}}return _0x1a40c0[_0x4783('0x1d')](_0x58fbae);})['then'](function(){logger[_0x4783('0x9')](util['format']('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x1a40c0['id']));if(!_0x1a40c0['tempSentiment']){throw new db['Sequelize']['ValidationError']('Sentiment\x20Analysis\x20not\x20requested');}if(!_0x85087d[_0x4783('0x1e')]||!_0x85087d['sentimentAccountId']||!_0x85087d[_0x4783('0x1f')]||!_0x85087d[_0x4783('0x20')]||!_0x85087d[_0x4783('0x21')]){throw new db[(_0x4783('0x22'))][(_0x4783('0x23'))]('Sentiment\x20Analysis\x20not\x20configured');}if(!_0x58fbae[_0x4783('0x13')]){throw new Error(_0x4783('0x24'));}if(_0x85087d['sentimentAccountId']===_0x4ce944['id']){return _0x4ce944;}else{return db[_0x4783('0x25')][_0x4783('0x26')]({'where':{'id':_settings['sentimentAccountId']}});}})[_0x4783('0xf')](function(_0x4f67b7){if(!_0x4f67b7){throw new db[(_0x4783('0x22'))]['ValidationError'](_0x4783('0x27'));}if(!_0x4f67b7[_0x4783('0x28')]||!_0x4f67b7['data2']){throw new db[(_0x4783('0x22'))][(_0x4783('0x23'))](_0x4783('0x29'));}_0x2afbdc=_0x4f67b7;logger[_0x4783('0x9')](util['format'](_0x4783('0x2a'),_0x1a40c0['id']));return sentiment(_0x2afbdc[_0x4783('0x28')],_0x2afbdc[_0x4783('0xd')],_0x85087d[_0x4783('0x1f')],_0x58fbae['fileText'],_0x85087d[_0x4783('0x20')]);})[_0x4783('0xf')](function(_0x47a19f){logger[_0x4783('0x9')](util[_0x4783('0xa')](_0x4783('0x2b'),_0x1a40c0['id']));return _0x1a40c0[_0x4783('0x1d')]({'sentiment':_0x47a19f[_0x4783('0x2c')],'sPositive':_0x47a19f['SentimentScore'][_0x4783('0x2d')],'sNegative':_0x47a19f['SentimentScore']['Negative'],'sMixed':_0x47a19f[_0x4783('0x2e')][_0x4783('0x2f')],'sNeutral':_0x47a19f[_0x4783('0x2e')]['Neutral']});})[_0x4783('0xf')](function(){logger['info'](util[_0x4783('0xa')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x1a40c0['id']));_0x5c7d51();});case _0x4783('0x30'):return _0x1a40c0[_0x4783('0x1d')]({'transcribeStatus':_0x4783('0x30'),'failureReason':_0x3cb485['TranscriptionJob'][_0x4783('0x31')]})['then'](function(){logger[_0x4783('0x9')](util[_0x4783('0xa')](_0x4783('0x32'),_0x1a40c0['id']));_0x5c7d51();});default:logger[_0x4783('0x9')](util['format'](_0x4783('0x33'),_0x1a40c0['id']));break;}}else{return BPromise[_0x4783('0x34')]()[_0x4783('0xf')](function(){if(!_0x1a40c0['tempSentiment']){throw new db[(_0x4783('0x22'))][(_0x4783('0x23'))](_0x4783('0x35'));}if(!_0x85087d['sentiment']||!_0x85087d['sentimentAccountId']||!_0x85087d[_0x4783('0x1f')]||!_0x85087d[_0x4783('0x20')]||!_0x85087d[_0x4783('0x21')]){throw new db[(_0x4783('0x22'))][(_0x4783('0x23'))](_0x4783('0x36'));}if(!_0x1a40c0[_0x4783('0x13')]){throw new Error(_0x4783('0x24'));}if(_0x85087d[_0x4783('0x37')]===_0x4ce944['id']){return _0x4ce944;}else{return db['CloudProvider']['findOne']({'where':{'id':_settings[_0x4783('0x37')]}});}})['then'](function(_0xc577a9){if(!_0xc577a9){throw new db[(_0x4783('0x22'))][(_0x4783('0x23'))](_0x4783('0x27'));}if(!_0xc577a9['data1']||!_0xc577a9[_0x4783('0xd')]){throw new db[(_0x4783('0x22'))][(_0x4783('0x23'))]('Cloud\x20Provider\x20not\x20configured');}_0x2afbdc=_0xc577a9;logger['info'](util[_0x4783('0xa')](_0x4783('0x2a'),_0x1a40c0['id']));return sentiment(_0x2afbdc['data1'],_0x2afbdc[_0x4783('0xd')],_0x85087d['sentimentRegion'],_0x1a40c0[_0x4783('0x13')],_0x85087d[_0x4783('0x20')]);})[_0x4783('0xf')](function(_0x767fc8){logger[_0x4783('0x9')](util[_0x4783('0xa')](_0x4783('0x2b'),_0x1a40c0['id']));return _0x1a40c0[_0x4783('0x1d')]({'sentiment':_0x767fc8['Sentiment'],'sPositive':_0x767fc8['SentimentScore'][_0x4783('0x2d')],'sNegative':_0x767fc8['SentimentScore'][_0x4783('0x38')],'sMixed':_0x767fc8[_0x4783('0x2e')][_0x4783('0x2f')],'sNeutral':_0x767fc8[_0x4783('0x2e')][_0x4783('0x39')],'transcribeStatus':_0x4783('0x14')});})[_0x4783('0xf')](function(){logger[_0x4783('0x9')](util[_0x4783('0xa')](_0x4783('0x32'),_0x1a40c0['id']));_0x5c7d51();});}})[_0x4783('0x3a')](function(_0x1ed57b){if(_0x1ed57b){if(!_0x1ed57b['name']||_0x1ed57b['name']!==_0x4783('0x3b')){logger[_0x4783('0x3c')](util['format']('[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis',_0x1a40c0['id']),util[_0x4783('0x3d')](_0x1ed57b,{'showHidden':![],'depth':null}));}}_0x5c7d51();});});}function checkTranscribe(){var _0x6ee3cf;var _0x4bf93c;var _0x5b248f;return db[_0x4783('0x3e')]['findAll']({'where':{'transcribeStatus':_0x4783('0x3f')}})[_0x4783('0xf')](function(_0x5692dc){if(!_0x5692dc||!_0x5692dc['length']){throw new db['Sequelize'][(_0x4783('0x23'))](_0x4783('0x40'));}_0x6ee3cf=_0x5692dc;return db['Setting'][_0x4783('0x26')]({'where':{'id':0x1}});})[_0x4783('0xf')](function(_0x51a14f){if(!_0x51a14f){throw new db[(_0x4783('0x22'))]['ValidationError'](_0x4783('0x41'));}_0x4bf93c=_0x51a14f;if(!_0x4bf93c['transcribe']||!_0x4bf93c[_0x4783('0x42')]||!_0x4bf93c['transcribeRegion']||!_0x4bf93c[_0x4783('0x20')]||!_0x4bf93c['bucket']){throw new db['Sequelize']['ValidationError'](_0x4783('0x43'));}return db['CloudProvider'][_0x4783('0x26')]({'where':{'id':_0x4bf93c[_0x4783('0x42')]}});})[_0x4783('0xf')](function(_0xac3410){if(!_0xac3410){throw new db[(_0x4783('0x22'))][(_0x4783('0x23'))]('Cloud\x20Provider\x20not\x20available');}if(!_0xac3410['data1']||!_0xac3410[_0x4783('0xd')]){throw new db[(_0x4783('0x22'))][(_0x4783('0x23'))](_0x4783('0x29'));}_0x5b248f=_0xac3410;var _0x4f2bc3=[];_0x6ee3cf[_0x4783('0x44')](function(_0x3b3414){_0x4f2bc3[_0x4783('0x45')](checkTranscribeJob(_0x3b3414,_0x4bf93c,_0x5b248f));});return BPromise[_0x4783('0x46')](_0x4f2bc3);})[_0x4783('0x3a')](function(_0x3e78fb){if(_0x3e78fb){if(!_0x3e78fb[_0x4783('0x47')]||_0x3e78fb['name']!=='SequelizeValidationError'){logger[_0x4783('0x3c')](util[_0x4783('0x3d')](_0x3e78fb,{'showHidden':![],'depth':null}));}}});}exports[_0x4783('0x48')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};