fd057030cb64a8f0e8b6df55ebaf6afa7406ae55
[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 _0x9377=['asr','uri','results','map','alternatives','transcript','confidence','googleASR\x20transcription','[%s]\x20%s:%s','name','message','googleDialogflow','textRequest','result','source','action','actionIncomplete','speech','score','status','metadata','isFallbackIntent','googleDialogflowV2','replace','SessionsClient','sessionPath','detectIntent','length','Dialogflow\x20V2\x20response:','queryResult','diagnosticInfo','fields','end_conversation','boolValue','fulfillmentText','intent','isFallback','queryText','responseId','intentDetectionConfidence','tildeASR','Tilde\x20ASR\x20confidence','polly','awsLex','%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','nda','text','channelData','CustomAction','CustomActionData','AudioFromTts','Data','dirName','bluebird','dialogflow','https','querystring','request-promise','randomstring','sox','google-tts-api','url','parse','util','./aws','./google','./sestek','../../../config/logger','agi','https://api.ispeech.org/api/rest','protocol','https:','host','path','WHAT_EVER','get','statusCode','error','request\x20to\x20','statusMessage','createWriteStream','info','close','unlink','pipe','\x20failed,\x20status\x20code\x20=\x20','data','end','transcode','error\x20convert','finish\x20to\x20convert','start','resolve','tmp','generate','.wav','writeFileSync','base64','then','chmodSync','777','split','googleCloudTTS','https://texttospeech.googleapis.com/v1/','?key=','input','voice','audioConfig','MP3','POST','from','writeFile','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','utf8','application/x-www-form-urlencoded','f.req=','stringify','jQ1olc','null','generic','slice','parse\x20response\x20failed:\x0a','text\x20length\x20limit\x20reached','lang\x20\x22','\x22\x20might\x20not\x20exist','.mp3','googleASR'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x9377,0x145));var _0x7937=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x9377[_0x321bb2];return _0x9c12ed;};'use strict';var apiai=require('apiai-promise');var BPromise=require(_0x7937('0x0'));var dialogflow=require(_0x7937('0x1'));var fs=require('fs');var http=require('http');var https=require(_0x7937('0x2'));var md5=require('md5');var path=require('path');var querystring=require(_0x7937('0x3'));var rp=require(_0x7937('0x4'));var rs=require(_0x7937('0x5'));var sox=require(_0x7937('0x6'));var tts=require(_0x7937('0x7'));var urlParse=require(_0x7937('0x8'))[_0x7937('0x9')];var util=require(_0x7937('0xa'));var aws=require(_0x7937('0xb'));var google=require(_0x7937('0xc'));var sestek=require(_0x7937('0xd'));var tilde=require('./tilde');var logger=require(_0x7937('0xe'))(_0x7937('0xf'));var ISPEECH_API=_0x7937('0x10');function downloadFile(_0xafa072,_0x1ed83d){return new BPromise(function(_0x1f348e,_0xed42dd){var _0x24f59c=urlParse(_0xafa072);var _0xf2e693=_0x24f59c[_0x7937('0x11')]===_0x7937('0x12')?https:http;var _0x3e9c25={'host':_0x24f59c[_0x7937('0x13')],'path':_0x24f59c[_0x7937('0x14')],'headers':{'user-agent':_0x7937('0x15')}};_0xf2e693[_0x7937('0x16')](_0x3e9c25,function(_0x1e19bb){if(_0x1e19bb[_0x7937('0x17')]!==0xc8){logger[_0x7937('0x18')](_0x7937('0x19')+_0xafa072+'\x20failed,\x20status\x20code\x20=\x20'+_0x1e19bb['statusCode']+'\x20('+_0x1e19bb[_0x7937('0x1a')]+')');_0xed42dd(new Error(_0x7937('0x19')+_0xafa072+'\x20failed,\x20status\x20code\x20=\x20'+_0x1e19bb[_0x7937('0x17')]+'\x20('+_0x1e19bb[_0x7937('0x1a')]+')'));return;}var _0x1a6713=fs[_0x7937('0x1b')](_0x1ed83d);_0x1a6713['on']('finish',function(){logger[_0x7937('0x1c')]('finish\x20download\x20file');_0x1a6713[_0x7937('0x1d')](_0x1f348e);});_0x1a6713['on'](_0x7937('0x18'),function(_0x1d7a78){fs[_0x7937('0x1e')](_0x1ed83d);logger[_0x7937('0x18')]('download\x20error',_0x1d7a78);_0xed42dd(_0x1d7a78);});_0x1e19bb[_0x7937('0x1f')](_0x1a6713);})['on'](_0x7937('0x18'),function(_0x5dc81f){logger[_0x7937('0x18')](_0x5dc81f);_0xed42dd(_0x5dc81f);})['end']();});}function uploadFile(_0x300ba0){return new BPromise(function(_0x2ac0cd,_0x4f4938){var _0x451034=urlParse(_0x300ba0);var _0x3c79aa=_0x451034[_0x7937('0x11')]===_0x7937('0x12')?https:http;var _0x5a76fc={'host':_0x451034['host'],'path':_0x451034[_0x7937('0x14')],'headers':{'user-agent':_0x7937('0x15')}};_0x3c79aa['get'](_0x5a76fc,function(_0x5bad80){if(_0x5bad80[_0x7937('0x17')]!==0xc8){_0x4f4938(new Error(_0x7937('0x19')+_0x300ba0+_0x7937('0x20')+_0x5bad80['statusCode']+'\x20('+_0x5bad80['statusMessage']+')'));return;}var _0x541840='';_0x5bad80['on'](_0x7937('0x21'),function(_0x117089){_0x541840+=_0x117089;});_0x5bad80['on'](_0x7937('0x22'),function(){_0x2ac0cd(_0x541840);});})['on'](_0x7937('0x18'),function(_0x37cc1b){_0x4f4938(_0x37cc1b);})['end']();});}function convertFile(_0x37d3da,_0x4be836){return new BPromise(function(_0x5cdb72,_0x3ed3b6){var _0x36df24=sox[_0x7937('0x23')](_0x37d3da,_0x4be836,{'sampleRate':0x1f40,'format':'wav','channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x36df24['on'](_0x7937('0x18'),function(_0x5a6d06){logger[_0x7937('0x18')](_0x7937('0x24'),_0x5a6d06);_0x3ed3b6(_0x5a6d06);});_0x36df24['on'](_0x7937('0x22'),function(){logger[_0x7937('0x1c')](_0x7937('0x25'));_0x5cdb72();});_0x36df24[_0x7937('0x26')]();});}function base64Decode(_0x4e89cd,_0x3366c5){var _0x4ea001=path[_0x7937('0x27')](__dirname,_0x7937('0x28'),rs[_0x7937('0x29')](0x4)+_0x7937('0x2a'));fs[_0x7937('0x2b')](_0x4ea001,_0x4e89cd,_0x7937('0x2c'));return convertFile(_0x4ea001,_0x3366c5)[_0x7937('0x2d')](function(){try{fs[_0x7937('0x1e')](_0x4ea001);fs[_0x7937('0x2e')](_0x3366c5,_0x7937('0x2f'));}catch(_0x48864b){logger[_0x7937('0x18')](_0x48864b);}return _0x3366c5[_0x7937('0x30')]('.')[0x0];});}function base64Encode(_0x509c12){var _0x2d6f4e=fs['readFileSync'](_0x509c12);return new Buffer(_0x2d6f4e)['toString'](_0x7937('0x2c'));}exports[_0x7937('0x31')]=function(_0x5010ce,_0x4b6042,_0x156cbf,_0x12406c,_0x5c8363,_0x5728aa){var _0x501722,_0x426871;var _0x6081fe=_0x7937('0x32');var _0x20f66b=_0x7937('0x33')+_0x5010ce;var _0x244971={};if(_0x4b6042==='ssml'){_0x244971[_0x7937('0x34')]={'ssml':_0x156cbf};}else{_0x244971['input']={'text':_0x156cbf};};_0x244971[_0x7937('0x35')]={'languageCode':_0x12406c,'ssmlGender':_0x5c8363};_0x244971[_0x7937('0x36')]={'audioEncoding':_0x7937('0x37'),'sampleRateHertz':0x1f40};var _0x177079={'url':_0x6081fe+'text:synthesize'+_0x20f66b,'method':_0x7937('0x38'),'json':!![],'body':_0x244971};return rp(_0x177079)[_0x7937('0x2d')](function(_0x505eee){return new BPromise(function(_0x11b6c1,_0x4e03e8){_0x501722=path['resolve'](__dirname,'tmp',rs['generate'](0x4)+'.mp3');var _0x5e60d5=Buffer[_0x7937('0x39')](_0x505eee['audioContent'],'base64');return fs[_0x7937('0x3a')](_0x501722,_0x5e60d5,function(_0x105429){_0x4e03e8(_0x105429);},function(_0x34440f){fs[_0x7937('0x2e')](_0x501722,_0x7937('0x2f'));_0x11b6c1(_0x34440f);});});})[_0x7937('0x2d')](function(_0x2420b0){_0x426871=path['resolve'](__dirname,_0x7937('0x28'),rs[_0x7937('0x29')](0x4)+_0x7937('0x2a'));return convertFile(_0x501722,_0x426871);})['then'](function(){try{fs[_0x7937('0x1e')](_0x501722);fs[_0x7937('0x2e')](_0x426871,_0x7937('0x2f'));}catch(_0x27df46){logger[_0x7937('0x18')](_0x27df46);}logger['info']('googleCloudTTS\x20path',_0x426871['split']('.')[0x0]);return _0x426871[_0x7937('0x30')]('.')[0x0];});};exports['googleTTS']=function(_0x2a9c7d,_0x36d76f){var _0x5dea55=_0x7937('0x3b');var _0x39b129,_0x860286;var _0x1f5740;var _0x37ff47={'encoding':_0x7937('0x3c'),'method':_0x7937('0x38'),'timeout':0x2710,'url':_0x5dea55,'headers':{'Content-Type':_0x7937('0x3d')},'body':_0x7937('0x3e')+encodeURIComponent(JSON[_0x7937('0x3f')]([[[_0x7937('0x40'),JSON[_0x7937('0x3f')]([_0x2a9c7d,_0x36d76f||'en',![],_0x7937('0x41')]),null,_0x7937('0x42')]]]))};return rp(_0x37ff47)[_0x7937('0x2d')](function(_0xbbb67f){try{_0x1f5740=eval(_0xbbb67f[_0x7937('0x43')](0x5))[0x0][0x2];}catch(_0x35a85e){throw new Error(_0x7937('0x44')+_0xbbb67f['data']);}if(!_0x1f5740){if(_0x2a9c7d['length']>0xc8){throw new Error(_0x7937('0x45'));}else{throw new Error(_0x7937('0x46')+_0x36d76f+_0x7937('0x47'));}}try{_0x1f5740=eval(_0x1f5740)[0x0];}catch(_0x5c6ee7){throw new Error(_0x7937('0x44')+res['data']);}const _0x4da9fe=_0x1f5740;_0x39b129=path[_0x7937('0x27')](__dirname,_0x7937('0x28'),rs[_0x7937('0x29')](0x4)+_0x7937('0x48'));fs[_0x7937('0x2b')](_0x39b129,_0x1f5740,{'encoding':_0x7937('0x2c')});_0x860286=path[_0x7937('0x27')](__dirname,_0x7937('0x28'),rs[_0x7937('0x29')](0x4)+_0x7937('0x2a'));return convertFile(_0x39b129,_0x860286);})[_0x7937('0x2d')](function(){try{fs[_0x7937('0x1e')](_0x39b129);fs[_0x7937('0x2e')](_0x860286,_0x7937('0x2f'));}catch(_0x202e31){logger['error'](_0x202e31);}logger[_0x7937('0x1c')]('goggleTTS\x20path',_0x860286[_0x7937('0x30')]('.')[0x0]);return _0x860286[_0x7937('0x30')]('.')[0x0];});};exports[_0x7937('0x49')]=function(_0x33855f,_0x25dbb4,_0x2b4c74){return google[_0x7937('0x4a')](_0x33855f,_0x25dbb4,_0x2b4c74)[_0x7937('0x2d')](function(_0x25012c){logger['info'](_0x25012c[_0x7937('0x4b')]);return rp(_0x25012c);})[_0x7937('0x2d')](function(_0x77efce){var _0x16f585='';var _0x45548d=0x0;try{fs['unlink'](_0x33855f);}catch(_0x22c853){logger[_0x7937('0x18')](_0x22c853);}if(_0x77efce&&_0x77efce[_0x7937('0x4c')]){_0x16f585=_0x77efce[_0x7937('0x4c')][_0x7937('0x4d')](function(_0x32583e){return _0x32583e&&_0x32583e[_0x7937('0x4e')][0x0]&&_0x32583e[_0x7937('0x4e')][0x0][_0x7937('0x4f')]?_0x32583e[_0x7937('0x4e')][0x0][_0x7937('0x4f')]:'';})['join']('\x0a');_0x45548d=_0x77efce[_0x7937('0x4c')]['map'](function(_0x28a082){return _0x28a082&&_0x28a082['alternatives'][0x0]&&_0x28a082['alternatives'][0x0][_0x7937('0x50')]?_0x28a082[_0x7937('0x4e')][0x0][_0x7937('0x50')]:0x0;})['join']('\x0a');}logger[_0x7937('0x1c')](_0x7937('0x51'),_0x16f585);logger['info']('googleASR\x20confidence',_0x45548d);return{'transcript':_0x16f585,'confidence':_0x45548d};})['catch'](function(_0x1d6c3f){logger[_0x7937('0x18')](_0x7937('0x52'),_0x1d6c3f[_0x7937('0x17')],_0x1d6c3f[_0x7937('0x53')],_0x1d6c3f[_0x7937('0x54')]);});};exports[_0x7937('0x55')]=function(_0x1fadc4,_0x10b980,_0x3b39f0,_0x5bce02){var _0x1c7e5b=apiai(_0x10b980,{'language':_0x5bce02||'en'});return _0x1c7e5b[_0x7937('0x56')](_0x3b39f0,{'sessionId':md5(_0x1fadc4)})[_0x7937('0x2d')](function(_0x303156){logger[_0x7937('0x1c')](JSON['stringify'](_0x303156));return{'source':_0x303156[_0x7937('0x57')][_0x7937('0x58')],'resolvedQuery':_0x303156[_0x7937('0x57')]['resolvedQuery'],'action':_0x303156[_0x7937('0x57')][_0x7937('0x59')],'actionIncomplete':_0x303156[_0x7937('0x57')][_0x7937('0x5a')],'speech':_0x303156[_0x7937('0x57')]['fulfillment'][_0x7937('0x5b')],'score':_0x303156[_0x7937('0x57')][_0x7937('0x5c')],'statusCode':_0x303156[_0x7937('0x5d')]['code'],'endConversation':_0x303156[_0x7937('0x57')]['metadata']['endConversation']||![],'isFallbackIntent':_0x303156[_0x7937('0x57')][_0x7937('0x5e')][_0x7937('0x5f')]};});};exports[_0x7937('0x60')]=function(_0x2221ee,_0x37f7b3,_0x11f2a8,_0x297457,_0x3c366d,_0x349a42){var _0x167700=_0x297457[_0x7937('0x61')](/\\n/g,'\x0a');var _0x208565={'credentials':{'private_key':_0x167700,'client_email':_0x11f2a8}};var _0x5a15a6=new dialogflow[(_0x7937('0x62'))](_0x208565);var _0x155e48=_0x5a15a6[_0x7937('0x63')](_0x37f7b3,md5(_0x2221ee));var _0x341c3a={'session':_0x155e48,'queryInput':{'text':{'text':_0x3c366d,'languageCode':_0x349a42}}};return _0x5a15a6[_0x7937('0x64')](_0x341c3a)[_0x7937('0x2d')](function(_0x18b421){if(_0x18b421&&_0x18b421[_0x7937('0x65')]){logger[_0x7937('0x1c')](_0x7937('0x66'),JSON[_0x7937('0x3f')](_0x18b421));var _0x327303=_0x18b421[0x0];if(_0x327303){var _0x3fe4f7={'action':_0x327303[_0x7937('0x67')][_0x7937('0x59')],'allRequiredParamsPresent':_0x327303[_0x7937('0x67')]['allRequiredParamsPresent'],'endConversation':_0x327303[_0x7937('0x67')][_0x7937('0x68')]&&_0x327303['queryResult']['diagnosticInfo'][_0x7937('0x69')]?_0x327303['queryResult'][_0x7937('0x68')][_0x7937('0x69')][_0x7937('0x6a')][_0x7937('0x6b')]:![],'fulfillmentText':_0x327303[_0x7937('0x67')][_0x7937('0x6c')],'intentName':_0x327303['queryResult'][_0x7937('0x6d')][_0x7937('0x53')],'intentDisplayName':_0x327303[_0x7937('0x67')][_0x7937('0x6d')]['displayName'],'isFallbackIntent':_0x327303[_0x7937('0x67')][_0x7937('0x6d')][_0x7937('0x6e')],'languageCode':_0x327303[_0x7937('0x67')]['languageCode'],'queryText':_0x327303[_0x7937('0x67')][_0x7937('0x6f')],'responseId':_0x327303[_0x7937('0x70')],'score':_0x327303[_0x7937('0x67')][_0x7937('0x71')],'speech':_0x327303['queryResult']['fulfillmentText'],'providerResponse':JSON[_0x7937('0x3f')](_0x18b421)};return _0x3fe4f7;}}});};exports[_0x7937('0x72')]=function(_0x390d3c,_0x14e8b6,_0x1bf113,_0xfb34e6){return tilde[_0x7937('0x4a')](_0x390d3c,_0x14e8b6,_0x1bf113,_0xfb34e6)[_0x7937('0x2d')](function(_0x43f8c5){try{fs['unlink'](_0x390d3c);}catch(_0x31f3da){logger[_0x7937('0x18')](_0x31f3da);}logger['info']('Tilde\x20ASR\x20transcription',_0x43f8c5[_0x7937('0x4f')]);logger[_0x7937('0x1c')](_0x7937('0x73'),_0x43f8c5[_0x7937('0x50')]);return _0x43f8c5;});};exports['awsPolly']=function(_0xc26aa3,_0x3cdd87,_0x2d14e7,_0x2c5ff6,_0x461054,_0x2b4c6d){var _0x29973d=path[_0x7937('0x27')](__dirname,'tmp',rs[_0x7937('0x29')](0x4)+_0x7937('0x48'));var _0x3d736f;return aws[_0x7937('0x74')](_0xc26aa3,_0x3cdd87,_0x2d14e7,_0x2c5ff6,_0x461054,_0x2b4c6d,_0x29973d)['then'](function(){_0x3d736f=path['resolve'](__dirname,_0x7937('0x28'),rs[_0x7937('0x29')](0x4)+'.wav');return convertFile(_0x29973d,_0x3d736f);})[_0x7937('0x2d')](function(){try{fs[_0x7937('0x1e')](_0x29973d);fs['chmodSync'](_0x3d736f,'777');}catch(_0x450248){logger[_0x7937('0x18')](_0x450248);}return _0x3d736f[_0x7937('0x30')]('.')[0x0];});};exports[_0x7937('0x75')]=function(_0x1a8688,_0x218d58,_0x21a814,_0x2418d1,_0x59d59e,_0x248763){return aws['lex'](_0x1a8688,_0x218d58,_0x21a814,_0x2418d1,_0x59d59e,_0x248763)[_0x7937('0x2d')](function(_0x112f55){logger['info'](JSON[_0x7937('0x3f')](_0x112f55));return _0x112f55;});};exports['ispeechTTS']=function(_0x128ddf,_0x120b91,_0x244fce,_0x427a27){var _0x4b54e4=util['format'](_0x7937('0x76'),ISPEECH_API,_0x128ddf,encodeURIComponent(_0x120b91),_0x244fce,_0x427a27);var _0x44af62=path[_0x7937('0x27')](__dirname,_0x7937('0x28'),rs[_0x7937('0x29')](0x4)+_0x7937('0x48'));var _0x29d5a9;return downloadFile(_0x4b54e4,_0x44af62)[_0x7937('0x2d')](function(){_0x29d5a9=path[_0x7937('0x27')](__dirname,_0x7937('0x28'),rs['generate'](0x4)+_0x7937('0x2a'));return convertFile(_0x44af62,_0x29d5a9);})[_0x7937('0x2d')](function(){try{fs['unlink'](_0x44af62);fs['chmodSync'](_0x29d5a9,_0x7937('0x2f'));}catch(_0x581990){logger['error'](_0x581990);}return _0x29d5a9['split']('.')[0x0];});};exports[_0x7937('0x77')]=function(_0x415dbc,_0x88361,_0x5c1fea,_0x22c9d5){var _0x3897fa=util[_0x7937('0x78')](_0x7937('0x79'),ISPEECH_API,_0x88361,_0x5c1fea,base64Encode(_0x415dbc),_0x22c9d5?util[_0x7937('0x78')](_0x7937('0x7a'),encodeURIComponent(_0x22c9d5)):_0x7937('0x7b'));return uploadFile(_0x3897fa)[_0x7937('0x2d')](function(_0x2fa3f7){return querystring[_0x7937('0x9')](_0x2fa3f7);});};exports[_0x7937('0x7c')]=function(_0x59f783,_0x387993){return sestek[_0x7937('0x7d')](_0x59f783,_0x387993)[_0x7937('0x2d')](function(_0x388f87){logger[_0x7937('0x1c')](JSON['stringify'](_0x388f87));var _0x12101a={'speech':_0x388f87[_0x7937('0x7e')],'action':_0x388f87[_0x7937('0x7f')]?_0x388f87['channelData'][_0x7937('0x80')]:undefined,'actiondata':_0x388f87[_0x7937('0x7f')]?_0x388f87[_0x7937('0x7f')][_0x7937('0x81')]:undefined};if(_0x388f87[_0x7937('0x7f')]&&_0x388f87['channelData']['AudioFromTts']){return base64Decode(_0x388f87[_0x7937('0x7f')][_0x7937('0x82')][_0x7937('0x83')],path['resolve'](__dirname,_0x7937('0x28'),rs['generate'](0x4)+_0x7937('0x2a')))['then'](function(_0x886dce){_0x12101a['audiofile']=_0x886dce;return _0x12101a;});}return _0x12101a;});};exports[_0x7937('0x84')]=function(){return __dirname;};