b4fcf0299e610b7bd49356ced531d58203ee5e45
[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 _0x6d1a=['[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','Mixed','COMPLETED','catch','name','SequelizeValidationError','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','inspect','IN_PROGRESS','No\x20transcribe\x20job\x20to\x20check','Setting','Settings\x20not\x20available','transcribeAccountId','transcribeRegion','Cloud\x20Provider\x20not\x20available','push','all','aws-sdk','util','bluebird','../../mysqldb','../../config/logger','transcribe','getTranscriptionJob','Comprehend','substring','info','format','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeName','data1','data2','then','TranscriptionJob','TranscriptionJobStatus','fileText','TranscriptFileUri','[RECORDING:%d]\x20Get\x20transcript','Transcript','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','transcript','Sequelize','Sentiment\x20Analysis\x20not\x20requested','sentimentAccountId','sentimentRegion','language','bucket','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available','findOne','ValidationError','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','update','Sentiment','SentimentScore','Positive','Negative','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','FAILED','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','tempSentiment','sentiment','CloudProvider'];(function(_0x173a44,_0x1acc24){var _0x6501e=function(_0x99c4b3){while(--_0x99c4b3){_0x173a44['push'](_0x173a44['shift']());}};_0x6501e(++_0x1acc24);}(_0x6d1a,0x1e6));var _0xa6d1=function(_0x4d249d,_0x2a58a0){_0x4d249d=_0x4d249d-0x0;var _0x18177e=_0x6d1a[_0x4d249d];return _0x18177e;};var _=require('lodash');var AWS=require(_0xa6d1('0x0'));var rp=require('request-promise');var util=require(_0xa6d1('0x1'));var BPromise=require(_0xa6d1('0x2'));var db=require(_0xa6d1('0x3'))['db'];var logger=require(_0xa6d1('0x4'))(_0xa6d1('0x5'));function getTranscriptionJob(_0x45e122,_0x557f39,_0x51fb9c,_0x2c3925){return new Promise(function(_0x8dbd80,_0x3b1c7a){var _0x2cbe0a=new AWS['TranscribeService']({'accessKeyId':_0x557f39,'secretAccessKey':_0x45e122,'region':_0x51fb9c});_0x2cbe0a[_0xa6d1('0x6')]({'TranscriptionJobName':_0x2c3925},function(_0x1f1270,_0x195a86){if(_0x1f1270){return _0x3b1c7a(_0x1f1270);}else{return _0x8dbd80(_0x195a86);}});});}function sentiment(_0x35d76a,_0x5baf2b,_0x36ebde,_0x33fa35,_0x889234){return new Promise(function(_0x4ba3c3,_0x508f74){var _0x192423=new AWS[(_0xa6d1('0x7'))]({'accessKeyId':_0x5baf2b,'secretAccessKey':_0x35d76a,'region':_0x36ebde});_0x192423['detectSentiment']({'Text':_0x33fa35,'LanguageCode':_0x889234[_0xa6d1('0x8')](0x0,0x2)},function(_0x37fe5a,_0x500290){if(_0x37fe5a){return _0x508f74(_0x37fe5a);}else{return _0x4ba3c3(_0x500290);}});});}function checkTranscribeJob(_0x57bafc,_0xd32061,_0x2d5615){var _0x4d1fd6;return new BPromise(function(_0x599875,_0x541449){logger[_0xa6d1('0x9')](util[_0xa6d1('0xa')](_0xa6d1('0xb'),_0x57bafc['id'],_0x57bafc[_0xa6d1('0xc')]));return getTranscriptionJob(_0x2d5615[_0xa6d1('0xd')],_0x2d5615[_0xa6d1('0xe')],_0xd32061['transcribeRegion'],_0x57bafc[_0xa6d1('0xc')])[_0xa6d1('0xf')](function(_0x5c4899){logger['info'](util[_0xa6d1('0xa')]('[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s',_0x57bafc['id'],_0x57bafc[_0xa6d1('0xc')],_0x5c4899[_0xa6d1('0x10')][_0xa6d1('0x11')]));if(!_0x57bafc[_0xa6d1('0x12')]){switch(_0x5c4899[_0xa6d1('0x10')][_0xa6d1('0x11')]){case'COMPLETED':var _0x5b914e={'transcribeStatus':_0x5c4899['TranscriptionJob']['TranscriptionJobStatus'],'fileUri':_0x5c4899['TranscriptionJob']['Transcript'][_0xa6d1('0x13')]};logger[_0xa6d1('0x9')](util[_0xa6d1('0xa')](_0xa6d1('0x14'),_0x57bafc['id']));return rp({'uri':_0x5c4899[_0xa6d1('0x10')][_0xa6d1('0x15')]['TranscriptFileUri'],'json':!![]})['then'](function(_0x22c0de){logger['info'](util[_0xa6d1('0xa')](_0xa6d1('0x16'),_0x57bafc['id']));if(_0x22c0de&&_0x22c0de[_0xa6d1('0x17')]&&_0x22c0de[_0xa6d1('0x17')]['transcripts']&&_0x22c0de['results'][_0xa6d1('0x18')][_0xa6d1('0x19')]){_0x5b914e[_0xa6d1('0x12')]='';for(var _0x496f32=0x0;_0x496f32<_0x22c0de[_0xa6d1('0x17')][_0xa6d1('0x18')]['length'];_0x496f32++){_0x5b914e[_0xa6d1('0x12')]+=_0x22c0de[_0xa6d1('0x17')][_0xa6d1('0x18')][_0x496f32][_0xa6d1('0x1a')]+'';}}return _0x57bafc['update'](_0x5b914e);})[_0xa6d1('0xf')](function(){logger['info'](util[_0xa6d1('0xa')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x57bafc['id']));if(!_0x57bafc['tempSentiment']){throw new db[(_0xa6d1('0x1b'))]['ValidationError'](_0xa6d1('0x1c'));}if(!_0xd32061['sentiment']||!_0xd32061[_0xa6d1('0x1d')]||!_0xd32061[_0xa6d1('0x1e')]||!_0xd32061[_0xa6d1('0x1f')]||!_0xd32061[_0xa6d1('0x20')]){throw new db[(_0xa6d1('0x1b'))]['ValidationError'](_0xa6d1('0x21'));}if(!_0x5b914e[_0xa6d1('0x12')]){throw new Error(_0xa6d1('0x22'));}if(_0xd32061[_0xa6d1('0x1d')]===_0x2d5615['id']){return _0x2d5615;}else{return db['CloudProvider'][_0xa6d1('0x23')]({'where':{'id':_settings['sentimentAccountId']}});}})['then'](function(_0x32c32b){if(!_0x32c32b){throw new db['Sequelize'][(_0xa6d1('0x24'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x32c32b[_0xa6d1('0xd')]||!_0x32c32b['data2']){throw new db[(_0xa6d1('0x1b'))]['ValidationError'](_0xa6d1('0x25'));}_0x4d1fd6=_0x32c32b;logger[_0xa6d1('0x9')](util[_0xa6d1('0xa')]('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0x57bafc['id']));return sentiment(_0x4d1fd6[_0xa6d1('0xd')],_0x4d1fd6[_0xa6d1('0xe')],_0xd32061[_0xa6d1('0x1e')],_0x5b914e[_0xa6d1('0x12')],_0xd32061[_0xa6d1('0x1f')]);})[_0xa6d1('0xf')](function(_0x1c4fe2){logger[_0xa6d1('0x9')](util[_0xa6d1('0xa')](_0xa6d1('0x26'),_0x57bafc['id']));return _0x57bafc[_0xa6d1('0x27')]({'sentiment':_0x1c4fe2[_0xa6d1('0x28')],'sPositive':_0x1c4fe2[_0xa6d1('0x29')][_0xa6d1('0x2a')],'sNegative':_0x1c4fe2[_0xa6d1('0x29')][_0xa6d1('0x2b')],'sMixed':_0x1c4fe2[_0xa6d1('0x29')]['Mixed'],'sNeutral':_0x1c4fe2[_0xa6d1('0x29')]['Neutral']});})[_0xa6d1('0xf')](function(){logger['info'](util[_0xa6d1('0xa')](_0xa6d1('0x2c'),_0x57bafc['id']));_0x599875();});case _0xa6d1('0x2d'):return _0x57bafc[_0xa6d1('0x27')]({'transcribeStatus':'FAILED','failureReason':_0x5c4899['TranscriptionJob']['FailureReason']})[_0xa6d1('0xf')](function(){logger[_0xa6d1('0x9')](util[_0xa6d1('0xa')](_0xa6d1('0x2c'),_0x57bafc['id']));_0x599875();});default:logger[_0xa6d1('0x9')](util['format'](_0xa6d1('0x2e'),_0x57bafc['id']));break;}}else{return BPromise['resolve']()[_0xa6d1('0xf')](function(){if(!_0x57bafc[_0xa6d1('0x2f')]){throw new db[(_0xa6d1('0x1b'))][(_0xa6d1('0x24'))]('Sentiment\x20Analysis\x20not\x20requested');}if(!_0xd32061[_0xa6d1('0x30')]||!_0xd32061['sentimentAccountId']||!_0xd32061[_0xa6d1('0x1e')]||!_0xd32061[_0xa6d1('0x1f')]||!_0xd32061[_0xa6d1('0x20')]){throw new db[(_0xa6d1('0x1b'))]['ValidationError'](_0xa6d1('0x21'));}if(!_0x57bafc[_0xa6d1('0x12')]){throw new Error(_0xa6d1('0x22'));}if(_0xd32061[_0xa6d1('0x1d')]===_0x2d5615['id']){return _0x2d5615;}else{return db[_0xa6d1('0x31')]['findOne']({'where':{'id':_settings['sentimentAccountId']}});}})[_0xa6d1('0xf')](function(_0x4b3f0d){if(!_0x4b3f0d){throw new db[(_0xa6d1('0x1b'))]['ValidationError']('Cloud\x20Provider\x20not\x20available');}if(!_0x4b3f0d[_0xa6d1('0xd')]||!_0x4b3f0d[_0xa6d1('0xe')]){throw new db['Sequelize'][(_0xa6d1('0x24'))](_0xa6d1('0x25'));}_0x4d1fd6=_0x4b3f0d;logger[_0xa6d1('0x9')](util[_0xa6d1('0xa')](_0xa6d1('0x32'),_0x57bafc['id']));return sentiment(_0x4d1fd6['data1'],_0x4d1fd6[_0xa6d1('0xe')],_0xd32061[_0xa6d1('0x1e')],_0x57bafc['fileText'],_0xd32061['language']);})['then'](function(_0x348d1e){logger['info'](util[_0xa6d1('0xa')](_0xa6d1('0x26'),_0x57bafc['id']));return _0x57bafc[_0xa6d1('0x27')]({'sentiment':_0x348d1e[_0xa6d1('0x28')],'sPositive':_0x348d1e[_0xa6d1('0x29')][_0xa6d1('0x2a')],'sNegative':_0x348d1e[_0xa6d1('0x29')]['Negative'],'sMixed':_0x348d1e[_0xa6d1('0x29')][_0xa6d1('0x33')],'sNeutral':_0x348d1e['SentimentScore']['Neutral'],'transcribeStatus':_0xa6d1('0x34')});})[_0xa6d1('0xf')](function(){logger[_0xa6d1('0x9')](util[_0xa6d1('0xa')](_0xa6d1('0x2c'),_0x57bafc['id']));_0x599875();});}})[_0xa6d1('0x35')](function(_0x2985b3){if(_0x2985b3){if(!_0x2985b3['name']||_0x2985b3[_0xa6d1('0x36')]!==_0xa6d1('0x37')){logger['error'](util[_0xa6d1('0xa')](_0xa6d1('0x38'),_0x57bafc['id']),util[_0xa6d1('0x39')](_0x2985b3,{'showHidden':![],'depth':null}));}}_0x599875();});});}function checkTranscribe(){var _0x201c7d;var _0x2650ff;var _0x591912;return db['VoiceRecording']['findAll']({'where':{'transcribeStatus':_0xa6d1('0x3a')}})['then'](function(_0x5b4398){if(!_0x5b4398||!_0x5b4398['length']){throw new db['Sequelize']['ValidationError'](_0xa6d1('0x3b'));}_0x201c7d=_0x5b4398;return db[_0xa6d1('0x3c')][_0xa6d1('0x23')]({'where':{'id':0x1}});})[_0xa6d1('0xf')](function(_0x4a1899){if(!_0x4a1899){throw new db['Sequelize'][(_0xa6d1('0x24'))](_0xa6d1('0x3d'));}_0x2650ff=_0x4a1899;if(!_0x2650ff[_0xa6d1('0x5')]||!_0x2650ff[_0xa6d1('0x3e')]||!_0x2650ff[_0xa6d1('0x3f')]||!_0x2650ff[_0xa6d1('0x1f')]||!_0x2650ff['bucket']){throw new db[(_0xa6d1('0x1b'))][(_0xa6d1('0x24'))]('Transcribe\x20not\x20configured');}return db[_0xa6d1('0x31')]['findOne']({'where':{'id':_0x2650ff[_0xa6d1('0x3e')]}});})[_0xa6d1('0xf')](function(_0x24c2d0){if(!_0x24c2d0){throw new db[(_0xa6d1('0x1b'))][(_0xa6d1('0x24'))](_0xa6d1('0x40'));}if(!_0x24c2d0[_0xa6d1('0xd')]||!_0x24c2d0[_0xa6d1('0xe')]){throw new db['Sequelize']['ValidationError'](_0xa6d1('0x25'));}_0x591912=_0x24c2d0;var _0x4a16a9=[];_0x201c7d['forEach'](function(_0xaf282){_0x4a16a9[_0xa6d1('0x41')](checkTranscribeJob(_0xaf282,_0x2650ff,_0x591912));});return BPromise[_0xa6d1('0x42')](_0x4a16a9);})['catch'](function(_0x46d2a9){if(_0x46d2a9){if(!_0x46d2a9['name']||_0x46d2a9[_0xa6d1('0x36')]!==_0xa6d1('0x37')){logger['error'](util[_0xa6d1('0x39')](_0x46d2a9,{'showHidden':![],'depth':null}));}}});}exports['start']=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};