Built motion from commit 43538d75.|2.5.35
[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 _0x5d86=['COMPLETED','TranscriptFileUri','Transcript','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','fileText','transcript','ValidationError','Sentiment\x20Analysis\x20not\x20requested','sentiment','sentimentAccountId','sentimentRegion','bucket','Sequelize','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available','CloudProvider','findOne','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','update','Sentiment','SentimentScore','Positive','Negative','Neutral','FAILED','resolve','language','Cloud\x20Provider\x20not\x20available','Mixed','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','catch','name','SequelizeValidationError','error','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','VoiceRecording','findAll','IN_PROGRESS','No\x20transcribe\x20job\x20to\x20check','Settings\x20not\x20available','transcribeAccountId','Transcribe\x20not\x20configured','forEach','push','start','lodash','aws-sdk','bluebird','../../config/logger','transcribe','getTranscriptionJob','Comprehend','detectSentiment','substring','info','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeName','data1','data2','transcribeRegion','then','format','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJob','TranscriptionJobStatus'];(function(_0x289dbc,_0x5b61d6){var _0x17aa97=function(_0x87ce74){while(--_0x87ce74){_0x289dbc['push'](_0x289dbc['shift']());}};_0x17aa97(++_0x5b61d6);}(_0x5d86,0x76));var _0x65d8=function(_0x19a21c,_0x4e03f8){_0x19a21c=_0x19a21c-0x0;var _0x3e9b9f=_0x5d86[_0x19a21c];return _0x3e9b9f;};var _=require(_0x65d8('0x0'));var AWS=require(_0x65d8('0x1'));var rp=require('request-promise');var util=require('util');var BPromise=require(_0x65d8('0x2'));var db=require('../../mysqldb')['db'];var logger=require(_0x65d8('0x3'))(_0x65d8('0x4'));function getTranscriptionJob(_0x480244,_0x275f44,_0x5c4bb3,_0x8aeb53){return new Promise(function(_0x50c922,_0x1581a6){var _0x19ab88=new AWS['TranscribeService']({'accessKeyId':_0x275f44,'secretAccessKey':_0x480244,'region':_0x5c4bb3});_0x19ab88[_0x65d8('0x5')]({'TranscriptionJobName':_0x8aeb53},function(_0x2f6a2c,_0x2aa9eb){if(_0x2f6a2c){return _0x1581a6(_0x2f6a2c);}else{return _0x50c922(_0x2aa9eb);}});});}function sentiment(_0x254224,_0x44554f,_0x1a7e2e,_0x31894f,_0x57a45a){return new Promise(function(_0x4acdf2,_0x59cbcc){var _0x36d519=new AWS[(_0x65d8('0x6'))]({'accessKeyId':_0x44554f,'secretAccessKey':_0x254224,'region':_0x1a7e2e});_0x36d519[_0x65d8('0x7')]({'Text':_0x31894f,'LanguageCode':_0x57a45a[_0x65d8('0x8')](0x0,0x2)},function(_0x2545c3,_0x414dcc){if(_0x2545c3){return _0x59cbcc(_0x2545c3);}else{return _0x4acdf2(_0x414dcc);}});});}function checkTranscribeJob(_0xa80464,_0x32c2ee,_0x5430c9){var _0x2a7c1c;return new BPromise(function(_0x1b46ff,_0x19b7d8){logger[_0x65d8('0x9')](util['format'](_0x65d8('0xa'),_0xa80464['id'],_0xa80464[_0x65d8('0xb')]));return getTranscriptionJob(_0x5430c9[_0x65d8('0xc')],_0x5430c9[_0x65d8('0xd')],_0x32c2ee[_0x65d8('0xe')],_0xa80464[_0x65d8('0xb')])[_0x65d8('0xf')](function(_0x374e10){logger['info'](util[_0x65d8('0x10')](_0x65d8('0x11'),_0xa80464['id'],_0xa80464[_0x65d8('0xb')],_0x374e10[_0x65d8('0x12')][_0x65d8('0x13')]));if(!_0xa80464['fileText']){switch(_0x374e10[_0x65d8('0x12')][_0x65d8('0x13')]){case _0x65d8('0x14'):var _0x3177ed={'transcribeStatus':_0x374e10[_0x65d8('0x12')][_0x65d8('0x13')],'fileUri':_0x374e10[_0x65d8('0x12')]['Transcript'][_0x65d8('0x15')]};logger['info'](util[_0x65d8('0x10')]('[RECORDING:%d]\x20Get\x20transcript',_0xa80464['id']));return rp({'uri':_0x374e10[_0x65d8('0x12')][_0x65d8('0x16')][_0x65d8('0x15')],'json':!![]})[_0x65d8('0xf')](function(_0x4dbe5e){logger['info'](util[_0x65d8('0x10')](_0x65d8('0x17'),_0xa80464['id']));if(_0x4dbe5e&&_0x4dbe5e[_0x65d8('0x18')]&&_0x4dbe5e[_0x65d8('0x18')]['transcripts']&&_0x4dbe5e['results'][_0x65d8('0x19')][_0x65d8('0x1a')]){_0x3177ed['fileText']='';for(var _0x1befe4=0x0;_0x1befe4<_0x4dbe5e[_0x65d8('0x18')]['transcripts'][_0x65d8('0x1a')];_0x1befe4++){_0x3177ed[_0x65d8('0x1b')]+=_0x4dbe5e[_0x65d8('0x18')][_0x65d8('0x19')][_0x1befe4][_0x65d8('0x1c')]+'';}}return _0xa80464['update'](_0x3177ed);})[_0x65d8('0xf')](function(){logger[_0x65d8('0x9')](util[_0x65d8('0x10')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0xa80464['id']));if(!_0xa80464['tempSentiment']){throw new db['Sequelize'][(_0x65d8('0x1d'))](_0x65d8('0x1e'));}if(!_0x32c2ee[_0x65d8('0x1f')]||!_0x32c2ee[_0x65d8('0x20')]||!_0x32c2ee[_0x65d8('0x21')]||!_0x32c2ee['language']||!_0x32c2ee[_0x65d8('0x22')]){throw new db[(_0x65d8('0x23'))][(_0x65d8('0x1d'))](_0x65d8('0x24'));}if(!_0x3177ed[_0x65d8('0x1b')]){throw new Error(_0x65d8('0x25'));}if(_0x32c2ee[_0x65d8('0x20')]===_0x5430c9['id']){return _0x5430c9;}else{return db[_0x65d8('0x26')][_0x65d8('0x27')]({'where':{'id':_settings[_0x65d8('0x20')]}});}})['then'](function(_0x2da083){if(!_0x2da083){throw new db[(_0x65d8('0x23'))][(_0x65d8('0x1d'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x2da083[_0x65d8('0xc')]||!_0x2da083[_0x65d8('0xd')]){throw new db['Sequelize'][(_0x65d8('0x1d'))](_0x65d8('0x28'));}_0x2a7c1c=_0x2da083;logger[_0x65d8('0x9')](util[_0x65d8('0x10')]('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0xa80464['id']));return sentiment(_0x2a7c1c['data1'],_0x2a7c1c['data2'],_0x32c2ee[_0x65d8('0x21')],_0x3177ed[_0x65d8('0x1b')],_0x32c2ee['language']);})[_0x65d8('0xf')](function(_0x2ba8da){logger[_0x65d8('0x9')](util['format'](_0x65d8('0x29'),_0xa80464['id']));return _0xa80464[_0x65d8('0x2a')]({'sentiment':_0x2ba8da[_0x65d8('0x2b')],'sPositive':_0x2ba8da[_0x65d8('0x2c')][_0x65d8('0x2d')],'sNegative':_0x2ba8da['SentimentScore'][_0x65d8('0x2e')],'sMixed':_0x2ba8da[_0x65d8('0x2c')]['Mixed'],'sNeutral':_0x2ba8da[_0x65d8('0x2c')][_0x65d8('0x2f')]});})[_0x65d8('0xf')](function(){logger['info'](util[_0x65d8('0x10')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0xa80464['id']));_0x1b46ff();});case'FAILED':return _0xa80464[_0x65d8('0x2a')]({'transcribeStatus':_0x65d8('0x30'),'failureReason':_0x374e10[_0x65d8('0x12')]['FailureReason']})[_0x65d8('0xf')](function(){logger[_0x65d8('0x9')](util[_0x65d8('0x10')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0xa80464['id']));_0x1b46ff();});default:logger['info'](util['format']('[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed',_0xa80464['id']));break;}}else{return BPromise[_0x65d8('0x31')]()['then'](function(){if(!_0xa80464['tempSentiment']){throw new db[(_0x65d8('0x23'))]['ValidationError']('Sentiment\x20Analysis\x20not\x20requested');}if(!_0x32c2ee[_0x65d8('0x1f')]||!_0x32c2ee[_0x65d8('0x20')]||!_0x32c2ee[_0x65d8('0x21')]||!_0x32c2ee[_0x65d8('0x32')]||!_0x32c2ee[_0x65d8('0x22')]){throw new db[(_0x65d8('0x23'))][(_0x65d8('0x1d'))](_0x65d8('0x24'));}if(!_0xa80464[_0x65d8('0x1b')]){throw new Error('Transcript\x20not\x20available');}if(_0x32c2ee['sentimentAccountId']===_0x5430c9['id']){return _0x5430c9;}else{return db['CloudProvider'][_0x65d8('0x27')]({'where':{'id':_settings[_0x65d8('0x20')]}});}})[_0x65d8('0xf')](function(_0x247914){if(!_0x247914){throw new db[(_0x65d8('0x23'))][(_0x65d8('0x1d'))](_0x65d8('0x33'));}if(!_0x247914[_0x65d8('0xc')]||!_0x247914[_0x65d8('0xd')]){throw new db['Sequelize'][(_0x65d8('0x1d'))]('Cloud\x20Provider\x20not\x20configured');}_0x2a7c1c=_0x247914;logger['info'](util[_0x65d8('0x10')]('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0xa80464['id']));return sentiment(_0x2a7c1c[_0x65d8('0xc')],_0x2a7c1c[_0x65d8('0xd')],_0x32c2ee[_0x65d8('0x21')],_0xa80464[_0x65d8('0x1b')],_0x32c2ee[_0x65d8('0x32')]);})[_0x65d8('0xf')](function(_0x476284){logger['info'](util[_0x65d8('0x10')]('[RECORDING:%d]\x20Sentiment\x20Analysis\x20available',_0xa80464['id']));return _0xa80464[_0x65d8('0x2a')]({'sentiment':_0x476284[_0x65d8('0x2b')],'sPositive':_0x476284['SentimentScore'][_0x65d8('0x2d')],'sNegative':_0x476284[_0x65d8('0x2c')]['Negative'],'sMixed':_0x476284[_0x65d8('0x2c')][_0x65d8('0x34')],'sNeutral':_0x476284[_0x65d8('0x2c')][_0x65d8('0x2f')],'transcribeStatus':_0x65d8('0x14')});})[_0x65d8('0xf')](function(){logger[_0x65d8('0x9')](util['format'](_0x65d8('0x35'),_0xa80464['id']));_0x1b46ff();});}})[_0x65d8('0x36')](function(_0xffeff7){if(_0xffeff7){if(!_0xffeff7[_0x65d8('0x37')]||_0xffeff7['name']!==_0x65d8('0x38')){logger[_0x65d8('0x39')](util[_0x65d8('0x10')](_0x65d8('0x3a'),_0xa80464['id']),util['inspect'](_0xffeff7,{'showHidden':![],'depth':null}));}}_0x1b46ff();});});}function checkTranscribe(){var _0xc39253;var _0x2370bb;var _0x451cd3;return db[_0x65d8('0x3b')][_0x65d8('0x3c')]({'where':{'transcribeStatus':_0x65d8('0x3d')}})[_0x65d8('0xf')](function(_0x26ea31){if(!_0x26ea31||!_0x26ea31[_0x65d8('0x1a')]){throw new db['Sequelize'][(_0x65d8('0x1d'))](_0x65d8('0x3e'));}_0xc39253=_0x26ea31;return db['Setting'][_0x65d8('0x27')]({'where':{'id':0x1}});})['then'](function(_0x162d86){if(!_0x162d86){throw new db[(_0x65d8('0x23'))]['ValidationError'](_0x65d8('0x3f'));}_0x2370bb=_0x162d86;if(!_0x2370bb['transcribe']||!_0x2370bb[_0x65d8('0x40')]||!_0x2370bb[_0x65d8('0xe')]||!_0x2370bb[_0x65d8('0x32')]||!_0x2370bb[_0x65d8('0x22')]){throw new db[(_0x65d8('0x23'))][(_0x65d8('0x1d'))](_0x65d8('0x41'));}return db[_0x65d8('0x26')][_0x65d8('0x27')]({'where':{'id':_0x2370bb[_0x65d8('0x40')]}});})[_0x65d8('0xf')](function(_0x3f5f27){if(!_0x3f5f27){throw new db[(_0x65d8('0x23'))][(_0x65d8('0x1d'))](_0x65d8('0x33'));}if(!_0x3f5f27[_0x65d8('0xc')]||!_0x3f5f27[_0x65d8('0xd')]){throw new db['Sequelize']['ValidationError'](_0x65d8('0x28'));}_0x451cd3=_0x3f5f27;var _0x5c2472=[];_0xc39253[_0x65d8('0x42')](function(_0x3d9c30){_0x5c2472[_0x65d8('0x43')](checkTranscribeJob(_0x3d9c30,_0x2370bb,_0x451cd3));});return BPromise['all'](_0x5c2472);})['catch'](function(_0x7c21cf){if(_0x7c21cf){if(!_0x7c21cf[_0x65d8('0x37')]||_0x7c21cf[_0x65d8('0x37')]!==_0x65d8('0x38')){logger[_0x65d8('0x39')](util['inspect'](_0x7c21cf,{'showHidden':![],'depth':null}));}}});}exports[_0x65d8('0x44')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};