15826d55e6d86e5e7e7e1655a8cbd2b911e2efcb
[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 _0x9780=['SentimentScore','Negative','Mixed','Neutral','FAILED','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Positive','name','SequelizeValidationError','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','inspect','VoiceRecording','findAll','IN_PROGRESS','No\x20transcribe\x20job\x20to\x20check','Setting','Transcribe\x20not\x20configured','forEach','push','all','catch','error','request-promise','util','bluebird','../../mysqldb','../../config/logger','transcribe','TranscribeService','getTranscriptionJob','detectSentiment','substring','info','format','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeName','data1','transcribeRegion','then','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJob','fileText','TranscriptionJobStatus','COMPLETED','Transcript','[RECORDING:%d]\x20Get\x20transcript','TranscriptFileUri','[RECORDING:%d]\x20Transcript\x20downloaded','results','length','transcripts','transcript','update','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','tempSentiment','Sequelize','ValidationError','Sentiment\x20Analysis\x20not\x20requested','sentiment','sentimentAccountId','sentimentRegion','bucket','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available','CloudProvider','findOne','Cloud\x20Provider\x20not\x20available','data2','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','language','Sentiment'];(function(_0x570019,_0x32ce3a){var _0x20d3bf=function(_0x226b15){while(--_0x226b15){_0x570019['push'](_0x570019['shift']());}};_0x20d3bf(++_0x32ce3a);}(_0x9780,0x1d4));var _0x0978=function(_0x2f91a6,_0x4e44ff){_0x2f91a6=_0x2f91a6-0x0;var _0x324cb5=_0x9780[_0x2f91a6];return _0x324cb5;};var _=require('lodash');var AWS=require('aws-sdk');var rp=require(_0x0978('0x0'));var util=require(_0x0978('0x1'));var BPromise=require(_0x0978('0x2'));var db=require(_0x0978('0x3'))['db'];var logger=require(_0x0978('0x4'))(_0x0978('0x5'));function getTranscriptionJob(_0x173398,_0x1e1969,_0x7acd8f,_0x35b86e){return new Promise(function(_0x21b165,_0x5bb746){var _0x422038=new AWS[(_0x0978('0x6'))]({'accessKeyId':_0x1e1969,'secretAccessKey':_0x173398,'region':_0x7acd8f});_0x422038[_0x0978('0x7')]({'TranscriptionJobName':_0x35b86e},function(_0xefd03b,_0x34fe92){if(_0xefd03b){return _0x5bb746(_0xefd03b);}else{return _0x21b165(_0x34fe92);}});});}function sentiment(_0x1883a7,_0x2aa5ff,_0x34081e,_0x3a0754,_0x16b60f){return new Promise(function(_0x235bb1,_0x55e975){var _0x1a94fd=new AWS['Comprehend']({'accessKeyId':_0x2aa5ff,'secretAccessKey':_0x1883a7,'region':_0x34081e});_0x1a94fd[_0x0978('0x8')]({'Text':_0x3a0754,'LanguageCode':_0x16b60f[_0x0978('0x9')](0x0,0x2)},function(_0x2579db,_0x21105f){if(_0x2579db){return _0x55e975(_0x2579db);}else{return _0x235bb1(_0x21105f);}});});}function checkTranscribeJob(_0x50e2d2,_0x3db101,_0x4cb5f5){var _0x3cc5e6;return new BPromise(function(_0x3ec1a8,_0x12dba5){logger[_0x0978('0xa')](util[_0x0978('0xb')](_0x0978('0xc'),_0x50e2d2['id'],_0x50e2d2[_0x0978('0xd')]));return getTranscriptionJob(_0x4cb5f5[_0x0978('0xe')],_0x4cb5f5['data2'],_0x3db101[_0x0978('0xf')],_0x50e2d2[_0x0978('0xd')])[_0x0978('0x10')](function(_0x20e9ab){logger[_0x0978('0xa')](util[_0x0978('0xb')](_0x0978('0x11'),_0x50e2d2['id'],_0x50e2d2[_0x0978('0xd')],_0x20e9ab[_0x0978('0x12')]['TranscriptionJobStatus']));if(!_0x50e2d2[_0x0978('0x13')]){switch(_0x20e9ab[_0x0978('0x12')][_0x0978('0x14')]){case _0x0978('0x15'):var _0x3d7e83={'transcribeStatus':_0x20e9ab[_0x0978('0x12')][_0x0978('0x14')],'fileUri':_0x20e9ab[_0x0978('0x12')][_0x0978('0x16')]['TranscriptFileUri']};logger[_0x0978('0xa')](util[_0x0978('0xb')](_0x0978('0x17'),_0x50e2d2['id']));return rp({'uri':_0x20e9ab['TranscriptionJob'][_0x0978('0x16')][_0x0978('0x18')],'json':!![]})[_0x0978('0x10')](function(_0x5b6558){logger[_0x0978('0xa')](util['format'](_0x0978('0x19'),_0x50e2d2['id']));if(_0x5b6558&&_0x5b6558['results']&&_0x5b6558[_0x0978('0x1a')]['transcripts']&&_0x5b6558[_0x0978('0x1a')]['transcripts'][_0x0978('0x1b')]){_0x3d7e83['fileText']='';for(var _0x584da0=0x0;_0x584da0<_0x5b6558[_0x0978('0x1a')][_0x0978('0x1c')][_0x0978('0x1b')];_0x584da0++){_0x3d7e83[_0x0978('0x13')]+=_0x5b6558[_0x0978('0x1a')][_0x0978('0x1c')][_0x584da0][_0x0978('0x1d')]+'';}}return _0x50e2d2[_0x0978('0x1e')](_0x3d7e83);})[_0x0978('0x10')](function(){logger[_0x0978('0xa')](util[_0x0978('0xb')](_0x0978('0x1f'),_0x50e2d2['id']));if(!_0x50e2d2[_0x0978('0x20')]){throw new db[(_0x0978('0x21'))][(_0x0978('0x22'))](_0x0978('0x23'));}if(!_0x3db101[_0x0978('0x24')]||!_0x3db101[_0x0978('0x25')]||!_0x3db101[_0x0978('0x26')]||!_0x3db101['language']||!_0x3db101[_0x0978('0x27')]){throw new db['Sequelize'][(_0x0978('0x22'))](_0x0978('0x28'));}if(!_0x3d7e83[_0x0978('0x13')]){throw new Error(_0x0978('0x29'));}if(_0x3db101[_0x0978('0x25')]===_0x4cb5f5['id']){return _0x4cb5f5;}else{return db[_0x0978('0x2a')][_0x0978('0x2b')]({'where':{'id':_settings[_0x0978('0x25')]}});}})[_0x0978('0x10')](function(_0x188fd7){if(!_0x188fd7){throw new db[(_0x0978('0x21'))][(_0x0978('0x22'))](_0x0978('0x2c'));}if(!_0x188fd7[_0x0978('0xe')]||!_0x188fd7[_0x0978('0x2d')]){throw new db[(_0x0978('0x21'))][(_0x0978('0x22'))](_0x0978('0x2e'));}_0x3cc5e6=_0x188fd7;logger['info'](util[_0x0978('0xb')](_0x0978('0x2f'),_0x50e2d2['id']));return sentiment(_0x3cc5e6[_0x0978('0xe')],_0x3cc5e6[_0x0978('0x2d')],_0x3db101[_0x0978('0x26')],_0x3d7e83['fileText'],_0x3db101[_0x0978('0x30')]);})[_0x0978('0x10')](function(_0x41d44d){logger[_0x0978('0xa')](util['format']('[RECORDING:%d]\x20Sentiment\x20Analysis\x20available',_0x50e2d2['id']));return _0x50e2d2[_0x0978('0x1e')]({'sentiment':_0x41d44d[_0x0978('0x31')],'sPositive':_0x41d44d[_0x0978('0x32')]['Positive'],'sNegative':_0x41d44d[_0x0978('0x32')][_0x0978('0x33')],'sMixed':_0x41d44d[_0x0978('0x32')][_0x0978('0x34')],'sNeutral':_0x41d44d['SentimentScore'][_0x0978('0x35')]});})['then'](function(){logger[_0x0978('0xa')](util[_0x0978('0xb')](_0x0978('0x1f'),_0x50e2d2['id']));_0x3ec1a8();});case _0x0978('0x36'):return _0x50e2d2[_0x0978('0x1e')]({'transcribeStatus':_0x0978('0x36'),'failureReason':_0x20e9ab[_0x0978('0x12')]['FailureReason']})[_0x0978('0x10')](function(){logger[_0x0978('0xa')](util[_0x0978('0xb')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x50e2d2['id']));_0x3ec1a8();});default:logger[_0x0978('0xa')](util[_0x0978('0xb')](_0x0978('0x37'),_0x50e2d2['id']));break;}}else{return BPromise[_0x0978('0x38')]()['then'](function(){if(!_0x50e2d2['tempSentiment']){throw new db[(_0x0978('0x21'))]['ValidationError'](_0x0978('0x23'));}if(!_0x3db101[_0x0978('0x24')]||!_0x3db101[_0x0978('0x25')]||!_0x3db101[_0x0978('0x26')]||!_0x3db101[_0x0978('0x30')]||!_0x3db101[_0x0978('0x27')]){throw new db['Sequelize']['ValidationError']('Sentiment\x20Analysis\x20not\x20configured');}if(!_0x50e2d2[_0x0978('0x13')]){throw new Error('Transcript\x20not\x20available');}if(_0x3db101[_0x0978('0x25')]===_0x4cb5f5['id']){return _0x4cb5f5;}else{return db['CloudProvider'][_0x0978('0x2b')]({'where':{'id':_settings['sentimentAccountId']}});}})[_0x0978('0x10')](function(_0x534d07){if(!_0x534d07){throw new db[(_0x0978('0x21'))][(_0x0978('0x22'))](_0x0978('0x2c'));}if(!_0x534d07['data1']||!_0x534d07['data2']){throw new db['Sequelize'][(_0x0978('0x22'))](_0x0978('0x2e'));}_0x3cc5e6=_0x534d07;logger[_0x0978('0xa')](util['format'](_0x0978('0x2f'),_0x50e2d2['id']));return sentiment(_0x3cc5e6[_0x0978('0xe')],_0x3cc5e6[_0x0978('0x2d')],_0x3db101[_0x0978('0x26')],_0x50e2d2[_0x0978('0x13')],_0x3db101[_0x0978('0x30')]);})['then'](function(_0x334034){logger[_0x0978('0xa')](util[_0x0978('0xb')](_0x0978('0x39'),_0x50e2d2['id']));return _0x50e2d2[_0x0978('0x1e')]({'sentiment':_0x334034['Sentiment'],'sPositive':_0x334034[_0x0978('0x32')][_0x0978('0x3a')],'sNegative':_0x334034['SentimentScore'][_0x0978('0x33')],'sMixed':_0x334034[_0x0978('0x32')][_0x0978('0x34')],'sNeutral':_0x334034[_0x0978('0x32')]['Neutral'],'transcribeStatus':_0x0978('0x15')});})[_0x0978('0x10')](function(){logger[_0x0978('0xa')](util['format'](_0x0978('0x1f'),_0x50e2d2['id']));_0x3ec1a8();});}})['catch'](function(_0x2ad97b){if(_0x2ad97b){if(!_0x2ad97b[_0x0978('0x3b')]||_0x2ad97b[_0x0978('0x3b')]!==_0x0978('0x3c')){logger['error'](util['format'](_0x0978('0x3d'),_0x50e2d2['id']),util[_0x0978('0x3e')](_0x2ad97b,{'showHidden':![],'depth':null}));}}_0x3ec1a8();});});}function checkTranscribe(){var _0x466cb6;var _0x8922c6;var _0xaac741;return db[_0x0978('0x3f')][_0x0978('0x40')]({'where':{'transcribeStatus':_0x0978('0x41')}})[_0x0978('0x10')](function(_0x15b5a3){if(!_0x15b5a3||!_0x15b5a3[_0x0978('0x1b')]){throw new db['Sequelize'][(_0x0978('0x22'))](_0x0978('0x42'));}_0x466cb6=_0x15b5a3;return db[_0x0978('0x43')]['findOne']({'where':{'id':0x1}});})[_0x0978('0x10')](function(_0x3c9605){if(!_0x3c9605){throw new db['Sequelize']['ValidationError']('Settings\x20not\x20available');}_0x8922c6=_0x3c9605;if(!_0x8922c6[_0x0978('0x5')]||!_0x8922c6['transcribeAccountId']||!_0x8922c6[_0x0978('0xf')]||!_0x8922c6[_0x0978('0x30')]||!_0x8922c6[_0x0978('0x27')]){throw new db[(_0x0978('0x21'))][(_0x0978('0x22'))](_0x0978('0x44'));}return db['CloudProvider'][_0x0978('0x2b')]({'where':{'id':_0x8922c6['transcribeAccountId']}});})[_0x0978('0x10')](function(_0x38574d){if(!_0x38574d){throw new db['Sequelize'][(_0x0978('0x22'))](_0x0978('0x2c'));}if(!_0x38574d['data1']||!_0x38574d[_0x0978('0x2d')]){throw new db['Sequelize'][(_0x0978('0x22'))](_0x0978('0x2e'));}_0xaac741=_0x38574d;var _0x20f0c2=[];_0x466cb6[_0x0978('0x45')](function(_0x5cb364){_0x20f0c2[_0x0978('0x46')](checkTranscribeJob(_0x5cb364,_0x8922c6,_0xaac741));});return BPromise[_0x0978('0x47')](_0x20f0c2);})[_0x0978('0x48')](function(_0x27bdb5){if(_0x27bdb5){if(!_0x27bdb5[_0x0978('0x3b')]||_0x27bdb5['name']!==_0x0978('0x3c')){logger[_0x0978('0x49')](util[_0x0978('0x3e')](_0x27bdb5,{'showHidden':![],'depth':null}));}}});}exports['start']=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};