Built motion from commit 497d3d92.|2.5.43
[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 _0xbc87=['format','[RECORDING:%d]\x20Get\x20transcript','results','transcripts','transcript','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','tempSentiment','Sequelize','Sentiment\x20Analysis\x20not\x20requested','sentiment','sentimentAccountId','sentimentRegion','language','bucket','ValidationError','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available','CloudProvider','findOne','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Sentiment','SentimentScore','Positive','Negative','Mixed','Neutral','FAILED','FailureReason','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','Cloud\x20Provider\x20not\x20available','catch','name','SequelizeValidationError','error','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','inspect','findAll','IN_PROGRESS','No\x20transcribe\x20job\x20to\x20check','Setting','Settings\x20not\x20available','transcribeAccountId','Transcribe\x20not\x20configured','forEach','all','lodash','util','bluebird','../../mysqldb','TranscribeService','getTranscriptionJob','detectSentiment','substring','info','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeName','data1','data2','transcribeRegion','then','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJob','TranscriptionJobStatus','fileText','Transcript','TranscriptFileUri'];(function(_0x33a038,_0x860533){var _0x1421c7=function(_0x30cd98){while(--_0x30cd98){_0x33a038['push'](_0x33a038['shift']());}};_0x1421c7(++_0x860533);}(_0xbc87,0x144));var _0x7bc8=function(_0xa335f1,_0x1ffd72){_0xa335f1=_0xa335f1-0x0;var _0x5b289a=_0xbc87[_0xa335f1];return _0x5b289a;};var _=require(_0x7bc8('0x0'));var AWS=require('aws-sdk');var rp=require('request-promise');var util=require(_0x7bc8('0x1'));var BPromise=require(_0x7bc8('0x2'));var db=require(_0x7bc8('0x3'))['db'];var logger=require('../../config/logger')('transcribe');function getTranscriptionJob(_0x16e8d7,_0x2160fc,_0x103551,_0xc8e5a8){return new Promise(function(_0x489d0b,_0x184610){var _0x410b95=new AWS[(_0x7bc8('0x4'))]({'accessKeyId':_0x2160fc,'secretAccessKey':_0x16e8d7,'region':_0x103551});_0x410b95[_0x7bc8('0x5')]({'TranscriptionJobName':_0xc8e5a8},function(_0x466ed5,_0xb87048){if(_0x466ed5){return _0x184610(_0x466ed5);}else{return _0x489d0b(_0xb87048);}});});}function sentiment(_0x420011,_0x370f27,_0x368899,_0x236bee,_0x24e4cf){return new Promise(function(_0xefdf44,_0x47c0b6){var _0xd1616a=new AWS['Comprehend']({'accessKeyId':_0x370f27,'secretAccessKey':_0x420011,'region':_0x368899});_0xd1616a[_0x7bc8('0x6')]({'Text':_0x236bee,'LanguageCode':_0x24e4cf[_0x7bc8('0x7')](0x0,0x2)},function(_0x3a292b,_0x2f80de){if(_0x3a292b){return _0x47c0b6(_0x3a292b);}else{return _0xefdf44(_0x2f80de);}});});}function checkTranscribeJob(_0x39d4f8,_0x41a2be,_0x4cd0ff){var _0x1d099f;return new BPromise(function(_0x17801e,_0x4bb015){logger[_0x7bc8('0x8')](util['format'](_0x7bc8('0x9'),_0x39d4f8['id'],_0x39d4f8[_0x7bc8('0xa')]));return getTranscriptionJob(_0x4cd0ff[_0x7bc8('0xb')],_0x4cd0ff[_0x7bc8('0xc')],_0x41a2be[_0x7bc8('0xd')],_0x39d4f8['transcribeName'])[_0x7bc8('0xe')](function(_0x47fb8f){logger[_0x7bc8('0x8')](util['format'](_0x7bc8('0xf'),_0x39d4f8['id'],_0x39d4f8[_0x7bc8('0xa')],_0x47fb8f[_0x7bc8('0x10')][_0x7bc8('0x11')]));if(!_0x39d4f8[_0x7bc8('0x12')]){switch(_0x47fb8f[_0x7bc8('0x10')][_0x7bc8('0x11')]){case'COMPLETED':var _0x5b4968={'transcribeStatus':_0x47fb8f[_0x7bc8('0x10')][_0x7bc8('0x11')],'fileUri':_0x47fb8f[_0x7bc8('0x10')][_0x7bc8('0x13')][_0x7bc8('0x14')]};logger['info'](util[_0x7bc8('0x15')](_0x7bc8('0x16'),_0x39d4f8['id']));return rp({'uri':_0x47fb8f[_0x7bc8('0x10')][_0x7bc8('0x13')][_0x7bc8('0x14')],'json':!![]})[_0x7bc8('0xe')](function(_0x1718a2){logger[_0x7bc8('0x8')](util[_0x7bc8('0x15')]('[RECORDING:%d]\x20Transcript\x20downloaded',_0x39d4f8['id']));if(_0x1718a2&&_0x1718a2[_0x7bc8('0x17')]&&_0x1718a2[_0x7bc8('0x17')][_0x7bc8('0x18')]&&_0x1718a2[_0x7bc8('0x17')][_0x7bc8('0x18')]['length']){_0x5b4968[_0x7bc8('0x12')]='';for(var _0x3130bf=0x0;_0x3130bf<_0x1718a2[_0x7bc8('0x17')]['transcripts']['length'];_0x3130bf++){_0x5b4968[_0x7bc8('0x12')]+=_0x1718a2[_0x7bc8('0x17')]['transcripts'][_0x3130bf][_0x7bc8('0x19')]+'';}}return _0x39d4f8['update'](_0x5b4968);})[_0x7bc8('0xe')](function(){logger[_0x7bc8('0x8')](util[_0x7bc8('0x15')](_0x7bc8('0x1a'),_0x39d4f8['id']));if(!_0x39d4f8[_0x7bc8('0x1b')]){throw new db[(_0x7bc8('0x1c'))]['ValidationError'](_0x7bc8('0x1d'));}if(!_0x41a2be[_0x7bc8('0x1e')]||!_0x41a2be[_0x7bc8('0x1f')]||!_0x41a2be[_0x7bc8('0x20')]||!_0x41a2be[_0x7bc8('0x21')]||!_0x41a2be[_0x7bc8('0x22')]){throw new db['Sequelize'][(_0x7bc8('0x23'))](_0x7bc8('0x24'));}if(!_0x5b4968['fileText']){throw new Error(_0x7bc8('0x25'));}if(_0x41a2be['sentimentAccountId']===_0x4cd0ff['id']){return _0x4cd0ff;}else{return db[_0x7bc8('0x26')][_0x7bc8('0x27')]({'where':{'id':_settings[_0x7bc8('0x1f')]}});}})[_0x7bc8('0xe')](function(_0x2da153){if(!_0x2da153){throw new db[(_0x7bc8('0x1c'))][(_0x7bc8('0x23'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x2da153[_0x7bc8('0xb')]||!_0x2da153['data2']){throw new db[(_0x7bc8('0x1c'))][(_0x7bc8('0x23'))](_0x7bc8('0x28'));}_0x1d099f=_0x2da153;logger['info'](util['format'](_0x7bc8('0x29'),_0x39d4f8['id']));return sentiment(_0x1d099f['data1'],_0x1d099f['data2'],_0x41a2be[_0x7bc8('0x20')],_0x5b4968[_0x7bc8('0x12')],_0x41a2be[_0x7bc8('0x21')]);})[_0x7bc8('0xe')](function(_0xdd3c2b){logger['info'](util[_0x7bc8('0x15')](_0x7bc8('0x2a'),_0x39d4f8['id']));return _0x39d4f8['update']({'sentiment':_0xdd3c2b[_0x7bc8('0x2b')],'sPositive':_0xdd3c2b[_0x7bc8('0x2c')][_0x7bc8('0x2d')],'sNegative':_0xdd3c2b[_0x7bc8('0x2c')][_0x7bc8('0x2e')],'sMixed':_0xdd3c2b['SentimentScore'][_0x7bc8('0x2f')],'sNeutral':_0xdd3c2b['SentimentScore'][_0x7bc8('0x30')]});})[_0x7bc8('0xe')](function(){logger['info'](util[_0x7bc8('0x15')](_0x7bc8('0x1a'),_0x39d4f8['id']));_0x17801e();});case'FAILED':return _0x39d4f8['update']({'transcribeStatus':_0x7bc8('0x31'),'failureReason':_0x47fb8f[_0x7bc8('0x10')][_0x7bc8('0x32')]})['then'](function(){logger[_0x7bc8('0x8')](util['format'](_0x7bc8('0x1a'),_0x39d4f8['id']));_0x17801e();});default:logger[_0x7bc8('0x8')](util['format'](_0x7bc8('0x33'),_0x39d4f8['id']));break;}}else{return BPromise[_0x7bc8('0x34')]()[_0x7bc8('0xe')](function(){if(!_0x39d4f8[_0x7bc8('0x1b')]){throw new db['Sequelize'][(_0x7bc8('0x23'))](_0x7bc8('0x1d'));}if(!_0x41a2be[_0x7bc8('0x1e')]||!_0x41a2be[_0x7bc8('0x1f')]||!_0x41a2be['sentimentRegion']||!_0x41a2be[_0x7bc8('0x21')]||!_0x41a2be[_0x7bc8('0x22')]){throw new db[(_0x7bc8('0x1c'))]['ValidationError']('Sentiment\x20Analysis\x20not\x20configured');}if(!_0x39d4f8['fileText']){throw new Error('Transcript\x20not\x20available');}if(_0x41a2be[_0x7bc8('0x1f')]===_0x4cd0ff['id']){return _0x4cd0ff;}else{return db[_0x7bc8('0x26')][_0x7bc8('0x27')]({'where':{'id':_settings['sentimentAccountId']}});}})[_0x7bc8('0xe')](function(_0x3afece){if(!_0x3afece){throw new db[(_0x7bc8('0x1c'))][(_0x7bc8('0x23'))](_0x7bc8('0x35'));}if(!_0x3afece['data1']||!_0x3afece['data2']){throw new db[(_0x7bc8('0x1c'))][(_0x7bc8('0x23'))](_0x7bc8('0x28'));}_0x1d099f=_0x3afece;logger[_0x7bc8('0x8')](util[_0x7bc8('0x15')](_0x7bc8('0x29'),_0x39d4f8['id']));return sentiment(_0x1d099f[_0x7bc8('0xb')],_0x1d099f[_0x7bc8('0xc')],_0x41a2be[_0x7bc8('0x20')],_0x39d4f8['fileText'],_0x41a2be['language']);})[_0x7bc8('0xe')](function(_0xc67e76){logger[_0x7bc8('0x8')](util[_0x7bc8('0x15')](_0x7bc8('0x2a'),_0x39d4f8['id']));return _0x39d4f8['update']({'sentiment':_0xc67e76[_0x7bc8('0x2b')],'sPositive':_0xc67e76['SentimentScore'][_0x7bc8('0x2d')],'sNegative':_0xc67e76['SentimentScore'][_0x7bc8('0x2e')],'sMixed':_0xc67e76[_0x7bc8('0x2c')][_0x7bc8('0x2f')],'sNeutral':_0xc67e76[_0x7bc8('0x2c')]['Neutral'],'transcribeStatus':'COMPLETED'});})[_0x7bc8('0xe')](function(){logger[_0x7bc8('0x8')](util[_0x7bc8('0x15')](_0x7bc8('0x1a'),_0x39d4f8['id']));_0x17801e();});}})[_0x7bc8('0x36')](function(_0x4745f7){if(_0x4745f7){if(!_0x4745f7['name']||_0x4745f7[_0x7bc8('0x37')]!==_0x7bc8('0x38')){logger[_0x7bc8('0x39')](util[_0x7bc8('0x15')](_0x7bc8('0x3a'),_0x39d4f8['id']),util[_0x7bc8('0x3b')](_0x4745f7,{'showHidden':![],'depth':null}));}}_0x17801e();});});}function checkTranscribe(){var _0x3c53c3;var _0x163fed;var _0x3ef113;return db['VoiceRecording'][_0x7bc8('0x3c')]({'where':{'transcribeStatus':_0x7bc8('0x3d')}})[_0x7bc8('0xe')](function(_0x3717e8){if(!_0x3717e8||!_0x3717e8['length']){throw new db[(_0x7bc8('0x1c'))][(_0x7bc8('0x23'))](_0x7bc8('0x3e'));}_0x3c53c3=_0x3717e8;return db[_0x7bc8('0x3f')][_0x7bc8('0x27')]({'where':{'id':0x1}});})['then'](function(_0x30d970){if(!_0x30d970){throw new db[(_0x7bc8('0x1c'))][(_0x7bc8('0x23'))](_0x7bc8('0x40'));}_0x163fed=_0x30d970;if(!_0x163fed['transcribe']||!_0x163fed[_0x7bc8('0x41')]||!_0x163fed['transcribeRegion']||!_0x163fed[_0x7bc8('0x21')]||!_0x163fed['bucket']){throw new db['Sequelize'][(_0x7bc8('0x23'))](_0x7bc8('0x42'));}return db['CloudProvider'][_0x7bc8('0x27')]({'where':{'id':_0x163fed['transcribeAccountId']}});})[_0x7bc8('0xe')](function(_0x368351){if(!_0x368351){throw new db['Sequelize'][(_0x7bc8('0x23'))](_0x7bc8('0x35'));}if(!_0x368351[_0x7bc8('0xb')]||!_0x368351['data2']){throw new db[(_0x7bc8('0x1c'))][(_0x7bc8('0x23'))](_0x7bc8('0x28'));}_0x3ef113=_0x368351;var _0x1a5250=[];_0x3c53c3[_0x7bc8('0x43')](function(_0x26f2a8){_0x1a5250['push'](checkTranscribeJob(_0x26f2a8,_0x163fed,_0x3ef113));});return BPromise[_0x7bc8('0x44')](_0x1a5250);})[_0x7bc8('0x36')](function(_0xa2d005){if(_0xa2d005){if(!_0xa2d005[_0x7bc8('0x37')]||_0xa2d005['name']!==_0x7bc8('0x38')){logger[_0x7bc8('0x39')](util['inspect'](_0xa2d005,{'showHidden':![],'depth':null}));}}});}exports['start']=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};