Built motion from commit (unavailable).|2.5.22
[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 _0x512a=['queryResult','action','diagnosticInfo','fields','end_conversation','boolValue','fulfillmentText','intent','isFallback','languageCode','intentDetectionConfidence','tildeASR','awsPolly','polly','awsLex','format','model=%s','sestekNDA','nda','channelData','CustomActionData','AudioFromTts','Data','dirName','apiai-promise','bluebird','http','https','path','querystring','sox','google-tts-api','url','parse','util','./google','./tilde','agi','https://api.ispeech.org/api/rest','https:','WHAT_EVER','statusCode','\x20failed,\x20status\x20code\x20=\x20','request\x20to\x20','statusMessage','createWriteStream','finish','info','finish\x20download\x20file','close','unlink','error','download\x20error','pipe','end','protocol','host','data','transcode','wav','finish\x20to\x20convert','resolve','tmp','generate','.wav','writeFileSync','base64','then','chmodSync','777','split','toString','googleCloudTTS','?key=','ssml','input','voice','MP3','text:synthesize','POST','.mp3','from','audioContent','googleCloudTTS\x20path','googleTTS','utf8','application/x-www-form-urlencoded','f.req=','jQ1olc','stringify','null','generic','slice','parse\x20response\x20failed:\x0a','length','\x22\x20might\x20not\x20exist','goggleTTS\x20path','googleASR','asr','uri','results','map','alternatives','transcript','join','confidence','googleASR\x20transcription','googleASR\x20confidence','name','message','textRequest','result','source','resolvedQuery','speech','score','code','metadata','isFallbackIntent','googleDialogflowV2','replace','SessionsClient','sessionPath','detectIntent','Dialogflow\x20V2\x20response:'];(function(_0x12fdd3,_0x3109d0){var _0x3b2182=function(_0x5986e4){while(--_0x5986e4){_0x12fdd3['push'](_0x12fdd3['shift']());}};_0x3b2182(++_0x3109d0);}(_0x512a,0x18f));var _0xa512=function(_0x23fbec,_0x48a902){_0x23fbec=_0x23fbec-0x0;var _0x42fe6b=_0x512a[_0x23fbec];return _0x42fe6b;};'use strict';var apiai=require(_0xa512('0x0'));var BPromise=require(_0xa512('0x1'));var dialogflow=require('dialogflow');var fs=require('fs');var http=require(_0xa512('0x2'));var https=require(_0xa512('0x3'));var md5=require('md5');var path=require(_0xa512('0x4'));var querystring=require(_0xa512('0x5'));var rp=require('request-promise');var rs=require('randomstring');var sox=require(_0xa512('0x6'));var tts=require(_0xa512('0x7'));var urlParse=require(_0xa512('0x8'))[_0xa512('0x9')];var util=require(_0xa512('0xa'));var aws=require('./aws');var google=require(_0xa512('0xb'));var sestek=require('./sestek');var tilde=require(_0xa512('0xc'));var logger=require('../../../config/logger')(_0xa512('0xd'));var ISPEECH_API=_0xa512('0xe');function downloadFile(_0x352341,_0x57f54b){return new BPromise(function(_0x48cc71,_0x1e23b9){var _0x3f5718=urlParse(_0x352341);var _0x179ded=_0x3f5718['protocol']===_0xa512('0xf')?https:http;var _0x2b687e={'host':_0x3f5718['host'],'path':_0x3f5718['path'],'headers':{'user-agent':_0xa512('0x10')}};_0x179ded['get'](_0x2b687e,function(_0x2fb5ac){if(_0x2fb5ac[_0xa512('0x11')]!==0xc8){logger['error']('request\x20to\x20'+_0x352341+_0xa512('0x12')+_0x2fb5ac[_0xa512('0x11')]+'\x20('+_0x2fb5ac['statusMessage']+')');_0x1e23b9(new Error(_0xa512('0x13')+_0x352341+_0xa512('0x12')+_0x2fb5ac[_0xa512('0x11')]+'\x20('+_0x2fb5ac[_0xa512('0x14')]+')'));return;}var _0x204ef0=fs[_0xa512('0x15')](_0x57f54b);_0x204ef0['on'](_0xa512('0x16'),function(){logger[_0xa512('0x17')](_0xa512('0x18'));_0x204ef0[_0xa512('0x19')](_0x48cc71);});_0x204ef0['on']('error',function(_0x31e354){fs[_0xa512('0x1a')](_0x57f54b);logger[_0xa512('0x1b')](_0xa512('0x1c'),_0x31e354);_0x1e23b9(_0x31e354);});_0x2fb5ac[_0xa512('0x1d')](_0x204ef0);})['on']('error',function(_0x5b94c2){logger[_0xa512('0x1b')](_0x5b94c2);_0x1e23b9(_0x5b94c2);})[_0xa512('0x1e')]();});}function uploadFile(_0x27cff4){return new BPromise(function(_0x4e2e14,_0x26a839){var _0x3e112e=urlParse(_0x27cff4);var _0x15c758=_0x3e112e[_0xa512('0x1f')]==='https:'?https:http;var _0x159092={'host':_0x3e112e[_0xa512('0x20')],'path':_0x3e112e[_0xa512('0x4')],'headers':{'user-agent':_0xa512('0x10')}};_0x15c758['get'](_0x159092,function(_0x2cfc50){if(_0x2cfc50[_0xa512('0x11')]!==0xc8){_0x26a839(new Error(_0xa512('0x13')+_0x27cff4+'\x20failed,\x20status\x20code\x20=\x20'+_0x2cfc50[_0xa512('0x11')]+'\x20('+_0x2cfc50['statusMessage']+')'));return;}var _0x40b40f='';_0x2cfc50['on'](_0xa512('0x21'),function(_0x5b1c2c){_0x40b40f+=_0x5b1c2c;});_0x2cfc50['on'](_0xa512('0x1e'),function(){_0x4e2e14(_0x40b40f);});})['on'](_0xa512('0x1b'),function(_0x4621ec){_0x26a839(_0x4621ec);})[_0xa512('0x1e')]();});}function convertFile(_0x4ad5fa,_0xcf639a){return new BPromise(function(_0xa6281f,_0x4ece4d){var _0x101030=sox[_0xa512('0x22')](_0x4ad5fa,_0xcf639a,{'sampleRate':0x1f40,'format':_0xa512('0x23'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x101030['on'](_0xa512('0x1b'),function(_0x36b96a){logger[_0xa512('0x1b')]('error\x20convert',_0x36b96a);_0x4ece4d(_0x36b96a);});_0x101030['on'](_0xa512('0x1e'),function(){logger[_0xa512('0x17')](_0xa512('0x24'));_0xa6281f();});_0x101030['start']();});}function base64Decode(_0x36990d,_0x36930e){var _0x4a9676=path[_0xa512('0x25')](__dirname,_0xa512('0x26'),rs[_0xa512('0x27')](0x4)+_0xa512('0x28'));fs[_0xa512('0x29')](_0x4a9676,_0x36990d,_0xa512('0x2a'));return convertFile(_0x4a9676,_0x36930e)[_0xa512('0x2b')](function(){try{fs[_0xa512('0x1a')](_0x4a9676);fs[_0xa512('0x2c')](_0x36930e,_0xa512('0x2d'));}catch(_0x57a88d){logger[_0xa512('0x1b')](_0x57a88d);}return _0x36930e[_0xa512('0x2e')]('.')[0x0];});}function base64Encode(_0x3762f6){var _0x20d6ee=fs['readFileSync'](_0x3762f6);return new Buffer(_0x20d6ee)[_0xa512('0x2f')](_0xa512('0x2a'));}exports[_0xa512('0x30')]=function(_0x3aefc2,_0x155178,_0xc8865e,_0x1c66fd,_0x3dc2f4,_0xe378d7){var _0x54e345,_0x357ae2;var _0x12137a='https://texttospeech.googleapis.com/v1/';var _0x12f116=_0xa512('0x31')+_0x3aefc2;var _0x5289be={};if(_0x155178===_0xa512('0x32')){_0x5289be[_0xa512('0x33')]={'ssml':_0xc8865e};}else{_0x5289be['input']={'text':_0xc8865e};};_0x5289be[_0xa512('0x34')]={'languageCode':_0x1c66fd,'ssmlGender':_0x3dc2f4};_0x5289be['audioConfig']={'audioEncoding':_0xa512('0x35'),'sampleRateHertz':0x1f40};var _0x31ffa2={'url':_0x12137a+_0xa512('0x36')+_0x12f116,'method':_0xa512('0x37'),'json':!![],'body':_0x5289be};return rp(_0x31ffa2)[_0xa512('0x2b')](function(_0x5b8e79){return new BPromise(function(_0x53f8ad,_0x48a2a1){_0x54e345=path[_0xa512('0x25')](__dirname,_0xa512('0x26'),rs[_0xa512('0x27')](0x4)+_0xa512('0x38'));var _0x4734f8=Buffer[_0xa512('0x39')](_0x5b8e79[_0xa512('0x3a')],_0xa512('0x2a'));return fs['writeFile'](_0x54e345,_0x4734f8,function(_0x147791){_0x48a2a1(_0x147791);},function(_0x405bc4){fs[_0xa512('0x2c')](_0x54e345,'777');_0x53f8ad(_0x405bc4);});});})[_0xa512('0x2b')](function(_0x1d8bc5){_0x357ae2=path[_0xa512('0x25')](__dirname,_0xa512('0x26'),rs['generate'](0x4)+_0xa512('0x28'));return convertFile(_0x54e345,_0x357ae2);})['then'](function(){try{fs[_0xa512('0x1a')](_0x54e345);fs[_0xa512('0x2c')](_0x357ae2,_0xa512('0x2d'));}catch(_0xfe1e1b){logger[_0xa512('0x1b')](_0xfe1e1b);}logger[_0xa512('0x17')](_0xa512('0x3b'),_0x357ae2[_0xa512('0x2e')]('.')[0x0]);return _0x357ae2[_0xa512('0x2e')]('.')[0x0];});};exports[_0xa512('0x3c')]=function(_0x3434b9,_0x4dfa3c){var _0x2279c1='https://translate.google.com/_/TranslateWebserverUi/data/batchexecute';var _0x921510,_0x3543e8;var _0x1b3620;var _0x3afa27={'encoding':_0xa512('0x3d'),'method':_0xa512('0x37'),'timeout':0x2710,'url':_0x2279c1,'headers':{'Content-Type':_0xa512('0x3e')},'body':_0xa512('0x3f')+encodeURIComponent(JSON['stringify']([[[_0xa512('0x40'),JSON[_0xa512('0x41')]([_0x3434b9,_0x4dfa3c||'en',![],_0xa512('0x42')]),null,_0xa512('0x43')]]]))};return rp(_0x3afa27)[_0xa512('0x2b')](function(_0x113cdb){try{_0x1b3620=eval(_0x113cdb[_0xa512('0x44')](0x5))[0x0][0x2];}catch(_0x2e21a2){throw new Error(_0xa512('0x45')+_0x113cdb[_0xa512('0x21')]);}if(!_0x1b3620){if(_0x3434b9[_0xa512('0x46')]>0xc8){throw new Error('text\x20length\x20limit\x20reached');}else{throw new Error('lang\x20\x22'+_0x4dfa3c+_0xa512('0x47'));}}try{_0x1b3620=eval(_0x1b3620)[0x0];}catch(_0x89f59){throw new Error(_0xa512('0x45')+res['data']);}const _0x12724f=_0x1b3620;_0x921510=path[_0xa512('0x25')](__dirname,_0xa512('0x26'),rs['generate'](0x4)+_0xa512('0x38'));fs[_0xa512('0x29')](_0x921510,_0x1b3620,{'encoding':_0xa512('0x2a')});_0x3543e8=path[_0xa512('0x25')](__dirname,'tmp',rs[_0xa512('0x27')](0x4)+_0xa512('0x28'));return convertFile(_0x921510,_0x3543e8);})['then'](function(){try{fs[_0xa512('0x1a')](_0x921510);fs[_0xa512('0x2c')](_0x3543e8,_0xa512('0x2d'));}catch(_0x1775e){logger[_0xa512('0x1b')](_0x1775e);}logger[_0xa512('0x17')](_0xa512('0x48'),_0x3543e8[_0xa512('0x2e')]('.')[0x0]);return _0x3543e8[_0xa512('0x2e')]('.')[0x0];});};exports[_0xa512('0x49')]=function(_0x17a45e,_0x4ecbbd,_0x236da3){return google[_0xa512('0x4a')](_0x17a45e,_0x4ecbbd,_0x236da3)[_0xa512('0x2b')](function(_0x1b042c){logger[_0xa512('0x17')](_0x1b042c[_0xa512('0x4b')]);return rp(_0x1b042c);})[_0xa512('0x2b')](function(_0x310093){var _0x4af9c5='';var _0x4fdb16=0x0;try{fs[_0xa512('0x1a')](_0x17a45e);}catch(_0x3c59e9){logger['error'](_0x3c59e9);}if(_0x310093&&_0x310093['results']){_0x4af9c5=_0x310093[_0xa512('0x4c')][_0xa512('0x4d')](function(_0xc33de){return _0xc33de&&_0xc33de[_0xa512('0x4e')][0x0]&&_0xc33de['alternatives'][0x0]['transcript']?_0xc33de[_0xa512('0x4e')][0x0][_0xa512('0x4f')]:'';})[_0xa512('0x50')]('\x0a');_0x4fdb16=_0x310093[_0xa512('0x4c')][_0xa512('0x4d')](function(_0x509e27){return _0x509e27&&_0x509e27[_0xa512('0x4e')][0x0]&&_0x509e27[_0xa512('0x4e')][0x0][_0xa512('0x51')]?_0x509e27[_0xa512('0x4e')][0x0][_0xa512('0x51')]:0x0;})[_0xa512('0x50')]('\x0a');}logger[_0xa512('0x17')](_0xa512('0x52'),_0x4af9c5);logger[_0xa512('0x17')](_0xa512('0x53'),_0x4fdb16);return{'transcript':_0x4af9c5,'confidence':_0x4fdb16};})['catch'](function(_0xb047e9){logger[_0xa512('0x1b')]('[%s]\x20%s:%s',_0xb047e9[_0xa512('0x11')],_0xb047e9[_0xa512('0x54')],_0xb047e9[_0xa512('0x55')]);});};exports['googleDialogflow']=function(_0x2c134c,_0x1fe153,_0x3c4569,_0x499905){var _0x393447=apiai(_0x1fe153,{'language':_0x499905||'en'});return _0x393447[_0xa512('0x56')](_0x3c4569,{'sessionId':md5(_0x2c134c)})[_0xa512('0x2b')](function(_0x11cb99){logger[_0xa512('0x17')](JSON[_0xa512('0x41')](_0x11cb99));return{'source':_0x11cb99[_0xa512('0x57')][_0xa512('0x58')],'resolvedQuery':_0x11cb99[_0xa512('0x57')][_0xa512('0x59')],'action':_0x11cb99['result']['action'],'actionIncomplete':_0x11cb99[_0xa512('0x57')]['actionIncomplete'],'speech':_0x11cb99[_0xa512('0x57')]['fulfillment'][_0xa512('0x5a')],'score':_0x11cb99[_0xa512('0x57')][_0xa512('0x5b')],'statusCode':_0x11cb99['status'][_0xa512('0x5c')],'endConversation':_0x11cb99[_0xa512('0x57')][_0xa512('0x5d')]['endConversation']||![],'isFallbackIntent':_0x11cb99[_0xa512('0x57')][_0xa512('0x5d')][_0xa512('0x5e')]};});};exports[_0xa512('0x5f')]=function(_0x23bb77,_0x24606e,_0x43d313,_0xe9ccc9,_0x234ab2,_0x36cb7e){var _0x9f5d99=_0xe9ccc9[_0xa512('0x60')](/\\n/g,'\x0a');var _0x5de652={'credentials':{'private_key':_0x9f5d99,'client_email':_0x43d313}};var _0x297eb3=new dialogflow[(_0xa512('0x61'))](_0x5de652);var _0x1e4502=_0x297eb3[_0xa512('0x62')](_0x24606e,md5(_0x23bb77));var _0x1e4b81={'session':_0x1e4502,'queryInput':{'text':{'text':_0x234ab2,'languageCode':_0x36cb7e}}};return _0x297eb3[_0xa512('0x63')](_0x1e4b81)[_0xa512('0x2b')](function(_0x52c021){if(_0x52c021&&_0x52c021[_0xa512('0x46')]){logger[_0xa512('0x17')](_0xa512('0x64'),JSON[_0xa512('0x41')](_0x52c021));var _0x2aa0f7=_0x52c021[0x0];if(_0x2aa0f7){var _0x45a189={'action':_0x2aa0f7[_0xa512('0x65')][_0xa512('0x66')],'allRequiredParamsPresent':_0x2aa0f7[_0xa512('0x65')]['allRequiredParamsPresent'],'endConversation':_0x2aa0f7[_0xa512('0x65')][_0xa512('0x67')]&&_0x2aa0f7[_0xa512('0x65')][_0xa512('0x67')]['fields']?_0x2aa0f7[_0xa512('0x65')][_0xa512('0x67')][_0xa512('0x68')][_0xa512('0x69')][_0xa512('0x6a')]:![],'fulfillmentText':_0x2aa0f7['queryResult'][_0xa512('0x6b')],'intentName':_0x2aa0f7['queryResult'][_0xa512('0x6c')][_0xa512('0x54')],'intentDisplayName':_0x2aa0f7[_0xa512('0x65')][_0xa512('0x6c')]['displayName'],'isFallbackIntent':_0x2aa0f7[_0xa512('0x65')]['intent'][_0xa512('0x6d')],'languageCode':_0x2aa0f7[_0xa512('0x65')][_0xa512('0x6e')],'queryText':_0x2aa0f7['queryResult']['queryText'],'responseId':_0x2aa0f7['responseId'],'score':_0x2aa0f7[_0xa512('0x65')][_0xa512('0x6f')],'speech':_0x2aa0f7['queryResult'][_0xa512('0x6b')],'providerResponse':JSON[_0xa512('0x41')](_0x52c021)};return _0x45a189;}}});};exports[_0xa512('0x70')]=function(_0x24f25a,_0x30aa1a,_0x36f1e8,_0x39d6e7){return tilde[_0xa512('0x4a')](_0x24f25a,_0x30aa1a,_0x36f1e8,_0x39d6e7)[_0xa512('0x2b')](function(_0x4c2e0e){try{fs['unlink'](_0x24f25a);}catch(_0x2e00a9){logger[_0xa512('0x1b')](_0x2e00a9);}logger[_0xa512('0x17')]('Tilde\x20ASR\x20transcription',_0x4c2e0e['transcript']);logger['info']('Tilde\x20ASR\x20confidence',_0x4c2e0e[_0xa512('0x51')]);return _0x4c2e0e;});};exports[_0xa512('0x71')]=function(_0x4e8dbc,_0xbbf75,_0x43ce8c,_0x2eef1f,_0x3988f6,_0x3bdf1c){var _0x269d00=path[_0xa512('0x25')](__dirname,_0xa512('0x26'),rs['generate'](0x4)+_0xa512('0x38'));var _0x21103d;return aws[_0xa512('0x72')](_0x4e8dbc,_0xbbf75,_0x43ce8c,_0x2eef1f,_0x3988f6,_0x3bdf1c,_0x269d00)[_0xa512('0x2b')](function(){_0x21103d=path['resolve'](__dirname,_0xa512('0x26'),rs[_0xa512('0x27')](0x4)+_0xa512('0x28'));return convertFile(_0x269d00,_0x21103d);})[_0xa512('0x2b')](function(){try{fs[_0xa512('0x1a')](_0x269d00);fs[_0xa512('0x2c')](_0x21103d,_0xa512('0x2d'));}catch(_0x18e36c){logger[_0xa512('0x1b')](_0x18e36c);}return _0x21103d[_0xa512('0x2e')]('.')[0x0];});};exports[_0xa512('0x73')]=function(_0x32e5d3,_0x36fdac,_0x489f13,_0x274654,_0x392d9d,_0x8a92b6){return aws['lex'](_0x32e5d3,_0x36fdac,_0x489f13,_0x274654,_0x392d9d,_0x8a92b6)[_0xa512('0x2b')](function(_0x1711f9){logger[_0xa512('0x17')](JSON['stringify'](_0x1711f9));return _0x1711f9;});};exports['ispeechTTS']=function(_0x479493,_0x1cef7f,_0x7b9081,_0x3693e7){var _0x1a75ee=util[_0xa512('0x74')]('%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3',ISPEECH_API,_0x479493,encodeURIComponent(_0x1cef7f),_0x7b9081,_0x3693e7);var _0x3d1c26=path['resolve'](__dirname,'tmp',rs[_0xa512('0x27')](0x4)+_0xa512('0x38'));var _0x3d8dd2;return downloadFile(_0x1a75ee,_0x3d1c26)['then'](function(){_0x3d8dd2=path[_0xa512('0x25')](__dirname,_0xa512('0x26'),rs['generate'](0x4)+'.wav');return convertFile(_0x3d1c26,_0x3d8dd2);})[_0xa512('0x2b')](function(){try{fs[_0xa512('0x1a')](_0x3d1c26);fs[_0xa512('0x2c')](_0x3d8dd2,_0xa512('0x2d'));}catch(_0x16ecc8){logger[_0xa512('0x1b')](_0x16ecc8);}return _0x3d8dd2[_0xa512('0x2e')]('.')[0x0];});};exports['ispeechASR']=function(_0x306080,_0x501929,_0x265340,_0x43282e){var _0xbc26f=util[_0xa512('0x74')]('%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s',ISPEECH_API,_0x501929,_0x265340,base64Encode(_0x306080),_0x43282e?util['format'](_0xa512('0x75'),encodeURIComponent(_0x43282e)):'freeform=3');return uploadFile(_0xbc26f)[_0xa512('0x2b')](function(_0x4e77cb){return querystring[_0xa512('0x9')](_0x4e77cb);});};exports[_0xa512('0x76')]=function(_0x48ba40,_0x33bfc9){return sestek[_0xa512('0x77')](_0x48ba40,_0x33bfc9)[_0xa512('0x2b')](function(_0x54fb51){logger[_0xa512('0x17')](JSON[_0xa512('0x41')](_0x54fb51));var _0x2daa5c={'speech':_0x54fb51['text'],'action':_0x54fb51[_0xa512('0x78')]?_0x54fb51[_0xa512('0x78')]['CustomAction']:undefined,'actiondata':_0x54fb51[_0xa512('0x78')]?_0x54fb51[_0xa512('0x78')][_0xa512('0x79')]:undefined};if(_0x54fb51[_0xa512('0x78')]&&_0x54fb51[_0xa512('0x78')][_0xa512('0x7a')]){return base64Decode(_0x54fb51[_0xa512('0x78')]['AudioFromTts'][_0xa512('0x7b')],path[_0xa512('0x25')](__dirname,_0xa512('0x26'),rs[_0xa512('0x27')](0x4)+'.wav'))[_0xa512('0x2b')](function(_0x3434bf){_0x2daa5c['audiofile']=_0x3434bf;return _0x2daa5c;});}return _0x2daa5c;});};exports[_0xa512('0x7c')]=function(){return __dirname;};