31526fcc5fa58ff30cde614bc9738020ebc61cad
[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 _0x4dd2=['ValidationError','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Sentiment','SentimentScore','Negative','Mixed','Neutral','FAILED','FailureReason','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','Sentiment\x20Analysis\x20not\x20requested','sentiment','findOne','COMPLETED','catch','name','SequelizeValidationError','error','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','inspect','findAll','IN_PROGRESS','No\x20transcribe\x20job\x20to\x20check','Setting','transcribeRegion','transcribeAccountId','forEach','push','all','aws-sdk','request-promise','util','../../mysqldb','transcribe','TranscribeService','getTranscriptionJob','Comprehend','detectSentiment','substring','info','transcribeName','data1','data2','format','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJob','TranscriptionJobStatus','Transcript','TranscriptFileUri','[RECORDING:%d]\x20Get\x20transcript','then','results','transcripts','length','fileText','transcript','update','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','tempSentiment','Sequelize','sentimentAccountId','sentimentRegion','language','bucket','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available','CloudProvider','Cloud\x20Provider\x20not\x20available'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x4dd2,0xf1));var _0x24dd=function(_0xf44d98,_0x12a472){_0xf44d98=_0xf44d98-0x0;var _0x5ebb04=_0x4dd2[_0xf44d98];return _0x5ebb04;};var _=require('lodash');var AWS=require(_0x24dd('0x0'));var rp=require(_0x24dd('0x1'));var util=require(_0x24dd('0x2'));var BPromise=require('bluebird');var db=require(_0x24dd('0x3'))['db'];var logger=require('../../config/logger')(_0x24dd('0x4'));function getTranscriptionJob(_0x5c5b1e,_0x168fb0,_0x2cbda5,_0x317135){return new Promise(function(_0x5d3f24,_0x524c5b){var _0x21b5b4=new AWS[(_0x24dd('0x5'))]({'accessKeyId':_0x168fb0,'secretAccessKey':_0x5c5b1e,'region':_0x2cbda5});_0x21b5b4[_0x24dd('0x6')]({'TranscriptionJobName':_0x317135},function(_0x424e48,_0x312f04){if(_0x424e48){return _0x524c5b(_0x424e48);}else{return _0x5d3f24(_0x312f04);}});});}function sentiment(_0x51cb64,_0x43f2e0,_0x107a09,_0x3105a1,_0x209572){return new Promise(function(_0x326a89,_0x5c42bb){var _0x106aa0=new AWS[(_0x24dd('0x7'))]({'accessKeyId':_0x43f2e0,'secretAccessKey':_0x51cb64,'region':_0x107a09});_0x106aa0[_0x24dd('0x8')]({'Text':_0x3105a1,'LanguageCode':_0x209572[_0x24dd('0x9')](0x0,0x2)},function(_0xb8065a,_0x1468d2){if(_0xb8065a){return _0x5c42bb(_0xb8065a);}else{return _0x326a89(_0x1468d2);}});});}function checkTranscribeJob(_0x3fce8b,_0x167581,_0x4d8c55){var _0x46b06c;return new BPromise(function(_0x4f6f77,_0x317fe8){logger[_0x24dd('0xa')](util['format']('[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)',_0x3fce8b['id'],_0x3fce8b[_0x24dd('0xb')]));return getTranscriptionJob(_0x4d8c55[_0x24dd('0xc')],_0x4d8c55[_0x24dd('0xd')],_0x167581['transcribeRegion'],_0x3fce8b[_0x24dd('0xb')])['then'](function(_0x397e7e){logger[_0x24dd('0xa')](util[_0x24dd('0xe')](_0x24dd('0xf'),_0x3fce8b['id'],_0x3fce8b['transcribeName'],_0x397e7e[_0x24dd('0x10')][_0x24dd('0x11')]));if(!_0x3fce8b['fileText']){switch(_0x397e7e['TranscriptionJob'][_0x24dd('0x11')]){case'COMPLETED':var _0x3debf8={'transcribeStatus':_0x397e7e[_0x24dd('0x10')][_0x24dd('0x11')],'fileUri':_0x397e7e[_0x24dd('0x10')][_0x24dd('0x12')][_0x24dd('0x13')]};logger['info'](util['format'](_0x24dd('0x14'),_0x3fce8b['id']));return rp({'uri':_0x397e7e[_0x24dd('0x10')]['Transcript']['TranscriptFileUri'],'json':!![]})[_0x24dd('0x15')](function(_0x57f7b0){logger[_0x24dd('0xa')](util[_0x24dd('0xe')]('[RECORDING:%d]\x20Transcript\x20downloaded',_0x3fce8b['id']));if(_0x57f7b0&&_0x57f7b0['results']&&_0x57f7b0[_0x24dd('0x16')][_0x24dd('0x17')]&&_0x57f7b0[_0x24dd('0x16')][_0x24dd('0x17')][_0x24dd('0x18')]){_0x3debf8['fileText']='';for(var _0x359cd9=0x0;_0x359cd9<_0x57f7b0[_0x24dd('0x16')][_0x24dd('0x17')]['length'];_0x359cd9++){_0x3debf8[_0x24dd('0x19')]+=_0x57f7b0[_0x24dd('0x16')][_0x24dd('0x17')][_0x359cd9][_0x24dd('0x1a')]+'';}}return _0x3fce8b[_0x24dd('0x1b')](_0x3debf8);})['then'](function(){logger['info'](util['format'](_0x24dd('0x1c'),_0x3fce8b['id']));if(!_0x3fce8b[_0x24dd('0x1d')]){throw new db[(_0x24dd('0x1e'))]['ValidationError']('Sentiment\x20Analysis\x20not\x20requested');}if(!_0x167581['sentiment']||!_0x167581[_0x24dd('0x1f')]||!_0x167581[_0x24dd('0x20')]||!_0x167581[_0x24dd('0x21')]||!_0x167581[_0x24dd('0x22')]){throw new db[(_0x24dd('0x1e'))]['ValidationError'](_0x24dd('0x23'));}if(!_0x3debf8['fileText']){throw new Error(_0x24dd('0x24'));}if(_0x167581[_0x24dd('0x1f')]===_0x4d8c55['id']){return _0x4d8c55;}else{return db[_0x24dd('0x25')]['findOne']({'where':{'id':_settings[_0x24dd('0x1f')]}});}})[_0x24dd('0x15')](function(_0x5287d9){if(!_0x5287d9){throw new db[(_0x24dd('0x1e'))]['ValidationError'](_0x24dd('0x26'));}if(!_0x5287d9[_0x24dd('0xc')]||!_0x5287d9['data2']){throw new db['Sequelize'][(_0x24dd('0x27'))](_0x24dd('0x28'));}_0x46b06c=_0x5287d9;logger[_0x24dd('0xa')](util[_0x24dd('0xe')](_0x24dd('0x29'),_0x3fce8b['id']));return sentiment(_0x46b06c[_0x24dd('0xc')],_0x46b06c[_0x24dd('0xd')],_0x167581[_0x24dd('0x20')],_0x3debf8[_0x24dd('0x19')],_0x167581[_0x24dd('0x21')]);})[_0x24dd('0x15')](function(_0x469945){logger['info'](util[_0x24dd('0xe')](_0x24dd('0x2a'),_0x3fce8b['id']));return _0x3fce8b['update']({'sentiment':_0x469945[_0x24dd('0x2b')],'sPositive':_0x469945['SentimentScore']['Positive'],'sNegative':_0x469945[_0x24dd('0x2c')][_0x24dd('0x2d')],'sMixed':_0x469945['SentimentScore'][_0x24dd('0x2e')],'sNeutral':_0x469945['SentimentScore'][_0x24dd('0x2f')]});})[_0x24dd('0x15')](function(){logger[_0x24dd('0xa')](util[_0x24dd('0xe')](_0x24dd('0x1c'),_0x3fce8b['id']));_0x4f6f77();});case _0x24dd('0x30'):return _0x3fce8b[_0x24dd('0x1b')]({'transcribeStatus':_0x24dd('0x30'),'failureReason':_0x397e7e[_0x24dd('0x10')][_0x24dd('0x31')]})[_0x24dd('0x15')](function(){logger[_0x24dd('0xa')](util[_0x24dd('0xe')](_0x24dd('0x1c'),_0x3fce8b['id']));_0x4f6f77();});default:logger[_0x24dd('0xa')](util['format'](_0x24dd('0x32'),_0x3fce8b['id']));break;}}else{return BPromise['resolve']()[_0x24dd('0x15')](function(){if(!_0x3fce8b[_0x24dd('0x1d')]){throw new db[(_0x24dd('0x1e'))][(_0x24dd('0x27'))](_0x24dd('0x33'));}if(!_0x167581[_0x24dd('0x34')]||!_0x167581[_0x24dd('0x1f')]||!_0x167581['sentimentRegion']||!_0x167581[_0x24dd('0x21')]||!_0x167581[_0x24dd('0x22')]){throw new db[(_0x24dd('0x1e'))][(_0x24dd('0x27'))](_0x24dd('0x23'));}if(!_0x3fce8b[_0x24dd('0x19')]){throw new Error(_0x24dd('0x24'));}if(_0x167581[_0x24dd('0x1f')]===_0x4d8c55['id']){return _0x4d8c55;}else{return db['CloudProvider'][_0x24dd('0x35')]({'where':{'id':_settings[_0x24dd('0x1f')]}});}})[_0x24dd('0x15')](function(_0x43eb79){if(!_0x43eb79){throw new db[(_0x24dd('0x1e'))][(_0x24dd('0x27'))](_0x24dd('0x26'));}if(!_0x43eb79[_0x24dd('0xc')]||!_0x43eb79[_0x24dd('0xd')]){throw new db[(_0x24dd('0x1e'))][(_0x24dd('0x27'))](_0x24dd('0x28'));}_0x46b06c=_0x43eb79;logger[_0x24dd('0xa')](util[_0x24dd('0xe')](_0x24dd('0x29'),_0x3fce8b['id']));return sentiment(_0x46b06c[_0x24dd('0xc')],_0x46b06c[_0x24dd('0xd')],_0x167581[_0x24dd('0x20')],_0x3fce8b[_0x24dd('0x19')],_0x167581[_0x24dd('0x21')]);})[_0x24dd('0x15')](function(_0x55f80b){logger[_0x24dd('0xa')](util['format']('[RECORDING:%d]\x20Sentiment\x20Analysis\x20available',_0x3fce8b['id']));return _0x3fce8b[_0x24dd('0x1b')]({'sentiment':_0x55f80b[_0x24dd('0x2b')],'sPositive':_0x55f80b[_0x24dd('0x2c')]['Positive'],'sNegative':_0x55f80b[_0x24dd('0x2c')][_0x24dd('0x2d')],'sMixed':_0x55f80b[_0x24dd('0x2c')]['Mixed'],'sNeutral':_0x55f80b[_0x24dd('0x2c')][_0x24dd('0x2f')],'transcribeStatus':_0x24dd('0x36')});})[_0x24dd('0x15')](function(){logger[_0x24dd('0xa')](util[_0x24dd('0xe')](_0x24dd('0x1c'),_0x3fce8b['id']));_0x4f6f77();});}})[_0x24dd('0x37')](function(_0x483efa){if(_0x483efa){if(!_0x483efa[_0x24dd('0x38')]||_0x483efa[_0x24dd('0x38')]!==_0x24dd('0x39')){logger[_0x24dd('0x3a')](util[_0x24dd('0xe')](_0x24dd('0x3b'),_0x3fce8b['id']),util[_0x24dd('0x3c')](_0x483efa,{'showHidden':![],'depth':null}));}}_0x4f6f77();});});}function checkTranscribe(){var _0x2edbf4;var _0x4f4f87;var _0x79a332;return db['VoiceRecording'][_0x24dd('0x3d')]({'where':{'transcribeStatus':_0x24dd('0x3e')}})['then'](function(_0x2e2361){if(!_0x2e2361||!_0x2e2361['length']){throw new db[(_0x24dd('0x1e'))][(_0x24dd('0x27'))](_0x24dd('0x3f'));}_0x2edbf4=_0x2e2361;return db[_0x24dd('0x40')][_0x24dd('0x35')]({'where':{'id':0x1}});})[_0x24dd('0x15')](function(_0x1edcc5){if(!_0x1edcc5){throw new db[(_0x24dd('0x1e'))][(_0x24dd('0x27'))]('Settings\x20not\x20available');}_0x4f4f87=_0x1edcc5;if(!_0x4f4f87[_0x24dd('0x4')]||!_0x4f4f87['transcribeAccountId']||!_0x4f4f87[_0x24dd('0x41')]||!_0x4f4f87['language']||!_0x4f4f87['bucket']){throw new db[(_0x24dd('0x1e'))]['ValidationError']('Transcribe\x20not\x20configured');}return db['CloudProvider'][_0x24dd('0x35')]({'where':{'id':_0x4f4f87[_0x24dd('0x42')]}});})[_0x24dd('0x15')](function(_0x18a65b){if(!_0x18a65b){throw new db[(_0x24dd('0x1e'))][(_0x24dd('0x27'))](_0x24dd('0x26'));}if(!_0x18a65b['data1']||!_0x18a65b[_0x24dd('0xd')]){throw new db[(_0x24dd('0x1e'))][(_0x24dd('0x27'))](_0x24dd('0x28'));}_0x79a332=_0x18a65b;var _0x257c3f=[];_0x2edbf4[_0x24dd('0x43')](function(_0x2300f6){_0x257c3f[_0x24dd('0x44')](checkTranscribeJob(_0x2300f6,_0x4f4f87,_0x79a332));});return BPromise[_0x24dd('0x45')](_0x257c3f);})[_0x24dd('0x37')](function(_0x32c63e){if(_0x32c63e){if(!_0x32c63e[_0x24dd('0x38')]||_0x32c63e[_0x24dd('0x38')]!=='SequelizeValidationError'){logger[_0x24dd('0x3a')](util[_0x24dd('0x3c')](_0x32c63e,{'showHidden':![],'depth':null}));}}});}exports['start']=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};