d9c23d47c9cc06e9b91bdf8af21e01fc2a108b5c
[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 _0xdc8d=['bucket','ValidationError','CloudProvider','findOne','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Sentiment','SentimentScore','Positive','Negative','Neutral','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','FAILED','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available','Cloud\x20Provider\x20not\x20available','Mixed','COMPLETED','catch','name','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','inspect','VoiceRecording','IN_PROGRESS','No\x20transcribe\x20job\x20to\x20check','Settings\x20not\x20available','transcribeAccountId','transcribeRegion','Transcribe\x20not\x20configured','forEach','push','all','SequelizeValidationError','error','start','util','bluebird','../../mysqldb','../../config/logger','TranscribeService','getTranscriptionJob','Comprehend','format','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeName','data1','data2','then','info','TranscriptionJob','TranscriptionJobStatus','fileText','Transcript','[RECORDING:%d]\x20Get\x20transcript','TranscriptFileUri','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','update','tempSentiment','Sequelize','Sentiment\x20Analysis\x20not\x20requested','sentiment','sentimentAccountId','sentimentRegion','language'];(function(_0x14408a,_0xf2dc56){var _0x28f986=function(_0x32eb43){while(--_0x32eb43){_0x14408a['push'](_0x14408a['shift']());}};_0x28f986(++_0xf2dc56);}(_0xdc8d,0xb2));var _0xddc8=function(_0x2676cd,_0x84a3ba){_0x2676cd=_0x2676cd-0x0;var _0x2e5daa=_0xdc8d[_0x2676cd];return _0x2e5daa;};var _=require('lodash');var AWS=require('aws-sdk');var rp=require('request-promise');var util=require(_0xddc8('0x0'));var BPromise=require(_0xddc8('0x1'));var db=require(_0xddc8('0x2'))['db'];var logger=require(_0xddc8('0x3'))('transcribe');function getTranscriptionJob(_0x1fbb32,_0x31e337,_0x3e84aa,_0x16adac){return new Promise(function(_0x1bd296,_0x45c9dc){var _0xd58a90=new AWS[(_0xddc8('0x4'))]({'accessKeyId':_0x31e337,'secretAccessKey':_0x1fbb32,'region':_0x3e84aa});_0xd58a90[_0xddc8('0x5')]({'TranscriptionJobName':_0x16adac},function(_0x1d076a,_0x6c62be){if(_0x1d076a){return _0x45c9dc(_0x1d076a);}else{return _0x1bd296(_0x6c62be);}});});}function sentiment(_0x210576,_0x395f41,_0x585640,_0x3726a6,_0x503fbb){return new Promise(function(_0x5a4081,_0x452f49){var _0x4075e3=new AWS[(_0xddc8('0x6'))]({'accessKeyId':_0x395f41,'secretAccessKey':_0x210576,'region':_0x585640});_0x4075e3['detectSentiment']({'Text':_0x3726a6,'LanguageCode':_0x503fbb['substring'](0x0,0x2)},function(_0x15d405,_0x5dd4f0){if(_0x15d405){return _0x452f49(_0x15d405);}else{return _0x5a4081(_0x5dd4f0);}});});}function checkTranscribeJob(_0x2e0a09,_0x4ec880,_0x20c95c){var _0x25c776;return new BPromise(function(_0x3ad79d,_0x30e95e){logger['info'](util[_0xddc8('0x7')](_0xddc8('0x8'),_0x2e0a09['id'],_0x2e0a09[_0xddc8('0x9')]));return getTranscriptionJob(_0x20c95c[_0xddc8('0xa')],_0x20c95c[_0xddc8('0xb')],_0x4ec880['transcribeRegion'],_0x2e0a09[_0xddc8('0x9')])[_0xddc8('0xc')](function(_0x546d86){logger[_0xddc8('0xd')](util['format']('[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s',_0x2e0a09['id'],_0x2e0a09[_0xddc8('0x9')],_0x546d86[_0xddc8('0xe')][_0xddc8('0xf')]));if(!_0x2e0a09[_0xddc8('0x10')]){switch(_0x546d86['TranscriptionJob']['TranscriptionJobStatus']){case'COMPLETED':var _0x41ee9b={'transcribeStatus':_0x546d86[_0xddc8('0xe')][_0xddc8('0xf')],'fileUri':_0x546d86[_0xddc8('0xe')][_0xddc8('0x11')]['TranscriptFileUri']};logger['info'](util[_0xddc8('0x7')](_0xddc8('0x12'),_0x2e0a09['id']));return rp({'uri':_0x546d86['TranscriptionJob'][_0xddc8('0x11')][_0xddc8('0x13')],'json':!![]})[_0xddc8('0xc')](function(_0x2321ae){logger['info'](util[_0xddc8('0x7')](_0xddc8('0x14'),_0x2e0a09['id']));if(_0x2321ae&&_0x2321ae['results']&&_0x2321ae[_0xddc8('0x15')]['transcripts']&&_0x2321ae[_0xddc8('0x15')][_0xddc8('0x16')][_0xddc8('0x17')]){_0x41ee9b['fileText']='';for(var _0x2505ed=0x0;_0x2505ed<_0x2321ae[_0xddc8('0x15')][_0xddc8('0x16')][_0xddc8('0x17')];_0x2505ed++){_0x41ee9b[_0xddc8('0x10')]+=_0x2321ae[_0xddc8('0x15')][_0xddc8('0x16')][_0x2505ed]['transcript']+'';}}return _0x2e0a09[_0xddc8('0x18')](_0x41ee9b);})[_0xddc8('0xc')](function(){logger[_0xddc8('0xd')](util[_0xddc8('0x7')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x2e0a09['id']));if(!_0x2e0a09[_0xddc8('0x19')]){throw new db[(_0xddc8('0x1a'))]['ValidationError'](_0xddc8('0x1b'));}if(!_0x4ec880[_0xddc8('0x1c')]||!_0x4ec880[_0xddc8('0x1d')]||!_0x4ec880[_0xddc8('0x1e')]||!_0x4ec880[_0xddc8('0x1f')]||!_0x4ec880[_0xddc8('0x20')]){throw new db['Sequelize'][(_0xddc8('0x21'))]('Sentiment\x20Analysis\x20not\x20configured');}if(!_0x41ee9b['fileText']){throw new Error('Transcript\x20not\x20available');}if(_0x4ec880[_0xddc8('0x1d')]===_0x20c95c['id']){return _0x20c95c;}else{return db[_0xddc8('0x22')][_0xddc8('0x23')]({'where':{'id':_settings[_0xddc8('0x1d')]}});}})[_0xddc8('0xc')](function(_0x13fc2e){if(!_0x13fc2e){throw new db[(_0xddc8('0x1a'))]['ValidationError']('Cloud\x20Provider\x20not\x20available');}if(!_0x13fc2e[_0xddc8('0xa')]||!_0x13fc2e[_0xddc8('0xb')]){throw new db[(_0xddc8('0x1a'))][(_0xddc8('0x21'))](_0xddc8('0x24'));}_0x25c776=_0x13fc2e;logger[_0xddc8('0xd')](util[_0xddc8('0x7')](_0xddc8('0x25'),_0x2e0a09['id']));return sentiment(_0x25c776[_0xddc8('0xa')],_0x25c776['data2'],_0x4ec880[_0xddc8('0x1e')],_0x41ee9b[_0xddc8('0x10')],_0x4ec880[_0xddc8('0x1f')]);})['then'](function(_0x31965a){logger['info'](util[_0xddc8('0x7')](_0xddc8('0x26'),_0x2e0a09['id']));return _0x2e0a09[_0xddc8('0x18')]({'sentiment':_0x31965a[_0xddc8('0x27')],'sPositive':_0x31965a[_0xddc8('0x28')][_0xddc8('0x29')],'sNegative':_0x31965a['SentimentScore'][_0xddc8('0x2a')],'sMixed':_0x31965a[_0xddc8('0x28')]['Mixed'],'sNeutral':_0x31965a[_0xddc8('0x28')][_0xddc8('0x2b')]});})['then'](function(){logger[_0xddc8('0xd')](util[_0xddc8('0x7')](_0xddc8('0x2c'),_0x2e0a09['id']));_0x3ad79d();});case _0xddc8('0x2d'):return _0x2e0a09[_0xddc8('0x18')]({'transcribeStatus':_0xddc8('0x2d'),'failureReason':_0x546d86[_0xddc8('0xe')]['FailureReason']})['then'](function(){logger[_0xddc8('0xd')](util['format'](_0xddc8('0x2c'),_0x2e0a09['id']));_0x3ad79d();});default:logger[_0xddc8('0xd')](util[_0xddc8('0x7')](_0xddc8('0x2e'),_0x2e0a09['id']));break;}}else{return BPromise[_0xddc8('0x2f')]()[_0xddc8('0xc')](function(){if(!_0x2e0a09['tempSentiment']){throw new db['Sequelize'][(_0xddc8('0x21'))](_0xddc8('0x1b'));}if(!_0x4ec880[_0xddc8('0x1c')]||!_0x4ec880[_0xddc8('0x1d')]||!_0x4ec880[_0xddc8('0x1e')]||!_0x4ec880['language']||!_0x4ec880[_0xddc8('0x20')]){throw new db[(_0xddc8('0x1a'))][(_0xddc8('0x21'))](_0xddc8('0x30'));}if(!_0x2e0a09['fileText']){throw new Error(_0xddc8('0x31'));}if(_0x4ec880['sentimentAccountId']===_0x20c95c['id']){return _0x20c95c;}else{return db[_0xddc8('0x22')]['findOne']({'where':{'id':_settings[_0xddc8('0x1d')]}});}})[_0xddc8('0xc')](function(_0x3643e5){if(!_0x3643e5){throw new db['Sequelize'][(_0xddc8('0x21'))](_0xddc8('0x32'));}if(!_0x3643e5[_0xddc8('0xa')]||!_0x3643e5[_0xddc8('0xb')]){throw new db[(_0xddc8('0x1a'))][(_0xddc8('0x21'))]('Cloud\x20Provider\x20not\x20configured');}_0x25c776=_0x3643e5;logger['info'](util[_0xddc8('0x7')](_0xddc8('0x25'),_0x2e0a09['id']));return sentiment(_0x25c776[_0xddc8('0xa')],_0x25c776[_0xddc8('0xb')],_0x4ec880['sentimentRegion'],_0x2e0a09['fileText'],_0x4ec880[_0xddc8('0x1f')]);})[_0xddc8('0xc')](function(_0x2435e0){logger['info'](util[_0xddc8('0x7')](_0xddc8('0x26'),_0x2e0a09['id']));return _0x2e0a09[_0xddc8('0x18')]({'sentiment':_0x2435e0['Sentiment'],'sPositive':_0x2435e0['SentimentScore']['Positive'],'sNegative':_0x2435e0[_0xddc8('0x28')][_0xddc8('0x2a')],'sMixed':_0x2435e0[_0xddc8('0x28')][_0xddc8('0x33')],'sNeutral':_0x2435e0[_0xddc8('0x28')][_0xddc8('0x2b')],'transcribeStatus':_0xddc8('0x34')});})[_0xddc8('0xc')](function(){logger['info'](util[_0xddc8('0x7')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x2e0a09['id']));_0x3ad79d();});}})[_0xddc8('0x35')](function(_0x5d44d9){if(_0x5d44d9){if(!_0x5d44d9['name']||_0x5d44d9[_0xddc8('0x36')]!=='SequelizeValidationError'){logger['error'](util[_0xddc8('0x7')](_0xddc8('0x37'),_0x2e0a09['id']),util[_0xddc8('0x38')](_0x5d44d9,{'showHidden':![],'depth':null}));}}_0x3ad79d();});});}function checkTranscribe(){var _0x51551d;var _0x22aef9;var _0x37799c;return db[_0xddc8('0x39')]['findAll']({'where':{'transcribeStatus':_0xddc8('0x3a')}})[_0xddc8('0xc')](function(_0x1761a2){if(!_0x1761a2||!_0x1761a2['length']){throw new db['Sequelize'][(_0xddc8('0x21'))](_0xddc8('0x3b'));}_0x51551d=_0x1761a2;return db['Setting'][_0xddc8('0x23')]({'where':{'id':0x1}});})[_0xddc8('0xc')](function(_0x25f77f){if(!_0x25f77f){throw new db[(_0xddc8('0x1a'))][(_0xddc8('0x21'))](_0xddc8('0x3c'));}_0x22aef9=_0x25f77f;if(!_0x22aef9['transcribe']||!_0x22aef9[_0xddc8('0x3d')]||!_0x22aef9[_0xddc8('0x3e')]||!_0x22aef9[_0xddc8('0x1f')]||!_0x22aef9[_0xddc8('0x20')]){throw new db[(_0xddc8('0x1a'))][(_0xddc8('0x21'))](_0xddc8('0x3f'));}return db[_0xddc8('0x22')]['findOne']({'where':{'id':_0x22aef9[_0xddc8('0x3d')]}});})[_0xddc8('0xc')](function(_0x3b1c56){if(!_0x3b1c56){throw new db[(_0xddc8('0x1a'))]['ValidationError'](_0xddc8('0x32'));}if(!_0x3b1c56[_0xddc8('0xa')]||!_0x3b1c56[_0xddc8('0xb')]){throw new db['Sequelize'][(_0xddc8('0x21'))](_0xddc8('0x24'));}_0x37799c=_0x3b1c56;var _0x22e9fa=[];_0x51551d[_0xddc8('0x40')](function(_0x3974eb){_0x22e9fa[_0xddc8('0x41')](checkTranscribeJob(_0x3974eb,_0x22aef9,_0x37799c));});return BPromise[_0xddc8('0x42')](_0x22e9fa);})[_0xddc8('0x35')](function(_0xc6c439){if(_0xc6c439){if(!_0xc6c439[_0xddc8('0x36')]||_0xc6c439[_0xddc8('0x36')]!==_0xddc8('0x43')){logger[_0xddc8('0x44')](util['inspect'](_0xc6c439,{'showHidden':![],'depth':null}));}}});}exports[_0xddc8('0x45')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};