cead4a5afee0d910c7d31a8a383128ac419e6e98
[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 _0x2138=['[%s]\x20%s:%s','name','message','googleDialogflow','textRequest','result','source','resolvedQuery','action','actionIncomplete','fulfillment','speech','score','status','code','metadata','endConversation','isFallbackIntent','googleDialogflowV2','SessionsClient','detectIntent','length','Dialogflow\x20V2\x20response:','queryResult','allRequiredParamsPresent','diagnosticInfo','end_conversation','intent','displayName','isFallback','responseId','intentDetectionConfidence','fulfillmentText','tildeASR','asr','Tilde\x20ASR\x20transcription','awsLex','lex','format','%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3','ispeechASR','model=%s','freeform=3','parse','sestekNDA','channelData','CustomActionData','AudioFromTts','Data','dirName','apiai-promise','http','md5','path','querystring','request-promise','randomstring','sox','google-tts-api','util','./aws','./google','agi','https://api.ispeech.org/api/rest','protocol','https:','host','WHAT_EVER','get','statusCode','error','request\x20to\x20','\x20failed,\x20status\x20code\x20=\x20','statusMessage','finish','info','finish\x20download\x20file','close','download\x20error','data','end','transcode','wav','error\x20convert','start','resolve','tmp','generate','then','unlink','chmodSync','777','readFileSync','base64','googleCloudTTS','https://texttospeech.googleapis.com/v1/','?key=','input','audioConfig','POST','.mp3','audioContent','writeFile','.wav','googleCloudTTS\x20path','split','utf8','application/x-www-form-urlencoded','f.req=','stringify','null','parse\x20response\x20failed:\x0a','lang\x20\x22','\x22\x20might\x20not\x20exist','writeFileSync','goggleTTS\x20path','googleASR','uri','alternatives','transcript','results','confidence','join','googleASR\x20transcription','googleASR\x20confidence','catch'];(function(_0xdd1bfd,_0x396da3){var _0x4901ff=function(_0x285a7d){while(--_0x285a7d){_0xdd1bfd['push'](_0xdd1bfd['shift']());}};_0x4901ff(++_0x396da3);}(_0x2138,0x1ac));var _0x8213=function(_0xf8e668,_0x14493b){_0xf8e668=_0xf8e668-0x0;var _0xdf09aa=_0x2138[_0xf8e668];return _0xdf09aa;};'use strict';var apiai=require(_0x8213('0x0'));var BPromise=require('bluebird');var dialogflow=require('dialogflow');var fs=require('fs');var http=require(_0x8213('0x1'));var https=require('https');var md5=require(_0x8213('0x2'));var path=require(_0x8213('0x3'));var querystring=require(_0x8213('0x4'));var rp=require(_0x8213('0x5'));var rs=require(_0x8213('0x6'));var sox=require(_0x8213('0x7'));var tts=require(_0x8213('0x8'));var urlParse=require('url')['parse'];var util=require(_0x8213('0x9'));var aws=require(_0x8213('0xa'));var google=require(_0x8213('0xb'));var sestek=require('./sestek');var tilde=require('./tilde');var logger=require('../../../config/logger')(_0x8213('0xc'));var ISPEECH_API=_0x8213('0xd');function downloadFile(_0x1d4d58,_0x2836fb){return new BPromise(function(_0x3ee780,_0xc795ad){var _0x4a34f4=urlParse(_0x1d4d58);var _0x335633=_0x4a34f4[_0x8213('0xe')]===_0x8213('0xf')?https:http;var _0xb0d405={'host':_0x4a34f4[_0x8213('0x10')],'path':_0x4a34f4[_0x8213('0x3')],'headers':{'user-agent':_0x8213('0x11')}};_0x335633[_0x8213('0x12')](_0xb0d405,function(_0x1526cb){if(_0x1526cb[_0x8213('0x13')]!==0xc8){logger[_0x8213('0x14')](_0x8213('0x15')+_0x1d4d58+_0x8213('0x16')+_0x1526cb[_0x8213('0x13')]+'\x20('+_0x1526cb[_0x8213('0x17')]+')');_0xc795ad(new Error('request\x20to\x20'+_0x1d4d58+_0x8213('0x16')+_0x1526cb['statusCode']+'\x20('+_0x1526cb[_0x8213('0x17')]+')'));return;}var _0x1db499=fs['createWriteStream'](_0x2836fb);_0x1db499['on'](_0x8213('0x18'),function(){logger[_0x8213('0x19')](_0x8213('0x1a'));_0x1db499[_0x8213('0x1b')](_0x3ee780);});_0x1db499['on'](_0x8213('0x14'),function(_0x1b2527){fs['unlink'](_0x2836fb);logger[_0x8213('0x14')](_0x8213('0x1c'),_0x1b2527);_0xc795ad(_0x1b2527);});_0x1526cb['pipe'](_0x1db499);})['on'](_0x8213('0x14'),function(_0x5dab6b){logger['error'](_0x5dab6b);_0xc795ad(_0x5dab6b);})['end']();});}function uploadFile(_0x19a147){return new BPromise(function(_0x605d7,_0x210b67){var _0x17d9c9=urlParse(_0x19a147);var _0x24faff=_0x17d9c9[_0x8213('0xe')]==='https:'?https:http;var _0x1a202c={'host':_0x17d9c9[_0x8213('0x10')],'path':_0x17d9c9['path'],'headers':{'user-agent':'WHAT_EVER'}};_0x24faff[_0x8213('0x12')](_0x1a202c,function(_0x54007b){if(_0x54007b[_0x8213('0x13')]!==0xc8){_0x210b67(new Error(_0x8213('0x15')+_0x19a147+'\x20failed,\x20status\x20code\x20=\x20'+_0x54007b[_0x8213('0x13')]+'\x20('+_0x54007b['statusMessage']+')'));return;}var _0xd25d6b='';_0x54007b['on'](_0x8213('0x1d'),function(_0x4f625f){_0xd25d6b+=_0x4f625f;});_0x54007b['on'](_0x8213('0x1e'),function(){_0x605d7(_0xd25d6b);});})['on'](_0x8213('0x14'),function(_0x1c93d8){_0x210b67(_0x1c93d8);})['end']();});}function convertFile(_0x5e07cd,_0x4a0334){return new BPromise(function(_0x23e6ab,_0x14c46b){var _0x73215f=sox[_0x8213('0x1f')](_0x5e07cd,_0x4a0334,{'sampleRate':0x1f40,'format':_0x8213('0x20'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x73215f['on'](_0x8213('0x14'),function(_0x54db4e){logger[_0x8213('0x14')](_0x8213('0x21'),_0x54db4e);_0x14c46b(_0x54db4e);});_0x73215f['on'](_0x8213('0x1e'),function(){logger[_0x8213('0x19')]('finish\x20to\x20convert');_0x23e6ab();});_0x73215f[_0x8213('0x22')]();});}function base64Decode(_0xac43d6,_0x29b54e){var _0x10d5d4=path[_0x8213('0x23')](__dirname,_0x8213('0x24'),rs[_0x8213('0x25')](0x4)+'.wav');fs['writeFileSync'](_0x10d5d4,_0xac43d6,'base64');return convertFile(_0x10d5d4,_0x29b54e)[_0x8213('0x26')](function(){try{fs[_0x8213('0x27')](_0x10d5d4);fs[_0x8213('0x28')](_0x29b54e,_0x8213('0x29'));}catch(_0x39d298){logger[_0x8213('0x14')](_0x39d298);}return _0x29b54e['split']('.')[0x0];});}function base64Encode(_0x24a72a){var _0x37d535=fs[_0x8213('0x2a')](_0x24a72a);return new Buffer(_0x37d535)['toString'](_0x8213('0x2b'));}exports[_0x8213('0x2c')]=function(_0xc82ef7,_0x518ff2,_0x4c557d,_0x5a66a6,_0x492da1,_0x1efe88){var _0x8f04ab,_0x3f3d0d;var _0x2e54e2=_0x8213('0x2d');var _0x56a379=_0x8213('0x2e')+_0xc82ef7;var _0x46feb2={};if(_0x518ff2==='ssml'){_0x46feb2[_0x8213('0x2f')]={'ssml':_0x4c557d};}else{_0x46feb2['input']={'text':_0x4c557d};};_0x46feb2['voice']={'languageCode':_0x5a66a6,'ssmlGender':_0x492da1};_0x46feb2[_0x8213('0x30')]={'audioEncoding':'MP3','sampleRateHertz':0x1f40};var _0x2c38af={'url':_0x2e54e2+'text:synthesize'+_0x56a379,'method':_0x8213('0x31'),'json':!![],'body':_0x46feb2};return rp(_0x2c38af)['then'](function(_0x1eb256){return new BPromise(function(_0x192e74,_0xb0c02c){_0x8f04ab=path['resolve'](__dirname,_0x8213('0x24'),rs[_0x8213('0x25')](0x4)+_0x8213('0x32'));var _0x3e8ffd=Buffer['from'](_0x1eb256[_0x8213('0x33')],'base64');return fs[_0x8213('0x34')](_0x8f04ab,_0x3e8ffd,function(_0x34e880){_0xb0c02c(_0x34e880);},function(_0x34da31){fs['chmodSync'](_0x8f04ab,_0x8213('0x29'));_0x192e74(_0x34da31);});});})['then'](function(_0x3cc40b){_0x3f3d0d=path['resolve'](__dirname,_0x8213('0x24'),rs[_0x8213('0x25')](0x4)+_0x8213('0x35'));return convertFile(_0x8f04ab,_0x3f3d0d);})[_0x8213('0x26')](function(){try{fs['unlink'](_0x8f04ab);fs[_0x8213('0x28')](_0x3f3d0d,_0x8213('0x29'));}catch(_0x599d77){logger[_0x8213('0x14')](_0x599d77);}logger['info'](_0x8213('0x36'),_0x3f3d0d['split']('.')[0x0]);return _0x3f3d0d[_0x8213('0x37')]('.')[0x0];});};exports['googleTTS']=function(_0x1cf9e6,_0x1bb615){var _0x394068='https://translate.google.com/_/TranslateWebserverUi/data/batchexecute';var _0x4cc656,_0x59cb29;var _0xe19741;var _0x29efb4={'encoding':_0x8213('0x38'),'method':_0x8213('0x31'),'timeout':0x2710,'url':_0x394068,'headers':{'Content-Type':_0x8213('0x39')},'body':_0x8213('0x3a')+encodeURIComponent(JSON[_0x8213('0x3b')]([[['jQ1olc',JSON[_0x8213('0x3b')]([_0x1cf9e6,_0x1bb615||'en',![],_0x8213('0x3c')]),null,'generic']]]))};return rp(_0x29efb4)[_0x8213('0x26')](function(_0x49c153){try{_0xe19741=eval(_0x49c153['slice'](0x5))[0x0][0x2];}catch(_0x1bf385){throw new Error(_0x8213('0x3d')+_0x49c153[_0x8213('0x1d')]);}if(!_0xe19741){if(_0x1cf9e6['length']>0xc8){throw new Error('text\x20length\x20limit\x20reached');}else{throw new Error(_0x8213('0x3e')+_0x1bb615+_0x8213('0x3f'));}}try{_0xe19741=eval(_0xe19741)[0x0];}catch(_0x2c57c7){throw new Error(_0x8213('0x3d')+res[_0x8213('0x1d')]);}const _0x148007=_0xe19741;_0x4cc656=path['resolve'](__dirname,_0x8213('0x24'),rs['generate'](0x4)+_0x8213('0x32'));fs[_0x8213('0x40')](_0x4cc656,_0xe19741,{'encoding':'base64'});_0x59cb29=path[_0x8213('0x23')](__dirname,'tmp',rs[_0x8213('0x25')](0x4)+_0x8213('0x35'));return convertFile(_0x4cc656,_0x59cb29);})[_0x8213('0x26')](function(){try{fs[_0x8213('0x27')](_0x4cc656);fs['chmodSync'](_0x59cb29,_0x8213('0x29'));}catch(_0x19c6f8){logger[_0x8213('0x14')](_0x19c6f8);}logger[_0x8213('0x19')](_0x8213('0x41'),_0x59cb29[_0x8213('0x37')]('.')[0x0]);return _0x59cb29[_0x8213('0x37')]('.')[0x0];});};exports[_0x8213('0x42')]=function(_0xce0ef,_0x54fde5,_0x2f1a9e){return google['asr'](_0xce0ef,_0x54fde5,_0x2f1a9e)[_0x8213('0x26')](function(_0x3033d6){logger['info'](_0x3033d6[_0x8213('0x43')]);return rp(_0x3033d6);})['then'](function(_0x2d839f){var _0x34a14c='';var _0x4bf7d7=0x0;try{fs[_0x8213('0x27')](_0xce0ef);}catch(_0x1fdccd){logger[_0x8213('0x14')](_0x1fdccd);}if(_0x2d839f&&_0x2d839f['results']){_0x34a14c=_0x2d839f['results']['map'](function(_0x1087b5){return _0x1087b5&&_0x1087b5[_0x8213('0x44')][0x0]&&_0x1087b5[_0x8213('0x44')][0x0][_0x8213('0x45')]?_0x1087b5[_0x8213('0x44')][0x0][_0x8213('0x45')]:'';})['join']('\x0a');_0x4bf7d7=_0x2d839f[_0x8213('0x46')]['map'](function(_0x1fc7de){return _0x1fc7de&&_0x1fc7de[_0x8213('0x44')][0x0]&&_0x1fc7de[_0x8213('0x44')][0x0][_0x8213('0x47')]?_0x1fc7de[_0x8213('0x44')][0x0][_0x8213('0x47')]:0x0;})[_0x8213('0x48')]('\x0a');}logger[_0x8213('0x19')](_0x8213('0x49'),_0x34a14c);logger['info'](_0x8213('0x4a'),_0x4bf7d7);return{'transcript':_0x34a14c,'confidence':_0x4bf7d7};})[_0x8213('0x4b')](function(_0x352be7){logger[_0x8213('0x14')](_0x8213('0x4c'),_0x352be7[_0x8213('0x13')],_0x352be7[_0x8213('0x4d')],_0x352be7[_0x8213('0x4e')]);});};exports[_0x8213('0x4f')]=function(_0x5c6d46,_0x2c2c51,_0x36f12d,_0x511c41){var _0x22c53f=apiai(_0x2c2c51,{'language':_0x511c41||'en'});return _0x22c53f[_0x8213('0x50')](_0x36f12d,{'sessionId':md5(_0x5c6d46)})[_0x8213('0x26')](function(_0x3a2632){logger[_0x8213('0x19')](JSON[_0x8213('0x3b')](_0x3a2632));return{'source':_0x3a2632[_0x8213('0x51')][_0x8213('0x52')],'resolvedQuery':_0x3a2632[_0x8213('0x51')][_0x8213('0x53')],'action':_0x3a2632['result'][_0x8213('0x54')],'actionIncomplete':_0x3a2632[_0x8213('0x51')][_0x8213('0x55')],'speech':_0x3a2632[_0x8213('0x51')][_0x8213('0x56')][_0x8213('0x57')],'score':_0x3a2632[_0x8213('0x51')][_0x8213('0x58')],'statusCode':_0x3a2632[_0x8213('0x59')][_0x8213('0x5a')],'endConversation':_0x3a2632[_0x8213('0x51')][_0x8213('0x5b')][_0x8213('0x5c')]||![],'isFallbackIntent':_0x3a2632['result'][_0x8213('0x5b')][_0x8213('0x5d')]};});};exports[_0x8213('0x5e')]=function(_0x39afc9,_0x20173e,_0x451ae8,_0x4edc42,_0x3b8655,_0x498ffb){var _0x2a6125=_0x4edc42['replace'](/\\n/g,'\x0a');var _0x52ae39={'credentials':{'private_key':_0x2a6125,'client_email':_0x451ae8}};var _0x2c5c9b=new dialogflow[(_0x8213('0x5f'))](_0x52ae39);var _0x3f0998=_0x2c5c9b['sessionPath'](_0x20173e,md5(_0x39afc9));var _0x4bc37b={'session':_0x3f0998,'queryInput':{'text':{'text':_0x3b8655,'languageCode':_0x498ffb}}};return _0x2c5c9b[_0x8213('0x60')](_0x4bc37b)['then'](function(_0x43529f){if(_0x43529f&&_0x43529f[_0x8213('0x61')]){logger['info'](_0x8213('0x62'),JSON['stringify'](_0x43529f));var _0x5063ef=_0x43529f[0x0];if(_0x5063ef){var _0x57b1a7={'action':_0x5063ef[_0x8213('0x63')][_0x8213('0x54')],'allRequiredParamsPresent':_0x5063ef[_0x8213('0x63')][_0x8213('0x64')],'endConversation':_0x5063ef[_0x8213('0x63')][_0x8213('0x65')]&&_0x5063ef[_0x8213('0x63')][_0x8213('0x65')]['fields']?_0x5063ef['queryResult']['diagnosticInfo']['fields'][_0x8213('0x66')]['boolValue']:![],'fulfillmentText':_0x5063ef[_0x8213('0x63')]['fulfillmentText'],'intentName':_0x5063ef[_0x8213('0x63')][_0x8213('0x67')][_0x8213('0x4d')],'intentDisplayName':_0x5063ef[_0x8213('0x63')][_0x8213('0x67')][_0x8213('0x68')],'isFallbackIntent':_0x5063ef[_0x8213('0x63')][_0x8213('0x67')][_0x8213('0x69')],'languageCode':_0x5063ef['queryResult']['languageCode'],'queryText':_0x5063ef[_0x8213('0x63')]['queryText'],'responseId':_0x5063ef[_0x8213('0x6a')],'score':_0x5063ef[_0x8213('0x63')][_0x8213('0x6b')],'speech':_0x5063ef[_0x8213('0x63')][_0x8213('0x6c')],'providerResponse':JSON[_0x8213('0x3b')](_0x43529f)};return _0x57b1a7;}}});};exports[_0x8213('0x6d')]=function(_0x40d12d,_0x353737,_0x410459,_0x8b11f6){return tilde[_0x8213('0x6e')](_0x40d12d,_0x353737,_0x410459,_0x8b11f6)[_0x8213('0x26')](function(_0xd65964){try{fs[_0x8213('0x27')](_0x40d12d);}catch(_0xac0529){logger[_0x8213('0x14')](_0xac0529);}logger[_0x8213('0x19')](_0x8213('0x6f'),_0xd65964[_0x8213('0x45')]);logger[_0x8213('0x19')]('Tilde\x20ASR\x20confidence',_0xd65964[_0x8213('0x47')]);return _0xd65964;});};exports['awsPolly']=function(_0x264a45,_0x49ffdc,_0x87d61,_0x3c6be8,_0x5d33ef,_0x4df3bf){var _0x496ba9=path[_0x8213('0x23')](__dirname,_0x8213('0x24'),rs[_0x8213('0x25')](0x4)+_0x8213('0x32'));var _0x252a7f;return aws['polly'](_0x264a45,_0x49ffdc,_0x87d61,_0x3c6be8,_0x5d33ef,_0x4df3bf,_0x496ba9)['then'](function(){_0x252a7f=path[_0x8213('0x23')](__dirname,_0x8213('0x24'),rs['generate'](0x4)+_0x8213('0x35'));return convertFile(_0x496ba9,_0x252a7f);})[_0x8213('0x26')](function(){try{fs['unlink'](_0x496ba9);fs[_0x8213('0x28')](_0x252a7f,_0x8213('0x29'));}catch(_0x1c71b7){logger['error'](_0x1c71b7);}return _0x252a7f['split']('.')[0x0];});};exports[_0x8213('0x70')]=function(_0x433c4f,_0x35f6dc,_0x4b2a49,_0x5ce078,_0x4e93f6,_0x498e92){return aws[_0x8213('0x71')](_0x433c4f,_0x35f6dc,_0x4b2a49,_0x5ce078,_0x4e93f6,_0x498e92)[_0x8213('0x26')](function(_0x232ea0){logger[_0x8213('0x19')](JSON['stringify'](_0x232ea0));return _0x232ea0;});};exports['ispeechTTS']=function(_0x4a9491,_0x5dab75,_0x4b064e,_0x216ad5){var _0x1d802f=util[_0x8213('0x72')](_0x8213('0x73'),ISPEECH_API,_0x4a9491,encodeURIComponent(_0x5dab75),_0x4b064e,_0x216ad5);var _0x54a5ec=path[_0x8213('0x23')](__dirname,'tmp',rs[_0x8213('0x25')](0x4)+_0x8213('0x32'));var _0x350d56;return downloadFile(_0x1d802f,_0x54a5ec)[_0x8213('0x26')](function(){_0x350d56=path['resolve'](__dirname,_0x8213('0x24'),rs[_0x8213('0x25')](0x4)+_0x8213('0x35'));return convertFile(_0x54a5ec,_0x350d56);})[_0x8213('0x26')](function(){try{fs[_0x8213('0x27')](_0x54a5ec);fs[_0x8213('0x28')](_0x350d56,_0x8213('0x29'));}catch(_0x2965f0){logger['error'](_0x2965f0);}return _0x350d56['split']('.')[0x0];});};exports[_0x8213('0x74')]=function(_0x1fbdef,_0x116d21,_0x1d42e6,_0x23be06){var _0xe39572=util[_0x8213('0x72')]('%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s',ISPEECH_API,_0x116d21,_0x1d42e6,base64Encode(_0x1fbdef),_0x23be06?util[_0x8213('0x72')](_0x8213('0x75'),encodeURIComponent(_0x23be06)):_0x8213('0x76'));return uploadFile(_0xe39572)[_0x8213('0x26')](function(_0x3d41bd){return querystring[_0x8213('0x77')](_0x3d41bd);});};exports[_0x8213('0x78')]=function(_0x52a3fb,_0x29ce9c){return sestek['nda'](_0x52a3fb,_0x29ce9c)[_0x8213('0x26')](function(_0x197805){logger[_0x8213('0x19')](JSON[_0x8213('0x3b')](_0x197805));var _0x5a5e32={'speech':_0x197805['text'],'action':_0x197805[_0x8213('0x79')]?_0x197805[_0x8213('0x79')]['CustomAction']:undefined,'actiondata':_0x197805[_0x8213('0x79')]?_0x197805[_0x8213('0x79')][_0x8213('0x7a')]:undefined};if(_0x197805['channelData']&&_0x197805[_0x8213('0x79')][_0x8213('0x7b')]){return base64Decode(_0x197805[_0x8213('0x79')]['AudioFromTts'][_0x8213('0x7c')],path[_0x8213('0x23')](__dirname,'tmp',rs[_0x8213('0x25')](0x4)+_0x8213('0x35')))[_0x8213('0x26')](function(_0x267a60){_0x5a5e32['audiofile']=_0x267a60;return _0x5a5e32;});}return _0x5a5e32;});};exports[_0x8213('0x7d')]=function(){return __dirname;};