5173ac12b1bcd93d6748ce48f8640c8875eb7041
[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 _0x4fa3=['voice','audioConfig','MP3','text:synthesize','POST','generate','audioContent','writeFile','777','googleCloudTTS\x20path','split','googleTTS','stringify','jQ1olc','null','slice','parse\x20response\x20failed:\x0a','length','text\x20length\x20limit\x20reached','lang\x20\x22','\x22\x20might\x20not\x20exist','.mp3','unlink','goggleTTS\x20path','googleASR','uri','results','map','alternatives','transcript','confidence','join','googleASR\x20transcription','googleASR\x20confidence','catch','[%s]\x20%s:%s','name','message','textRequest','result','resolvedQuery','action','actionIncomplete','fulfillment','speech','status','metadata','endConversation','isFallbackIntent','googleDialogflowV2','replace','SessionsClient','queryResult','allRequiredParamsPresent','diagnosticInfo','fields','end_conversation','boolValue','fulfillmentText','intent','displayName','responseId','intentDetectionConfidence','tildeASR','Tilde\x20ASR\x20transcription','Tilde\x20ASR\x20confidence','awsPolly','polly','lex','format','%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3','ispeechASR','%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s','model=%s','freeform=3','sestekNDA','nda','text','channelData','CustomActionData','AudioFromTts','dirName','apiai-promise','http','https','path','querystring','request-promise','sox','google-tts-api','url','parse','util','./aws','./google','./sestek','../../../config/logger','agi','https://api.ispeech.org/api/rest','protocol','https:','host','WHAT_EVER','statusCode','\x20failed,\x20status\x20code\x20=\x20','statusMessage','createWriteStream','finish','info','finish\x20download\x20file','close','error','download\x20error','end','get','request\x20to\x20','data','transcode','wav','finish\x20to\x20convert','start','resolve','tmp','.wav','writeFileSync','base64','then','chmodSync','readFileSync','toString','?key=','ssml','input'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x4fa3,0x15c));var _0x34fa=function(_0x42ab43,_0xb38833){_0x42ab43=_0x42ab43-0x0;var _0xf1ca33=_0x4fa3[_0x42ab43];return _0xf1ca33;};'use strict';var apiai=require(_0x34fa('0x0'));var BPromise=require('bluebird');var dialogflow=require('dialogflow');var fs=require('fs');var http=require(_0x34fa('0x1'));var https=require(_0x34fa('0x2'));var md5=require('md5');var path=require(_0x34fa('0x3'));var querystring=require(_0x34fa('0x4'));var rp=require(_0x34fa('0x5'));var rs=require('randomstring');var sox=require(_0x34fa('0x6'));var tts=require(_0x34fa('0x7'));var urlParse=require(_0x34fa('0x8'))[_0x34fa('0x9')];var util=require(_0x34fa('0xa'));var aws=require(_0x34fa('0xb'));var google=require(_0x34fa('0xc'));var sestek=require(_0x34fa('0xd'));var tilde=require('./tilde');var logger=require(_0x34fa('0xe'))(_0x34fa('0xf'));var ISPEECH_API=_0x34fa('0x10');function downloadFile(_0x1187c0,_0x3b124a){return new BPromise(function(_0x521615,_0x4dd305){var _0x16be0e=urlParse(_0x1187c0);var _0x493819=_0x16be0e[_0x34fa('0x11')]===_0x34fa('0x12')?https:http;var _0x35fa86={'host':_0x16be0e[_0x34fa('0x13')],'path':_0x16be0e[_0x34fa('0x3')],'headers':{'user-agent':_0x34fa('0x14')}};_0x493819['get'](_0x35fa86,function(_0x4963da){if(_0x4963da[_0x34fa('0x15')]!==0xc8){logger['error']('request\x20to\x20'+_0x1187c0+_0x34fa('0x16')+_0x4963da[_0x34fa('0x15')]+'\x20('+_0x4963da['statusMessage']+')');_0x4dd305(new Error('request\x20to\x20'+_0x1187c0+_0x34fa('0x16')+_0x4963da[_0x34fa('0x15')]+'\x20('+_0x4963da[_0x34fa('0x17')]+')'));return;}var _0x4437f4=fs[_0x34fa('0x18')](_0x3b124a);_0x4437f4['on'](_0x34fa('0x19'),function(){logger[_0x34fa('0x1a')](_0x34fa('0x1b'));_0x4437f4[_0x34fa('0x1c')](_0x521615);});_0x4437f4['on'](_0x34fa('0x1d'),function(_0x2533d4){fs['unlink'](_0x3b124a);logger[_0x34fa('0x1d')](_0x34fa('0x1e'),_0x2533d4);_0x4dd305(_0x2533d4);});_0x4963da['pipe'](_0x4437f4);})['on']('error',function(_0x107c4c){logger[_0x34fa('0x1d')](_0x107c4c);_0x4dd305(_0x107c4c);})[_0x34fa('0x1f')]();});}function uploadFile(_0x342e14){return new BPromise(function(_0x43c335,_0x63b801){var _0x4731bb=urlParse(_0x342e14);var _0xb37bfc=_0x4731bb[_0x34fa('0x11')]===_0x34fa('0x12')?https:http;var _0x38150f={'host':_0x4731bb[_0x34fa('0x13')],'path':_0x4731bb[_0x34fa('0x3')],'headers':{'user-agent':'WHAT_EVER'}};_0xb37bfc[_0x34fa('0x20')](_0x38150f,function(_0x54c5e4){if(_0x54c5e4[_0x34fa('0x15')]!==0xc8){_0x63b801(new Error(_0x34fa('0x21')+_0x342e14+_0x34fa('0x16')+_0x54c5e4[_0x34fa('0x15')]+'\x20('+_0x54c5e4['statusMessage']+')'));return;}var _0x3b1e85='';_0x54c5e4['on'](_0x34fa('0x22'),function(_0x3f3492){_0x3b1e85+=_0x3f3492;});_0x54c5e4['on'](_0x34fa('0x1f'),function(){_0x43c335(_0x3b1e85);});})['on']('error',function(_0x742c7c){_0x63b801(_0x742c7c);})[_0x34fa('0x1f')]();});}function convertFile(_0x9a34a9,_0x5519f8){return new BPromise(function(_0x480b47,_0x47421a){var _0x107f1f=sox[_0x34fa('0x23')](_0x9a34a9,_0x5519f8,{'sampleRate':0x1f40,'format':_0x34fa('0x24'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x107f1f['on'](_0x34fa('0x1d'),function(_0x3c8879){logger[_0x34fa('0x1d')]('error\x20convert',_0x3c8879);_0x47421a(_0x3c8879);});_0x107f1f['on'](_0x34fa('0x1f'),function(){logger[_0x34fa('0x1a')](_0x34fa('0x25'));_0x480b47();});_0x107f1f[_0x34fa('0x26')]();});}function base64Decode(_0x31e8b5,_0x142ff7){var _0x52a8e5=path[_0x34fa('0x27')](__dirname,_0x34fa('0x28'),rs['generate'](0x4)+_0x34fa('0x29'));fs[_0x34fa('0x2a')](_0x52a8e5,_0x31e8b5,_0x34fa('0x2b'));return convertFile(_0x52a8e5,_0x142ff7)[_0x34fa('0x2c')](function(){try{fs['unlink'](_0x52a8e5);fs[_0x34fa('0x2d')](_0x142ff7,'777');}catch(_0x46367b){logger[_0x34fa('0x1d')](_0x46367b);}return _0x142ff7['split']('.')[0x0];});}function base64Encode(_0x20da64){var _0x4e1504=fs[_0x34fa('0x2e')](_0x20da64);return new Buffer(_0x4e1504)[_0x34fa('0x2f')](_0x34fa('0x2b'));}exports['googleCloudTTS']=function(_0x63077,_0x4b40ce,_0x4847fd,_0x157fe6,_0xdd7a18,_0x1fae5c){var _0x4a3d13,_0x2307f6;var _0x4176be='https://texttospeech.googleapis.com/v1/';var _0x5418fe=_0x34fa('0x30')+_0x63077;var _0xbf430b={};if(_0x4b40ce===_0x34fa('0x31')){_0xbf430b[_0x34fa('0x32')]={'ssml':_0x4847fd};}else{_0xbf430b[_0x34fa('0x32')]={'text':_0x4847fd};};_0xbf430b[_0x34fa('0x33')]={'languageCode':_0x157fe6,'ssmlGender':_0xdd7a18};_0xbf430b[_0x34fa('0x34')]={'audioEncoding':_0x34fa('0x35'),'sampleRateHertz':0x1f40};var _0x5349df={'url':_0x4176be+_0x34fa('0x36')+_0x5418fe,'method':_0x34fa('0x37'),'json':!![],'body':_0xbf430b};return rp(_0x5349df)[_0x34fa('0x2c')](function(_0x162574){return new BPromise(function(_0x321ef8,_0xeba204){_0x4a3d13=path['resolve'](__dirname,'tmp',rs[_0x34fa('0x38')](0x4)+'.mp3');var _0x536fbf=Buffer['from'](_0x162574[_0x34fa('0x39')],_0x34fa('0x2b'));return fs[_0x34fa('0x3a')](_0x4a3d13,_0x536fbf,function(_0x2d26b1){_0xeba204(_0x2d26b1);},function(_0x6be579){fs[_0x34fa('0x2d')](_0x4a3d13,_0x34fa('0x3b'));_0x321ef8(_0x6be579);});});})[_0x34fa('0x2c')](function(_0x404f7c){_0x2307f6=path[_0x34fa('0x27')](__dirname,_0x34fa('0x28'),rs[_0x34fa('0x38')](0x4)+_0x34fa('0x29'));return convertFile(_0x4a3d13,_0x2307f6);})[_0x34fa('0x2c')](function(){try{fs['unlink'](_0x4a3d13);fs[_0x34fa('0x2d')](_0x2307f6,_0x34fa('0x3b'));}catch(_0x3432ea){logger[_0x34fa('0x1d')](_0x3432ea);}logger[_0x34fa('0x1a')](_0x34fa('0x3c'),_0x2307f6[_0x34fa('0x3d')]('.')[0x0]);return _0x2307f6[_0x34fa('0x3d')]('.')[0x0];});};exports[_0x34fa('0x3e')]=function(_0xb91505,_0x219b37){var _0x50334a='https://translate.google.com/_/TranslateWebserverUi/data/batchexecute';var _0x1dcb30,_0x4166bd;var _0x350fbd;var _0x2bdecd={'encoding':'utf8','method':_0x34fa('0x37'),'timeout':0x2710,'url':_0x50334a,'headers':{'Content-Type':'application/x-www-form-urlencoded'},'body':'f.req='+encodeURIComponent(JSON[_0x34fa('0x3f')]([[[_0x34fa('0x40'),JSON[_0x34fa('0x3f')]([_0xb91505,_0x219b37||'en',![],_0x34fa('0x41')]),null,'generic']]]))};return rp(_0x2bdecd)['then'](function(_0x439ed9){try{_0x350fbd=eval(_0x439ed9[_0x34fa('0x42')](0x5))[0x0][0x2];}catch(_0x28158){throw new Error(_0x34fa('0x43')+_0x439ed9['data']);}if(!_0x350fbd){if(_0xb91505[_0x34fa('0x44')]>0xc8){throw new Error(_0x34fa('0x45'));}else{throw new Error(_0x34fa('0x46')+_0x219b37+_0x34fa('0x47'));}}try{_0x350fbd=eval(_0x350fbd)[0x0];}catch(_0x12da99){throw new Error(_0x34fa('0x43')+res[_0x34fa('0x22')]);}const _0x2b4a15=_0x350fbd;_0x1dcb30=path[_0x34fa('0x27')](__dirname,_0x34fa('0x28'),rs[_0x34fa('0x38')](0x4)+_0x34fa('0x48'));fs[_0x34fa('0x2a')](_0x1dcb30,_0x350fbd,{'encoding':_0x34fa('0x2b')});_0x4166bd=path[_0x34fa('0x27')](__dirname,'tmp',rs['generate'](0x4)+_0x34fa('0x29'));return convertFile(_0x1dcb30,_0x4166bd);})[_0x34fa('0x2c')](function(){try{fs[_0x34fa('0x49')](_0x1dcb30);fs[_0x34fa('0x2d')](_0x4166bd,'777');}catch(_0x1fa86d){logger['error'](_0x1fa86d);}logger[_0x34fa('0x1a')](_0x34fa('0x4a'),_0x4166bd['split']('.')[0x0]);return _0x4166bd[_0x34fa('0x3d')]('.')[0x0];});};exports[_0x34fa('0x4b')]=function(_0x24a1c7,_0x3c14de,_0x1c96fb){return google['asr'](_0x24a1c7,_0x3c14de,_0x1c96fb)[_0x34fa('0x2c')](function(_0x24c8eb){logger[_0x34fa('0x1a')](_0x24c8eb[_0x34fa('0x4c')]);return rp(_0x24c8eb);})[_0x34fa('0x2c')](function(_0x135e4b){var _0x34ad85='';var _0x534024=0x0;try{fs[_0x34fa('0x49')](_0x24a1c7);}catch(_0x6d8464){logger['error'](_0x6d8464);}if(_0x135e4b&&_0x135e4b['results']){_0x34ad85=_0x135e4b[_0x34fa('0x4d')][_0x34fa('0x4e')](function(_0x1b6f6b){return _0x1b6f6b&&_0x1b6f6b[_0x34fa('0x4f')][0x0]&&_0x1b6f6b['alternatives'][0x0][_0x34fa('0x50')]?_0x1b6f6b[_0x34fa('0x4f')][0x0][_0x34fa('0x50')]:'';})['join']('\x0a');_0x534024=_0x135e4b[_0x34fa('0x4d')][_0x34fa('0x4e')](function(_0x5bbc08){return _0x5bbc08&&_0x5bbc08[_0x34fa('0x4f')][0x0]&&_0x5bbc08[_0x34fa('0x4f')][0x0]['confidence']?_0x5bbc08['alternatives'][0x0][_0x34fa('0x51')]:0x0;})[_0x34fa('0x52')]('\x0a');}logger[_0x34fa('0x1a')](_0x34fa('0x53'),_0x34ad85);logger[_0x34fa('0x1a')](_0x34fa('0x54'),_0x534024);return{'transcript':_0x34ad85,'confidence':_0x534024};})[_0x34fa('0x55')](function(_0x18e04a){logger[_0x34fa('0x1d')](_0x34fa('0x56'),_0x18e04a['statusCode'],_0x18e04a[_0x34fa('0x57')],_0x18e04a[_0x34fa('0x58')]);});};exports['googleDialogflow']=function(_0x4f162f,_0x3ed23e,_0x55c556,_0x3bb980){var _0x170543=apiai(_0x3ed23e,{'language':_0x3bb980||'en'});return _0x170543[_0x34fa('0x59')](_0x55c556,{'sessionId':md5(_0x4f162f)})[_0x34fa('0x2c')](function(_0x503172){logger[_0x34fa('0x1a')](JSON['stringify'](_0x503172));return{'source':_0x503172['result']['source'],'resolvedQuery':_0x503172[_0x34fa('0x5a')][_0x34fa('0x5b')],'action':_0x503172[_0x34fa('0x5a')][_0x34fa('0x5c')],'actionIncomplete':_0x503172[_0x34fa('0x5a')][_0x34fa('0x5d')],'speech':_0x503172[_0x34fa('0x5a')][_0x34fa('0x5e')][_0x34fa('0x5f')],'score':_0x503172['result']['score'],'statusCode':_0x503172[_0x34fa('0x60')]['code'],'endConversation':_0x503172[_0x34fa('0x5a')][_0x34fa('0x61')][_0x34fa('0x62')]||![],'isFallbackIntent':_0x503172[_0x34fa('0x5a')][_0x34fa('0x61')][_0x34fa('0x63')]};});};exports[_0x34fa('0x64')]=function(_0x32d26b,_0x3c08b2,_0x10659b,_0x5e4352,_0x239e2f,_0x466e8a){var _0x41f4ea=_0x5e4352[_0x34fa('0x65')](/\\n/g,'\x0a');var _0x1f05d={'credentials':{'private_key':_0x41f4ea,'client_email':_0x10659b}};var _0x131dcd=new dialogflow[(_0x34fa('0x66'))](_0x1f05d);var _0x4b0442=_0x131dcd['sessionPath'](_0x3c08b2,md5(_0x32d26b));var _0x8709d1={'session':_0x4b0442,'queryInput':{'text':{'text':_0x239e2f,'languageCode':_0x466e8a}}};return _0x131dcd['detectIntent'](_0x8709d1)[_0x34fa('0x2c')](function(_0x2f0944){if(_0x2f0944&&_0x2f0944[_0x34fa('0x44')]){logger[_0x34fa('0x1a')]('Dialogflow\x20V2\x20response:',JSON[_0x34fa('0x3f')](_0x2f0944));var _0x320b1f=_0x2f0944[0x0];if(_0x320b1f){var _0x1429e6={'action':_0x320b1f['queryResult']['action'],'allRequiredParamsPresent':_0x320b1f[_0x34fa('0x67')][_0x34fa('0x68')],'endConversation':_0x320b1f['queryResult']['diagnosticInfo']&&_0x320b1f[_0x34fa('0x67')][_0x34fa('0x69')][_0x34fa('0x6a')]?_0x320b1f['queryResult'][_0x34fa('0x69')][_0x34fa('0x6a')][_0x34fa('0x6b')][_0x34fa('0x6c')]:![],'fulfillmentText':_0x320b1f[_0x34fa('0x67')][_0x34fa('0x6d')],'intentName':_0x320b1f[_0x34fa('0x67')][_0x34fa('0x6e')][_0x34fa('0x57')],'intentDisplayName':_0x320b1f['queryResult'][_0x34fa('0x6e')][_0x34fa('0x6f')],'isFallbackIntent':_0x320b1f['queryResult'][_0x34fa('0x6e')]['isFallback'],'languageCode':_0x320b1f[_0x34fa('0x67')]['languageCode'],'queryText':_0x320b1f['queryResult']['queryText'],'responseId':_0x320b1f[_0x34fa('0x70')],'score':_0x320b1f[_0x34fa('0x67')][_0x34fa('0x71')],'speech':_0x320b1f[_0x34fa('0x67')][_0x34fa('0x6d')],'providerResponse':JSON[_0x34fa('0x3f')](_0x2f0944)};return _0x1429e6;}}});};exports[_0x34fa('0x72')]=function(_0x4e66a8,_0x2e598d,_0x1cb583,_0x117543){return tilde['asr'](_0x4e66a8,_0x2e598d,_0x1cb583,_0x117543)['then'](function(_0x4229ce){try{fs[_0x34fa('0x49')](_0x4e66a8);}catch(_0x446839){logger['error'](_0x446839);}logger[_0x34fa('0x1a')](_0x34fa('0x73'),_0x4229ce[_0x34fa('0x50')]);logger[_0x34fa('0x1a')](_0x34fa('0x74'),_0x4229ce[_0x34fa('0x51')]);return _0x4229ce;});};exports[_0x34fa('0x75')]=function(_0x3a4771,_0x4d2931,_0x196eb7,_0x450eaf,_0x350948,_0xec09fb){var _0x4890aa=path[_0x34fa('0x27')](__dirname,_0x34fa('0x28'),rs[_0x34fa('0x38')](0x4)+'.mp3');var _0x3f1e75;return aws[_0x34fa('0x76')](_0x3a4771,_0x4d2931,_0x196eb7,_0x450eaf,_0x350948,_0xec09fb,_0x4890aa)[_0x34fa('0x2c')](function(){_0x3f1e75=path['resolve'](__dirname,'tmp',rs[_0x34fa('0x38')](0x4)+_0x34fa('0x29'));return convertFile(_0x4890aa,_0x3f1e75);})[_0x34fa('0x2c')](function(){try{fs[_0x34fa('0x49')](_0x4890aa);fs[_0x34fa('0x2d')](_0x3f1e75,_0x34fa('0x3b'));}catch(_0x225532){logger[_0x34fa('0x1d')](_0x225532);}return _0x3f1e75[_0x34fa('0x3d')]('.')[0x0];});};exports['awsLex']=function(_0x1bc7ad,_0xd7837b,_0x7af71,_0x349224,_0x5bc5bc,_0x5cfefd){return aws[_0x34fa('0x77')](_0x1bc7ad,_0xd7837b,_0x7af71,_0x349224,_0x5bc5bc,_0x5cfefd)[_0x34fa('0x2c')](function(_0x44ba3c){logger[_0x34fa('0x1a')](JSON[_0x34fa('0x3f')](_0x44ba3c));return _0x44ba3c;});};exports['ispeechTTS']=function(_0x3f54eb,_0x4a9cf6,_0x3c6708,_0x28b290){var _0x450caa=util[_0x34fa('0x78')](_0x34fa('0x79'),ISPEECH_API,_0x3f54eb,encodeURIComponent(_0x4a9cf6),_0x3c6708,_0x28b290);var _0x59f431=path[_0x34fa('0x27')](__dirname,_0x34fa('0x28'),rs['generate'](0x4)+_0x34fa('0x48'));var _0x41e2c0;return downloadFile(_0x450caa,_0x59f431)['then'](function(){_0x41e2c0=path[_0x34fa('0x27')](__dirname,_0x34fa('0x28'),rs['generate'](0x4)+'.wav');return convertFile(_0x59f431,_0x41e2c0);})['then'](function(){try{fs['unlink'](_0x59f431);fs['chmodSync'](_0x41e2c0,'777');}catch(_0x4299cd){logger[_0x34fa('0x1d')](_0x4299cd);}return _0x41e2c0[_0x34fa('0x3d')]('.')[0x0];});};exports[_0x34fa('0x7a')]=function(_0x5a0b24,_0x13d894,_0xc87f1e,_0x20e1a6){var _0x3a213f=util[_0x34fa('0x78')](_0x34fa('0x7b'),ISPEECH_API,_0x13d894,_0xc87f1e,base64Encode(_0x5a0b24),_0x20e1a6?util[_0x34fa('0x78')](_0x34fa('0x7c'),encodeURIComponent(_0x20e1a6)):_0x34fa('0x7d'));return uploadFile(_0x3a213f)[_0x34fa('0x2c')](function(_0x514b62){return querystring[_0x34fa('0x9')](_0x514b62);});};exports[_0x34fa('0x7e')]=function(_0x30027c,_0x416ebb){return sestek[_0x34fa('0x7f')](_0x30027c,_0x416ebb)[_0x34fa('0x2c')](function(_0x129d0d){logger[_0x34fa('0x1a')](JSON[_0x34fa('0x3f')](_0x129d0d));var _0x30423c={'speech':_0x129d0d[_0x34fa('0x80')],'action':_0x129d0d[_0x34fa('0x81')]?_0x129d0d[_0x34fa('0x81')]['CustomAction']:undefined,'actiondata':_0x129d0d[_0x34fa('0x81')]?_0x129d0d[_0x34fa('0x81')][_0x34fa('0x82')]:undefined};if(_0x129d0d['channelData']&&_0x129d0d['channelData'][_0x34fa('0x83')]){return base64Decode(_0x129d0d['channelData'][_0x34fa('0x83')]['Data'],path[_0x34fa('0x27')](__dirname,'tmp',rs[_0x34fa('0x38')](0x4)+_0x34fa('0x29')))[_0x34fa('0x2c')](function(_0x85e93b){_0x30423c['audiofile']=_0x85e93b;return _0x30423c;});}return _0x30423c;});};exports[_0x34fa('0x84')]=function(){return __dirname;};