45dd1ec85a1a1b45254fec01c39faa72b3c5cdd9
[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 _0x8232=['SessionsClient','detectIntent','Dialogflow\x20V2\x20response:','queryResult','diagnosticInfo','fields','end_conversation','fulfillmentText','intent','displayName','isFallback','languageCode','intentDetectionConfidence','tildeASR','Tilde\x20ASR\x20transcription','Tilde\x20ASR\x20confidence','awsPolly','polly','chmodSync','ispeechTTS','format','ispeechASR','%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s','model=%s','freeform=3','sestekNDA','nda','text','channelData','CustomAction','AudioFromTts','Data','audiofile','dirName','apiai-promise','bluebird','dialogflow','http','https','md5','querystring','randomstring','url','parse','util','./aws','./google','./sestek','./tilde','../../../config/logger','agi','protocol','https:','host','path','WHAT_EVER','get','error','request\x20to\x20','\x20failed,\x20status\x20code\x20=\x20','statusCode','statusMessage','finish','info','finish\x20download\x20file','close','pipe','end','data','transcode','wav','error\x20convert','finish\x20to\x20convert','resolve','tmp','generate','.wav','writeFileSync','base64','then','unlink','777','split','googleCloudTTS','https://texttospeech.googleapis.com/v1/','ssml','input','voice','MP3','text:synthesize','POST','.mp3','audioContent','writeFile','googleCloudTTS\x20path','googleTTS','utf8','application/x-www-form-urlencoded','f.req=','stringify','jQ1olc','null','generic','slice','parse\x20response\x20failed:\x0a','length','text\x20length\x20limit\x20reached','lang\x20\x22','\x22\x20might\x20not\x20exist','goggleTTS\x20path','googleASR','asr','uri','results','transcript','map','alternatives','confidence','googleASR\x20transcription','googleASR\x20confidence','[%s]\x20%s:%s','name','googleDialogflow','textRequest','result','source','action','actionIncomplete','fulfillment','speech','code','metadata','endConversation','isFallbackIntent','googleDialogflowV2','replace'];(function(_0x3649d3,_0x283e04){var _0x44245a=function(_0x569c5a){while(--_0x569c5a){_0x3649d3['push'](_0x3649d3['shift']());}};_0x44245a(++_0x283e04);}(_0x8232,0xaa));var _0x2823=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x8232[_0x14add3];return _0x4a174f;};'use strict';var apiai=require(_0x2823('0x0'));var BPromise=require(_0x2823('0x1'));var dialogflow=require(_0x2823('0x2'));var fs=require('fs');var http=require(_0x2823('0x3'));var https=require(_0x2823('0x4'));var md5=require(_0x2823('0x5'));var path=require('path');var querystring=require(_0x2823('0x6'));var rp=require('request-promise');var rs=require(_0x2823('0x7'));var sox=require('sox');var tts=require('google-tts-api');var urlParse=require(_0x2823('0x8'))[_0x2823('0x9')];var util=require(_0x2823('0xa'));var aws=require(_0x2823('0xb'));var google=require(_0x2823('0xc'));var sestek=require(_0x2823('0xd'));var tilde=require(_0x2823('0xe'));var logger=require(_0x2823('0xf'))(_0x2823('0x10'));var ISPEECH_API='https://api.ispeech.org/api/rest';function downloadFile(_0x47d93a,_0x4d9c92){return new BPromise(function(_0x2b1b8b,_0x40b398){var _0x201b8b=urlParse(_0x47d93a);var _0x2f00ff=_0x201b8b[_0x2823('0x11')]===_0x2823('0x12')?https:http;var _0x24e05e={'host':_0x201b8b[_0x2823('0x13')],'path':_0x201b8b[_0x2823('0x14')],'headers':{'user-agent':_0x2823('0x15')}};_0x2f00ff[_0x2823('0x16')](_0x24e05e,function(_0x3943dc){if(_0x3943dc['statusCode']!==0xc8){logger[_0x2823('0x17')](_0x2823('0x18')+_0x47d93a+_0x2823('0x19')+_0x3943dc[_0x2823('0x1a')]+'\x20('+_0x3943dc[_0x2823('0x1b')]+')');_0x40b398(new Error(_0x2823('0x18')+_0x47d93a+'\x20failed,\x20status\x20code\x20=\x20'+_0x3943dc['statusCode']+'\x20('+_0x3943dc['statusMessage']+')'));return;}var _0x56d3b9=fs['createWriteStream'](_0x4d9c92);_0x56d3b9['on'](_0x2823('0x1c'),function(){logger[_0x2823('0x1d')](_0x2823('0x1e'));_0x56d3b9[_0x2823('0x1f')](_0x2b1b8b);});_0x56d3b9['on']('error',function(_0xe8f93e){fs['unlink'](_0x4d9c92);logger[_0x2823('0x17')]('download\x20error',_0xe8f93e);_0x40b398(_0xe8f93e);});_0x3943dc[_0x2823('0x20')](_0x56d3b9);})['on'](_0x2823('0x17'),function(_0x34455a){logger[_0x2823('0x17')](_0x34455a);_0x40b398(_0x34455a);})[_0x2823('0x21')]();});}function uploadFile(_0x2d13c9){return new BPromise(function(_0x48579c,_0x2d308d){var _0x453a7f=urlParse(_0x2d13c9);var _0x50fc79=_0x453a7f[_0x2823('0x11')]===_0x2823('0x12')?https:http;var _0x127697={'host':_0x453a7f[_0x2823('0x13')],'path':_0x453a7f[_0x2823('0x14')],'headers':{'user-agent':'WHAT_EVER'}};_0x50fc79[_0x2823('0x16')](_0x127697,function(_0x35d5c1){if(_0x35d5c1[_0x2823('0x1a')]!==0xc8){_0x2d308d(new Error(_0x2823('0x18')+_0x2d13c9+_0x2823('0x19')+_0x35d5c1['statusCode']+'\x20('+_0x35d5c1[_0x2823('0x1b')]+')'));return;}var _0x5710d4='';_0x35d5c1['on'](_0x2823('0x22'),function(_0x2124df){_0x5710d4+=_0x2124df;});_0x35d5c1['on'](_0x2823('0x21'),function(){_0x48579c(_0x5710d4);});})['on']('error',function(_0x30d9fc){_0x2d308d(_0x30d9fc);})[_0x2823('0x21')]();});}function convertFile(_0x44aa1c,_0x2b60ec){return new BPromise(function(_0xf0e5e6,_0x396b3f){var _0x2ca15=sox[_0x2823('0x23')](_0x44aa1c,_0x2b60ec,{'sampleRate':0x1f40,'format':_0x2823('0x24'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x2ca15['on'](_0x2823('0x17'),function(_0x177411){logger[_0x2823('0x17')](_0x2823('0x25'),_0x177411);_0x396b3f(_0x177411);});_0x2ca15['on'](_0x2823('0x21'),function(){logger['info'](_0x2823('0x26'));_0xf0e5e6();});_0x2ca15['start']();});}function base64Decode(_0xf0bb2c,_0x34d5cf){var _0x4fc8bc=path[_0x2823('0x27')](__dirname,_0x2823('0x28'),rs[_0x2823('0x29')](0x4)+_0x2823('0x2a'));fs[_0x2823('0x2b')](_0x4fc8bc,_0xf0bb2c,_0x2823('0x2c'));return convertFile(_0x4fc8bc,_0x34d5cf)[_0x2823('0x2d')](function(){try{fs[_0x2823('0x2e')](_0x4fc8bc);fs['chmodSync'](_0x34d5cf,_0x2823('0x2f'));}catch(_0x101dcd){logger[_0x2823('0x17')](_0x101dcd);}return _0x34d5cf[_0x2823('0x30')]('.')[0x0];});}function base64Encode(_0x5af9a7){var _0x5308d0=fs['readFileSync'](_0x5af9a7);return new Buffer(_0x5308d0)['toString'](_0x2823('0x2c'));}exports[_0x2823('0x31')]=function(_0x2bdcd9,_0xfe6057,_0x23e8bf,_0x44a6de,_0x59e9ea,_0x3ce560){var _0x3b54aa,_0xd17de;var _0x2699fb=_0x2823('0x32');var _0x4180b3='?key='+_0x2bdcd9;var _0x27e239={};if(_0xfe6057===_0x2823('0x33')){_0x27e239[_0x2823('0x34')]={'ssml':_0x23e8bf};}else{_0x27e239['input']={'text':_0x23e8bf};};_0x27e239[_0x2823('0x35')]={'languageCode':_0x44a6de,'ssmlGender':_0x59e9ea};_0x27e239['audioConfig']={'audioEncoding':_0x2823('0x36'),'sampleRateHertz':0x1f40};var _0x490142={'url':_0x2699fb+_0x2823('0x37')+_0x4180b3,'method':_0x2823('0x38'),'json':!![],'body':_0x27e239};return rp(_0x490142)[_0x2823('0x2d')](function(_0x410871){return new BPromise(function(_0x4c1fc4,_0x470d15){_0x3b54aa=path['resolve'](__dirname,_0x2823('0x28'),rs['generate'](0x4)+_0x2823('0x39'));var _0x449f9a=Buffer['from'](_0x410871[_0x2823('0x3a')],_0x2823('0x2c'));return fs[_0x2823('0x3b')](_0x3b54aa,_0x449f9a,function(_0x13710e){_0x470d15(_0x13710e);},function(_0x5a030a){fs['chmodSync'](_0x3b54aa,'777');_0x4c1fc4(_0x5a030a);});});})[_0x2823('0x2d')](function(_0x5d9288){_0xd17de=path[_0x2823('0x27')](__dirname,_0x2823('0x28'),rs[_0x2823('0x29')](0x4)+_0x2823('0x2a'));return convertFile(_0x3b54aa,_0xd17de);})['then'](function(){try{fs['unlink'](_0x3b54aa);fs['chmodSync'](_0xd17de,_0x2823('0x2f'));}catch(_0x394d58){logger[_0x2823('0x17')](_0x394d58);}logger[_0x2823('0x1d')](_0x2823('0x3c'),_0xd17de[_0x2823('0x30')]('.')[0x0]);return _0xd17de[_0x2823('0x30')]('.')[0x0];});};exports[_0x2823('0x3d')]=function(_0x25ed7b,_0x33b761){var _0x5e9656='https://translate.google.com/_/TranslateWebserverUi/data/batchexecute';var _0x190ade,_0x5f1bfe;var _0x5c56a3;var _0x502801={'encoding':_0x2823('0x3e'),'method':'POST','timeout':0x2710,'url':_0x5e9656,'headers':{'Content-Type':_0x2823('0x3f')},'body':_0x2823('0x40')+encodeURIComponent(JSON[_0x2823('0x41')]([[[_0x2823('0x42'),JSON[_0x2823('0x41')]([_0x25ed7b,_0x33b761||'en',![],_0x2823('0x43')]),null,_0x2823('0x44')]]]))};return rp(_0x502801)[_0x2823('0x2d')](function(_0x4f3730){try{_0x5c56a3=eval(_0x4f3730[_0x2823('0x45')](0x5))[0x0][0x2];}catch(_0x3c9101){throw new Error(_0x2823('0x46')+_0x4f3730[_0x2823('0x22')]);}if(!_0x5c56a3){if(_0x25ed7b[_0x2823('0x47')]>0xc8){throw new Error(_0x2823('0x48'));}else{throw new Error(_0x2823('0x49')+_0x33b761+_0x2823('0x4a'));}}try{_0x5c56a3=eval(_0x5c56a3)[0x0];}catch(_0x3eab21){throw new Error(_0x2823('0x46')+res[_0x2823('0x22')]);}const _0x566d59=_0x5c56a3;_0x190ade=path[_0x2823('0x27')](__dirname,_0x2823('0x28'),rs[_0x2823('0x29')](0x4)+_0x2823('0x39'));fs[_0x2823('0x2b')](_0x190ade,_0x5c56a3,{'encoding':_0x2823('0x2c')});_0x5f1bfe=path['resolve'](__dirname,_0x2823('0x28'),rs[_0x2823('0x29')](0x4)+_0x2823('0x2a'));return convertFile(_0x190ade,_0x5f1bfe);})[_0x2823('0x2d')](function(){try{fs[_0x2823('0x2e')](_0x190ade);fs['chmodSync'](_0x5f1bfe,_0x2823('0x2f'));}catch(_0x3d4f63){logger[_0x2823('0x17')](_0x3d4f63);}logger[_0x2823('0x1d')](_0x2823('0x4b'),_0x5f1bfe[_0x2823('0x30')]('.')[0x0]);return _0x5f1bfe[_0x2823('0x30')]('.')[0x0];});};exports[_0x2823('0x4c')]=function(_0x202ec5,_0x419143,_0x959f3f){return google[_0x2823('0x4d')](_0x202ec5,_0x419143,_0x959f3f)[_0x2823('0x2d')](function(_0x280929){logger['info'](_0x280929[_0x2823('0x4e')]);return rp(_0x280929);})[_0x2823('0x2d')](function(_0xfeb50e){var _0xfc49e2='';var _0x3dec1e=0x0;try{fs[_0x2823('0x2e')](_0x202ec5);}catch(_0x37b9cd){logger[_0x2823('0x17')](_0x37b9cd);}if(_0xfeb50e&&_0xfeb50e[_0x2823('0x4f')]){_0xfc49e2=_0xfeb50e[_0x2823('0x4f')]['map'](function(_0x174858){return _0x174858&&_0x174858['alternatives'][0x0]&&_0x174858['alternatives'][0x0][_0x2823('0x50')]?_0x174858['alternatives'][0x0][_0x2823('0x50')]:'';})['join']('\x0a');_0x3dec1e=_0xfeb50e[_0x2823('0x4f')][_0x2823('0x51')](function(_0x28a72f){return _0x28a72f&&_0x28a72f[_0x2823('0x52')][0x0]&&_0x28a72f[_0x2823('0x52')][0x0][_0x2823('0x53')]?_0x28a72f[_0x2823('0x52')][0x0][_0x2823('0x53')]:0x0;})['join']('\x0a');}logger[_0x2823('0x1d')](_0x2823('0x54'),_0xfc49e2);logger['info'](_0x2823('0x55'),_0x3dec1e);return{'transcript':_0xfc49e2,'confidence':_0x3dec1e};})['catch'](function(_0x2c8916){logger[_0x2823('0x17')](_0x2823('0x56'),_0x2c8916['statusCode'],_0x2c8916[_0x2823('0x57')],_0x2c8916['message']);});};exports[_0x2823('0x58')]=function(_0x3e5948,_0xea929d,_0x41bd93,_0x4cd24e){var _0x4db7c1=apiai(_0xea929d,{'language':_0x4cd24e||'en'});return _0x4db7c1[_0x2823('0x59')](_0x41bd93,{'sessionId':md5(_0x3e5948)})[_0x2823('0x2d')](function(_0x420f2c){logger[_0x2823('0x1d')](JSON['stringify'](_0x420f2c));return{'source':_0x420f2c[_0x2823('0x5a')][_0x2823('0x5b')],'resolvedQuery':_0x420f2c[_0x2823('0x5a')]['resolvedQuery'],'action':_0x420f2c[_0x2823('0x5a')][_0x2823('0x5c')],'actionIncomplete':_0x420f2c['result'][_0x2823('0x5d')],'speech':_0x420f2c[_0x2823('0x5a')][_0x2823('0x5e')][_0x2823('0x5f')],'score':_0x420f2c[_0x2823('0x5a')]['score'],'statusCode':_0x420f2c['status'][_0x2823('0x60')],'endConversation':_0x420f2c[_0x2823('0x5a')][_0x2823('0x61')][_0x2823('0x62')]||![],'isFallbackIntent':_0x420f2c[_0x2823('0x5a')][_0x2823('0x61')][_0x2823('0x63')]};});};exports[_0x2823('0x64')]=function(_0x37ddcb,_0x157645,_0x22e062,_0x4a9cb5,_0x14694c,_0x3484c9){var _0x5b2ce8=_0x4a9cb5[_0x2823('0x65')](/\\n/g,'\x0a');var _0x132a3b={'credentials':{'private_key':_0x5b2ce8,'client_email':_0x22e062}};var _0x1e81c3=new dialogflow[(_0x2823('0x66'))](_0x132a3b);var _0x39ce5a=_0x1e81c3['sessionPath'](_0x157645,md5(_0x37ddcb));var _0x54011e={'session':_0x39ce5a,'queryInput':{'text':{'text':_0x14694c,'languageCode':_0x3484c9}}};return _0x1e81c3[_0x2823('0x67')](_0x54011e)['then'](function(_0x4175bc){if(_0x4175bc&&_0x4175bc[_0x2823('0x47')]){logger[_0x2823('0x1d')](_0x2823('0x68'),JSON['stringify'](_0x4175bc));var _0x5bd444=_0x4175bc[0x0];if(_0x5bd444){var _0x2a5c43={'action':_0x5bd444[_0x2823('0x69')]['action'],'allRequiredParamsPresent':_0x5bd444['queryResult']['allRequiredParamsPresent'],'endConversation':_0x5bd444[_0x2823('0x69')][_0x2823('0x6a')]&&_0x5bd444['queryResult'][_0x2823('0x6a')][_0x2823('0x6b')]?_0x5bd444[_0x2823('0x69')]['diagnosticInfo']['fields'][_0x2823('0x6c')]['boolValue']:![],'fulfillmentText':_0x5bd444['queryResult'][_0x2823('0x6d')],'intentName':_0x5bd444[_0x2823('0x69')][_0x2823('0x6e')][_0x2823('0x57')],'intentDisplayName':_0x5bd444[_0x2823('0x69')][_0x2823('0x6e')][_0x2823('0x6f')],'isFallbackIntent':_0x5bd444[_0x2823('0x69')]['intent'][_0x2823('0x70')],'languageCode':_0x5bd444[_0x2823('0x69')][_0x2823('0x71')],'queryText':_0x5bd444['queryResult']['queryText'],'responseId':_0x5bd444['responseId'],'score':_0x5bd444[_0x2823('0x69')][_0x2823('0x72')],'speech':_0x5bd444['queryResult'][_0x2823('0x6d')],'providerResponse':JSON[_0x2823('0x41')](_0x4175bc)};return _0x2a5c43;}}});};exports[_0x2823('0x73')]=function(_0x20edc3,_0x1a612b,_0x45158b,_0x266fec){return tilde[_0x2823('0x4d')](_0x20edc3,_0x1a612b,_0x45158b,_0x266fec)[_0x2823('0x2d')](function(_0x4cc9f7){try{fs['unlink'](_0x20edc3);}catch(_0x1bdc72){logger[_0x2823('0x17')](_0x1bdc72);}logger[_0x2823('0x1d')](_0x2823('0x74'),_0x4cc9f7[_0x2823('0x50')]);logger[_0x2823('0x1d')](_0x2823('0x75'),_0x4cc9f7[_0x2823('0x53')]);return _0x4cc9f7;});};exports[_0x2823('0x76')]=function(_0x560932,_0x4dc115,_0x2df822,_0x519725,_0x2e241d,_0x137448){var _0x8628e5=path[_0x2823('0x27')](__dirname,_0x2823('0x28'),rs[_0x2823('0x29')](0x4)+_0x2823('0x39'));var _0x15a449;return aws[_0x2823('0x77')](_0x560932,_0x4dc115,_0x2df822,_0x519725,_0x2e241d,_0x137448,_0x8628e5)['then'](function(){_0x15a449=path[_0x2823('0x27')](__dirname,_0x2823('0x28'),rs[_0x2823('0x29')](0x4)+_0x2823('0x2a'));return convertFile(_0x8628e5,_0x15a449);})[_0x2823('0x2d')](function(){try{fs[_0x2823('0x2e')](_0x8628e5);fs[_0x2823('0x78')](_0x15a449,'777');}catch(_0x1a176f){logger['error'](_0x1a176f);}return _0x15a449[_0x2823('0x30')]('.')[0x0];});};exports['awsLex']=function(_0x3013cd,_0x290e42,_0x2cb02f,_0x186f7b,_0x514903,_0x1c0d05){return aws['lex'](_0x3013cd,_0x290e42,_0x2cb02f,_0x186f7b,_0x514903,_0x1c0d05)['then'](function(_0x3c881c){logger[_0x2823('0x1d')](JSON['stringify'](_0x3c881c));return _0x3c881c;});};exports[_0x2823('0x79')]=function(_0x408dbf,_0x2f3ddf,_0x250e18,_0x44090a){var _0x5ad8d7=util[_0x2823('0x7a')]('%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3',ISPEECH_API,_0x408dbf,encodeURIComponent(_0x2f3ddf),_0x250e18,_0x44090a);var _0x4a5b74=path[_0x2823('0x27')](__dirname,'tmp',rs[_0x2823('0x29')](0x4)+_0x2823('0x39'));var _0x155ac8;return downloadFile(_0x5ad8d7,_0x4a5b74)['then'](function(){_0x155ac8=path[_0x2823('0x27')](__dirname,_0x2823('0x28'),rs[_0x2823('0x29')](0x4)+_0x2823('0x2a'));return convertFile(_0x4a5b74,_0x155ac8);})[_0x2823('0x2d')](function(){try{fs['unlink'](_0x4a5b74);fs[_0x2823('0x78')](_0x155ac8,_0x2823('0x2f'));}catch(_0x43f190){logger[_0x2823('0x17')](_0x43f190);}return _0x155ac8[_0x2823('0x30')]('.')[0x0];});};exports[_0x2823('0x7b')]=function(_0xcaac87,_0x32d048,_0x21bddb,_0x4bf679){var _0x8f8526=util['format'](_0x2823('0x7c'),ISPEECH_API,_0x32d048,_0x21bddb,base64Encode(_0xcaac87),_0x4bf679?util[_0x2823('0x7a')](_0x2823('0x7d'),encodeURIComponent(_0x4bf679)):_0x2823('0x7e'));return uploadFile(_0x8f8526)['then'](function(_0x4f63ca){return querystring[_0x2823('0x9')](_0x4f63ca);});};exports[_0x2823('0x7f')]=function(_0x5229af,_0x33d271){return sestek[_0x2823('0x80')](_0x5229af,_0x33d271)[_0x2823('0x2d')](function(_0x2e5c66){logger[_0x2823('0x1d')](JSON[_0x2823('0x41')](_0x2e5c66));var _0x30e1c8={'speech':_0x2e5c66[_0x2823('0x81')],'action':_0x2e5c66[_0x2823('0x82')]?_0x2e5c66[_0x2823('0x82')][_0x2823('0x83')]:undefined,'actiondata':_0x2e5c66[_0x2823('0x82')]?_0x2e5c66[_0x2823('0x82')]['CustomActionData']:undefined};if(_0x2e5c66[_0x2823('0x82')]&&_0x2e5c66['channelData'][_0x2823('0x84')]){return base64Decode(_0x2e5c66[_0x2823('0x82')]['AudioFromTts'][_0x2823('0x85')],path[_0x2823('0x27')](__dirname,'tmp',rs['generate'](0x4)+_0x2823('0x2a')))[_0x2823('0x2d')](function(_0x40bec5){_0x30e1c8[_0x2823('0x86')]=_0x40bec5;return _0x30e1c8;});}return _0x30e1c8;});};exports[_0x2823('0x87')]=function(){return __dirname;};