Built motion from commit (unavailable).|2.5.9
[motion2.git] / server / services / agi / scripts / index.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 _0x5ced=['base64','then','chmodSync','777','split','https://texttospeech.googleapis.com/v1/','?key=','ssml','input','voice','audioConfig','MP3','text:synthesize','POST','resolve','from','writeFile','googleCloudTTS\x20path','googleTTS','.mp3','goggleTTS\x20path','googleASR','uri','results','map','transcript','alternatives','confidence','join','googleASR\x20transcription','googleASR\x20confidence','name','message','googleDialogflow','textRequest','stringify','result','action','actionIncomplete','fulfillment','speech','score','status','code','endConversation','replace','SessionsClient','sessionPath','detectIntent','length','Dialogflow\x20V2\x20response:','queryResult','allRequiredParamsPresent','diagnosticInfo','fields','boolValue','intent','isFallback','languageCode','queryText','responseId','fulfillmentText','asr','Tilde\x20ASR\x20confidence','awsPolly','awsLex','lex','ispeechTTS','%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3','ispeechASR','format','%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s','model=%s','freeform=3','sestekNDA','text','channelData','CustomActionData','AudioFromTts','Data','dirName','bluebird','dialogflow','http','md5','path','querystring','randomstring','sox','google-tts-api','url','parse','util','./aws','./google','./sestek','./tilde','../../../config/logger','agi','https://api.ispeech.org/api/rest','get','statusCode','request\x20to\x20','\x20failed,\x20status\x20code\x20=\x20','statusMessage','createWriteStream','finish','info','finish\x20download\x20file','error','unlink','download\x20error','pipe','https:','host','WHAT_EVER','data','end','transcode','finish\x20to\x20convert','tmp','generate','.wav'];(function(_0x126558,_0x143c9a){var _0x1f6d14=function(_0x2b0eea){while(--_0x2b0eea){_0x126558['push'](_0x126558['shift']());}};_0x1f6d14(++_0x143c9a);}(_0x5ced,0x1c2));var _0xd5ce=function(_0x41cdfb,_0x47596e){_0x41cdfb=_0x41cdfb-0x0;var _0x4fc7db=_0x5ced[_0x41cdfb];return _0x4fc7db;};'use strict';var apiai=require('apiai-promise');var BPromise=require(_0xd5ce('0x0'));var dialogflow=require(_0xd5ce('0x1'));var fs=require('fs');var http=require(_0xd5ce('0x2'));var https=require('https');var md5=require(_0xd5ce('0x3'));var path=require(_0xd5ce('0x4'));var querystring=require(_0xd5ce('0x5'));var rp=require('request-promise');var rs=require(_0xd5ce('0x6'));var sox=require(_0xd5ce('0x7'));var tts=require(_0xd5ce('0x8'));var urlParse=require(_0xd5ce('0x9'))[_0xd5ce('0xa')];var util=require(_0xd5ce('0xb'));var aws=require(_0xd5ce('0xc'));var google=require(_0xd5ce('0xd'));var sestek=require(_0xd5ce('0xe'));var tilde=require(_0xd5ce('0xf'));var logger=require(_0xd5ce('0x10'))(_0xd5ce('0x11'));var ISPEECH_API=_0xd5ce('0x12');function downloadFile(_0x3efce5,_0x23639c){return new BPromise(function(_0xc3d663,_0x56cf88){var _0x1cc6b1=urlParse(_0x3efce5);var _0x33a386=_0x1cc6b1['protocol']==='https:'?https:http;var _0x8c4d74={'host':_0x1cc6b1['host'],'path':_0x1cc6b1[_0xd5ce('0x4')],'headers':{'user-agent':'WHAT_EVER'}};_0x33a386[_0xd5ce('0x13')](_0x8c4d74,function(_0x238022){if(_0x238022[_0xd5ce('0x14')]!==0xc8){logger['error'](_0xd5ce('0x15')+_0x3efce5+_0xd5ce('0x16')+_0x238022[_0xd5ce('0x14')]+'\x20('+_0x238022[_0xd5ce('0x17')]+')');_0x56cf88(new Error('request\x20to\x20'+_0x3efce5+'\x20failed,\x20status\x20code\x20=\x20'+_0x238022['statusCode']+'\x20('+_0x238022[_0xd5ce('0x17')]+')'));return;}var _0x4ef7ac=fs[_0xd5ce('0x18')](_0x23639c);_0x4ef7ac['on'](_0xd5ce('0x19'),function(){logger[_0xd5ce('0x1a')](_0xd5ce('0x1b'));_0x4ef7ac['close'](_0xc3d663);});_0x4ef7ac['on'](_0xd5ce('0x1c'),function(_0x407a90){fs[_0xd5ce('0x1d')](_0x23639c);logger[_0xd5ce('0x1c')](_0xd5ce('0x1e'),_0x407a90);_0x56cf88(_0x407a90);});_0x238022[_0xd5ce('0x1f')](_0x4ef7ac);})['on'](_0xd5ce('0x1c'),function(_0x49078d){logger[_0xd5ce('0x1c')](_0x49078d);_0x56cf88(_0x49078d);})['end']();});}function uploadFile(_0x2a14ed){return new BPromise(function(_0x5e89cc,_0x3113db){var _0x4095ae=urlParse(_0x2a14ed);var _0x58261c=_0x4095ae['protocol']===_0xd5ce('0x20')?https:http;var _0x375858={'host':_0x4095ae[_0xd5ce('0x21')],'path':_0x4095ae[_0xd5ce('0x4')],'headers':{'user-agent':_0xd5ce('0x22')}};_0x58261c[_0xd5ce('0x13')](_0x375858,function(_0x219587){if(_0x219587['statusCode']!==0xc8){_0x3113db(new Error(_0xd5ce('0x15')+_0x2a14ed+'\x20failed,\x20status\x20code\x20=\x20'+_0x219587[_0xd5ce('0x14')]+'\x20('+_0x219587['statusMessage']+')'));return;}var _0x35c449='';_0x219587['on'](_0xd5ce('0x23'),function(_0x303866){_0x35c449+=_0x303866;});_0x219587['on'](_0xd5ce('0x24'),function(){_0x5e89cc(_0x35c449);});})['on'](_0xd5ce('0x1c'),function(_0x83f1ca){_0x3113db(_0x83f1ca);})[_0xd5ce('0x24')]();});}function convertFile(_0x12a933,_0x11333d){return new BPromise(function(_0x11a9ad,_0x32c023){var _0x218b0a=sox[_0xd5ce('0x25')](_0x12a933,_0x11333d,{'sampleRate':0x1f40,'format':'wav','channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x218b0a['on'](_0xd5ce('0x1c'),function(_0x281da0){logger[_0xd5ce('0x1c')]('error\x20convert',_0x281da0);_0x32c023(_0x281da0);});_0x218b0a['on'](_0xd5ce('0x24'),function(){logger['info'](_0xd5ce('0x26'));_0x11a9ad();});_0x218b0a['start']();});}function base64Decode(_0x21c65c,_0x397f4c){var _0x54017d=path['resolve'](__dirname,_0xd5ce('0x27'),rs[_0xd5ce('0x28')](0x4)+_0xd5ce('0x29'));fs['writeFileSync'](_0x54017d,_0x21c65c,_0xd5ce('0x2a'));return convertFile(_0x54017d,_0x397f4c)[_0xd5ce('0x2b')](function(){try{fs[_0xd5ce('0x1d')](_0x54017d);fs[_0xd5ce('0x2c')](_0x397f4c,_0xd5ce('0x2d'));}catch(_0x45c6f5){logger['error'](_0x45c6f5);}return _0x397f4c[_0xd5ce('0x2e')]('.')[0x0];});}function base64Encode(_0x34cafd){var _0x336f99=fs['readFileSync'](_0x34cafd);return new Buffer(_0x336f99)['toString'](_0xd5ce('0x2a'));}exports['googleCloudTTS']=function(_0x4b20b6,_0x134556,_0x553f47,_0x4191e9,_0x455aba,_0x390581){var _0x4a3ad6,_0x399659;var _0x225a4b=_0xd5ce('0x2f');var _0x53c33f=_0xd5ce('0x30')+_0x4b20b6;var _0x7df12={};if(_0x134556===_0xd5ce('0x31')){_0x7df12[_0xd5ce('0x32')]={'ssml':_0x553f47};}else{_0x7df12[_0xd5ce('0x32')]={'text':_0x553f47};};_0x7df12[_0xd5ce('0x33')]={'languageCode':_0x4191e9,'ssmlGender':_0x455aba};_0x7df12[_0xd5ce('0x34')]={'audioEncoding':_0xd5ce('0x35'),'sampleRateHertz':0x1f40};var _0x4ba432={'url':_0x225a4b+_0xd5ce('0x36')+_0x53c33f,'method':_0xd5ce('0x37'),'json':!![],'body':_0x7df12};return rp(_0x4ba432)[_0xd5ce('0x2b')](function(_0x2e6adc){return new BPromise(function(_0x5f593b,_0x37904b){_0x4a3ad6=path[_0xd5ce('0x38')](__dirname,_0xd5ce('0x27'),rs[_0xd5ce('0x28')](0x4)+'.mp3');var _0x4734fb=Buffer[_0xd5ce('0x39')](_0x2e6adc['audioContent'],'base64');return fs[_0xd5ce('0x3a')](_0x4a3ad6,_0x4734fb,function(_0xa200ec){_0x37904b(_0xa200ec);},function(_0x4e3c65){fs[_0xd5ce('0x2c')](_0x4a3ad6,'777');_0x5f593b(_0x4e3c65);});});})[_0xd5ce('0x2b')](function(_0x1338de){_0x399659=path[_0xd5ce('0x38')](__dirname,_0xd5ce('0x27'),rs['generate'](0x4)+'.wav');return convertFile(_0x4a3ad6,_0x399659);})[_0xd5ce('0x2b')](function(){try{fs[_0xd5ce('0x1d')](_0x4a3ad6);fs[_0xd5ce('0x2c')](_0x399659,_0xd5ce('0x2d'));}catch(_0xc1e83){logger[_0xd5ce('0x1c')](_0xc1e83);}logger['info'](_0xd5ce('0x3b'),_0x399659[_0xd5ce('0x2e')]('.')[0x0]);return _0x399659[_0xd5ce('0x2e')]('.')[0x0];});};exports[_0xd5ce('0x3c')]=function(_0xd5c862,_0x319159){var _0x4cdf8f,_0xef446b;return tts(_0xd5c862,_0x319159||'en',0x1)[_0xd5ce('0x2b')](function(_0x41a875){logger[_0xd5ce('0x1a')](_0x41a875);_0x4cdf8f=path[_0xd5ce('0x38')](__dirname,_0xd5ce('0x27'),rs[_0xd5ce('0x28')](0x4)+_0xd5ce('0x3d'));return downloadFile(_0x41a875,_0x4cdf8f);})[_0xd5ce('0x2b')](function(){_0xef446b=path[_0xd5ce('0x38')](__dirname,_0xd5ce('0x27'),rs[_0xd5ce('0x28')](0x4)+_0xd5ce('0x29'));return convertFile(_0x4cdf8f,_0xef446b);})[_0xd5ce('0x2b')](function(){try{fs[_0xd5ce('0x1d')](_0x4cdf8f);fs[_0xd5ce('0x2c')](_0xef446b,_0xd5ce('0x2d'));}catch(_0x1ce425){logger['error'](_0x1ce425);}logger['info'](_0xd5ce('0x3e'),_0xef446b[_0xd5ce('0x2e')]('.')[0x0]);return _0xef446b[_0xd5ce('0x2e')]('.')[0x0];});};exports[_0xd5ce('0x3f')]=function(_0x11afb1,_0x5cad5a,_0x5df325){return google['asr'](_0x11afb1,_0x5cad5a,_0x5df325)[_0xd5ce('0x2b')](function(_0x336c81){logger[_0xd5ce('0x1a')](_0x336c81[_0xd5ce('0x40')]);return rp(_0x336c81);})[_0xd5ce('0x2b')](function(_0x44e8b0){var _0x5c8a9e='';var _0x19e240=0x0;try{fs['unlink'](_0x11afb1);}catch(_0x54ff76){logger[_0xd5ce('0x1c')](_0x54ff76);}if(_0x44e8b0&&_0x44e8b0[_0xd5ce('0x41')]){_0x5c8a9e=_0x44e8b0[_0xd5ce('0x41')][_0xd5ce('0x42')](function(_0xda4983){return _0xda4983&&_0xda4983['alternatives'][0x0]&&_0xda4983['alternatives'][0x0][_0xd5ce('0x43')]?_0xda4983[_0xd5ce('0x44')][0x0][_0xd5ce('0x43')]:'';})['join']('\x0a');_0x19e240=_0x44e8b0['results'][_0xd5ce('0x42')](function(_0x2abb2c){return _0x2abb2c&&_0x2abb2c[_0xd5ce('0x44')][0x0]&&_0x2abb2c[_0xd5ce('0x44')][0x0][_0xd5ce('0x45')]?_0x2abb2c['alternatives'][0x0]['confidence']:0x0;})[_0xd5ce('0x46')]('\x0a');}logger['info'](_0xd5ce('0x47'),_0x5c8a9e);logger[_0xd5ce('0x1a')](_0xd5ce('0x48'),_0x19e240);return{'transcript':_0x5c8a9e,'confidence':_0x19e240};})['catch'](function(_0x56372a){logger[_0xd5ce('0x1c')]('[%s]\x20%s:%s',_0x56372a[_0xd5ce('0x14')],_0x56372a[_0xd5ce('0x49')],_0x56372a[_0xd5ce('0x4a')]);});};exports[_0xd5ce('0x4b')]=function(_0xd93ef9,_0x2a67ae,_0x5f20fc,_0x271416){var _0x21c45c=apiai(_0x2a67ae,{'language':_0x271416||'en'});return _0x21c45c[_0xd5ce('0x4c')](_0x5f20fc,{'sessionId':md5(_0xd93ef9)})[_0xd5ce('0x2b')](function(_0x3fc948){logger[_0xd5ce('0x1a')](JSON[_0xd5ce('0x4d')](_0x3fc948));return{'source':_0x3fc948['result']['source'],'resolvedQuery':_0x3fc948[_0xd5ce('0x4e')]['resolvedQuery'],'action':_0x3fc948[_0xd5ce('0x4e')][_0xd5ce('0x4f')],'actionIncomplete':_0x3fc948['result'][_0xd5ce('0x50')],'speech':_0x3fc948[_0xd5ce('0x4e')][_0xd5ce('0x51')][_0xd5ce('0x52')],'score':_0x3fc948[_0xd5ce('0x4e')][_0xd5ce('0x53')],'statusCode':_0x3fc948[_0xd5ce('0x54')][_0xd5ce('0x55')],'endConversation':_0x3fc948['result']['metadata'][_0xd5ce('0x56')]||![],'isFallbackIntent':_0x3fc948[_0xd5ce('0x4e')]['metadata']['isFallbackIntent']};});};exports['googleDialogflowV2']=function(_0x474df9,_0x1e7a02,_0x1917fe,_0x267500,_0x25a7ec,_0x26677){var _0x37ea97=_0x267500[_0xd5ce('0x57')](/\\n/g,'\x0a');var _0x33ce4a={'credentials':{'private_key':_0x37ea97,'client_email':_0x1917fe}};var _0x1621c2=new dialogflow[(_0xd5ce('0x58'))](_0x33ce4a);var _0x2b2ce6=_0x1621c2[_0xd5ce('0x59')](_0x1e7a02,md5(_0x474df9));var _0x29ead5={'session':_0x2b2ce6,'queryInput':{'text':{'text':_0x25a7ec,'languageCode':_0x26677}}};return _0x1621c2[_0xd5ce('0x5a')](_0x29ead5)[_0xd5ce('0x2b')](function(_0x596d5f){if(_0x596d5f&&_0x596d5f[_0xd5ce('0x5b')]){logger['info'](_0xd5ce('0x5c'),JSON['stringify'](_0x596d5f));var _0x391ff8=_0x596d5f[0x0];if(_0x391ff8){var _0x4393f6={'action':_0x391ff8[_0xd5ce('0x5d')]['action'],'allRequiredParamsPresent':_0x391ff8[_0xd5ce('0x5d')][_0xd5ce('0x5e')],'endConversation':_0x391ff8[_0xd5ce('0x5d')][_0xd5ce('0x5f')]&&_0x391ff8[_0xd5ce('0x5d')][_0xd5ce('0x5f')][_0xd5ce('0x60')]?_0x391ff8[_0xd5ce('0x5d')][_0xd5ce('0x5f')][_0xd5ce('0x60')]['end_conversation'][_0xd5ce('0x61')]:![],'fulfillmentText':_0x391ff8['queryResult']['fulfillmentText'],'intentName':_0x391ff8[_0xd5ce('0x5d')]['intent'][_0xd5ce('0x49')],'intentDisplayName':_0x391ff8[_0xd5ce('0x5d')][_0xd5ce('0x62')]['displayName'],'isFallbackIntent':_0x391ff8[_0xd5ce('0x5d')]['intent'][_0xd5ce('0x63')],'languageCode':_0x391ff8[_0xd5ce('0x5d')][_0xd5ce('0x64')],'queryText':_0x391ff8[_0xd5ce('0x5d')][_0xd5ce('0x65')],'responseId':_0x391ff8[_0xd5ce('0x66')],'score':_0x391ff8[_0xd5ce('0x5d')]['intentDetectionConfidence'],'speech':_0x391ff8[_0xd5ce('0x5d')][_0xd5ce('0x67')],'providerResponse':JSON[_0xd5ce('0x4d')](_0x596d5f)};return _0x4393f6;}}});};exports['tildeASR']=function(_0x2519ed,_0x41c41c,_0x44880b,_0x517a29){return tilde[_0xd5ce('0x68')](_0x2519ed,_0x41c41c,_0x44880b,_0x517a29)[_0xd5ce('0x2b')](function(_0xd98dd1){try{fs['unlink'](_0x2519ed);}catch(_0x627998){logger[_0xd5ce('0x1c')](_0x627998);}logger[_0xd5ce('0x1a')]('Tilde\x20ASR\x20transcription',_0xd98dd1[_0xd5ce('0x43')]);logger['info'](_0xd5ce('0x69'),_0xd98dd1[_0xd5ce('0x45')]);return _0xd98dd1;});};exports[_0xd5ce('0x6a')]=function(_0x28a82b,_0x7a301e,_0x5953a5,_0xc247dc,_0x290d47,_0x41d977){var _0x43e682=path[_0xd5ce('0x38')](__dirname,_0xd5ce('0x27'),rs[_0xd5ce('0x28')](0x4)+_0xd5ce('0x3d'));var _0x278026;return aws['polly'](_0x28a82b,_0x7a301e,_0x5953a5,_0xc247dc,_0x290d47,_0x41d977,_0x43e682)[_0xd5ce('0x2b')](function(){_0x278026=path[_0xd5ce('0x38')](__dirname,_0xd5ce('0x27'),rs[_0xd5ce('0x28')](0x4)+_0xd5ce('0x29'));return convertFile(_0x43e682,_0x278026);})[_0xd5ce('0x2b')](function(){try{fs[_0xd5ce('0x1d')](_0x43e682);fs[_0xd5ce('0x2c')](_0x278026,'777');}catch(_0x1322a8){logger[_0xd5ce('0x1c')](_0x1322a8);}return _0x278026[_0xd5ce('0x2e')]('.')[0x0];});};exports[_0xd5ce('0x6b')]=function(_0x148d77,_0xbc4dfa,_0x14d3ad,_0x51b5d6,_0x18eca7,_0x239319){return aws[_0xd5ce('0x6c')](_0x148d77,_0xbc4dfa,_0x14d3ad,_0x51b5d6,_0x18eca7,_0x239319)[_0xd5ce('0x2b')](function(_0x29cca3){logger['info'](JSON['stringify'](_0x29cca3));return _0x29cca3;});};exports[_0xd5ce('0x6d')]=function(_0x9cba2e,_0x205601,_0x3f36b5,_0x4447dc){var _0x6bc51d=util['format'](_0xd5ce('0x6e'),ISPEECH_API,_0x9cba2e,encodeURIComponent(_0x205601),_0x3f36b5,_0x4447dc);var _0x3a4f74=path[_0xd5ce('0x38')](__dirname,'tmp',rs[_0xd5ce('0x28')](0x4)+'.mp3');var _0x252256;return downloadFile(_0x6bc51d,_0x3a4f74)['then'](function(){_0x252256=path[_0xd5ce('0x38')](__dirname,_0xd5ce('0x27'),rs['generate'](0x4)+'.wav');return convertFile(_0x3a4f74,_0x252256);})[_0xd5ce('0x2b')](function(){try{fs[_0xd5ce('0x1d')](_0x3a4f74);fs[_0xd5ce('0x2c')](_0x252256,_0xd5ce('0x2d'));}catch(_0x3b5b3a){logger[_0xd5ce('0x1c')](_0x3b5b3a);}return _0x252256[_0xd5ce('0x2e')]('.')[0x0];});};exports[_0xd5ce('0x6f')]=function(_0x16273b,_0x59c6be,_0x18e7a1,_0x34312c){var _0x4a2bc5=util[_0xd5ce('0x70')](_0xd5ce('0x71'),ISPEECH_API,_0x59c6be,_0x18e7a1,base64Encode(_0x16273b),_0x34312c?util[_0xd5ce('0x70')](_0xd5ce('0x72'),encodeURIComponent(_0x34312c)):_0xd5ce('0x73'));return uploadFile(_0x4a2bc5)[_0xd5ce('0x2b')](function(_0x594b23){return querystring[_0xd5ce('0xa')](_0x594b23);});};exports[_0xd5ce('0x74')]=function(_0x1076bb,_0x1bdb4d){return sestek['nda'](_0x1076bb,_0x1bdb4d)[_0xd5ce('0x2b')](function(_0x21c835){logger[_0xd5ce('0x1a')](JSON[_0xd5ce('0x4d')](_0x21c835));var _0x570bd3={'speech':_0x21c835[_0xd5ce('0x75')],'action':_0x21c835[_0xd5ce('0x76')]?_0x21c835[_0xd5ce('0x76')]['CustomAction']:undefined,'actiondata':_0x21c835[_0xd5ce('0x76')]?_0x21c835['channelData'][_0xd5ce('0x77')]:undefined};if(_0x21c835[_0xd5ce('0x76')]&&_0x21c835[_0xd5ce('0x76')][_0xd5ce('0x78')]){return base64Decode(_0x21c835[_0xd5ce('0x76')][_0xd5ce('0x78')][_0xd5ce('0x79')],path['resolve'](__dirname,_0xd5ce('0x27'),rs[_0xd5ce('0x28')](0x4)+_0xd5ce('0x29')))[_0xd5ce('0x2b')](function(_0x2c6bd7){_0x570bd3['audiofile']=_0x2c6bd7;return _0x570bd3;});}return _0x570bd3;});};exports[_0xd5ce('0x7a')]=function(){return __dirname;};