763607f8d4becd00cd23b5f79c309391b90b2a7c
[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 _0x6426=['googleASR\x20transcription','googleASR\x20confidence','[%s]\x20%s:%s','name','message','textRequest','result','resolvedQuery','actionIncomplete','fulfillment','speech','score','status','code','metadata','endConversation','isFallbackIntent','replace','sessionPath','queryResult','action','allRequiredParamsPresent','diagnosticInfo','fields','fulfillmentText','intent','isFallback','languageCode','queryText','responseId','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','CustomAction','CustomActionData','AudioFromTts','Data','audiofile','dirName','apiai-promise','bluebird','dialogflow','https','md5','querystring','request-promise','randomstring','sox','google-tts-api','parse','util','./aws','./google','./sestek','./tilde','agi','https:','host','path','statusCode','error','request\x20to\x20','statusMessage','\x20failed,\x20status\x20code\x20=\x20','createWriteStream','finish\x20download\x20file','close','unlink','pipe','end','WHAT_EVER','transcode','wav','error\x20convert','finish\x20to\x20convert','start','resolve','tmp','.wav','writeFileSync','base64','then','chmodSync','777','readFileSync','toString','googleCloudTTS','https://texttospeech.googleapis.com/v1/','ssml','input','MP3','text:synthesize','POST','generate','.mp3','from','audioContent','writeFile','info','googleCloudTTS\x20path','split','googleTTS','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','utf8','application/x-www-form-urlencoded','f.req=','jQ1olc','stringify','generic','slice','parse\x20response\x20failed:\x0a','length','text\x20length\x20limit\x20reached','lang\x20\x22','data','googleASR','asr','uri','alternatives','transcript','results','map','confidence','join'];(function(_0x2cb39d,_0x1d4f6e){var _0x40cbdf=function(_0x2a0ef6){while(--_0x2a0ef6){_0x2cb39d['push'](_0x2cb39d['shift']());}};_0x40cbdf(++_0x1d4f6e);}(_0x6426,0x146));var _0x6642=function(_0x1c4b02,_0x55041f){_0x1c4b02=_0x1c4b02-0x0;var _0x495c5f=_0x6426[_0x1c4b02];return _0x495c5f;};'use strict';var apiai=require(_0x6642('0x0'));var BPromise=require(_0x6642('0x1'));var dialogflow=require(_0x6642('0x2'));var fs=require('fs');var http=require('http');var https=require(_0x6642('0x3'));var md5=require(_0x6642('0x4'));var path=require('path');var querystring=require(_0x6642('0x5'));var rp=require(_0x6642('0x6'));var rs=require(_0x6642('0x7'));var sox=require(_0x6642('0x8'));var tts=require(_0x6642('0x9'));var urlParse=require('url')[_0x6642('0xa')];var util=require(_0x6642('0xb'));var aws=require(_0x6642('0xc'));var google=require(_0x6642('0xd'));var sestek=require(_0x6642('0xe'));var tilde=require(_0x6642('0xf'));var logger=require('../../../config/logger')(_0x6642('0x10'));var ISPEECH_API='https://api.ispeech.org/api/rest';function downloadFile(_0xd44085,_0x193bea){return new BPromise(function(_0x518c26,_0x328519){var _0x362f2c=urlParse(_0xd44085);var _0x2169d1=_0x362f2c['protocol']===_0x6642('0x11')?https:http;var _0x1d765e={'host':_0x362f2c[_0x6642('0x12')],'path':_0x362f2c[_0x6642('0x13')],'headers':{'user-agent':'WHAT_EVER'}};_0x2169d1['get'](_0x1d765e,function(_0x4bc2f1){if(_0x4bc2f1[_0x6642('0x14')]!==0xc8){logger[_0x6642('0x15')](_0x6642('0x16')+_0xd44085+'\x20failed,\x20status\x20code\x20=\x20'+_0x4bc2f1[_0x6642('0x14')]+'\x20('+_0x4bc2f1[_0x6642('0x17')]+')');_0x328519(new Error(_0x6642('0x16')+_0xd44085+_0x6642('0x18')+_0x4bc2f1[_0x6642('0x14')]+'\x20('+_0x4bc2f1[_0x6642('0x17')]+')'));return;}var _0x336d53=fs[_0x6642('0x19')](_0x193bea);_0x336d53['on']('finish',function(){logger['info'](_0x6642('0x1a'));_0x336d53[_0x6642('0x1b')](_0x518c26);});_0x336d53['on']('error',function(_0x4fb04e){fs[_0x6642('0x1c')](_0x193bea);logger[_0x6642('0x15')]('download\x20error',_0x4fb04e);_0x328519(_0x4fb04e);});_0x4bc2f1[_0x6642('0x1d')](_0x336d53);})['on'](_0x6642('0x15'),function(_0x1c992a){logger[_0x6642('0x15')](_0x1c992a);_0x328519(_0x1c992a);})[_0x6642('0x1e')]();});}function uploadFile(_0x3f1d6e){return new BPromise(function(_0x2f074f,_0x413d17){var _0x847005=urlParse(_0x3f1d6e);var _0x91a5f1=_0x847005['protocol']===_0x6642('0x11')?https:http;var _0x43c846={'host':_0x847005['host'],'path':_0x847005[_0x6642('0x13')],'headers':{'user-agent':_0x6642('0x1f')}};_0x91a5f1['get'](_0x43c846,function(_0x216dc8){if(_0x216dc8[_0x6642('0x14')]!==0xc8){_0x413d17(new Error(_0x6642('0x16')+_0x3f1d6e+_0x6642('0x18')+_0x216dc8[_0x6642('0x14')]+'\x20('+_0x216dc8[_0x6642('0x17')]+')'));return;}var _0x48b212='';_0x216dc8['on']('data',function(_0x16a911){_0x48b212+=_0x16a911;});_0x216dc8['on'](_0x6642('0x1e'),function(){_0x2f074f(_0x48b212);});})['on'](_0x6642('0x15'),function(_0xfb8a4c){_0x413d17(_0xfb8a4c);})['end']();});}function convertFile(_0x195708,_0x3efc0b){return new BPromise(function(_0x29af5b,_0x34dbe4){var _0x127ad8=sox[_0x6642('0x20')](_0x195708,_0x3efc0b,{'sampleRate':0x1f40,'format':_0x6642('0x21'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x127ad8['on'](_0x6642('0x15'),function(_0x45b52a){logger['error'](_0x6642('0x22'),_0x45b52a);_0x34dbe4(_0x45b52a);});_0x127ad8['on'](_0x6642('0x1e'),function(){logger['info'](_0x6642('0x23'));_0x29af5b();});_0x127ad8[_0x6642('0x24')]();});}function base64Decode(_0x49e369,_0x231178){var _0x5bf595=path[_0x6642('0x25')](__dirname,_0x6642('0x26'),rs['generate'](0x4)+_0x6642('0x27'));fs[_0x6642('0x28')](_0x5bf595,_0x49e369,_0x6642('0x29'));return convertFile(_0x5bf595,_0x231178)[_0x6642('0x2a')](function(){try{fs[_0x6642('0x1c')](_0x5bf595);fs[_0x6642('0x2b')](_0x231178,_0x6642('0x2c'));}catch(_0x3b7aed){logger[_0x6642('0x15')](_0x3b7aed);}return _0x231178['split']('.')[0x0];});}function base64Encode(_0x1515ca){var _0x1bd1f7=fs[_0x6642('0x2d')](_0x1515ca);return new Buffer(_0x1bd1f7)[_0x6642('0x2e')](_0x6642('0x29'));}exports[_0x6642('0x2f')]=function(_0x661a4,_0x1ef6f9,_0x84e81c,_0x502168,_0x4402ec,_0x1eae57){var _0x4c4ee2,_0x7055ce;var _0x467bc0=_0x6642('0x30');var _0x5bb2eb='?key='+_0x661a4;var _0x47e3e5={};if(_0x1ef6f9===_0x6642('0x31')){_0x47e3e5[_0x6642('0x32')]={'ssml':_0x84e81c};}else{_0x47e3e5[_0x6642('0x32')]={'text':_0x84e81c};};_0x47e3e5['voice']={'languageCode':_0x502168,'ssmlGender':_0x4402ec};_0x47e3e5['audioConfig']={'audioEncoding':_0x6642('0x33'),'sampleRateHertz':0x1f40};var _0x30f484={'url':_0x467bc0+_0x6642('0x34')+_0x5bb2eb,'method':_0x6642('0x35'),'json':!![],'body':_0x47e3e5};return rp(_0x30f484)['then'](function(_0x65f480){return new BPromise(function(_0x19994e,_0x33e7d7){_0x4c4ee2=path[_0x6642('0x25')](__dirname,'tmp',rs[_0x6642('0x36')](0x4)+_0x6642('0x37'));var _0x3c4b20=Buffer[_0x6642('0x38')](_0x65f480[_0x6642('0x39')],_0x6642('0x29'));return fs[_0x6642('0x3a')](_0x4c4ee2,_0x3c4b20,function(_0x50d1c7){_0x33e7d7(_0x50d1c7);},function(_0x32db96){fs['chmodSync'](_0x4c4ee2,_0x6642('0x2c'));_0x19994e(_0x32db96);});});})['then'](function(_0x4b043c){_0x7055ce=path[_0x6642('0x25')](__dirname,'tmp',rs[_0x6642('0x36')](0x4)+_0x6642('0x27'));return convertFile(_0x4c4ee2,_0x7055ce);})[_0x6642('0x2a')](function(){try{fs[_0x6642('0x1c')](_0x4c4ee2);fs[_0x6642('0x2b')](_0x7055ce,_0x6642('0x2c'));}catch(_0x5f097a){logger[_0x6642('0x15')](_0x5f097a);}logger[_0x6642('0x3b')](_0x6642('0x3c'),_0x7055ce[_0x6642('0x3d')]('.')[0x0]);return _0x7055ce['split']('.')[0x0];});};exports[_0x6642('0x3e')]=function(_0xaf5ef,_0x36aeb7){var _0x28eb9a=_0x6642('0x3f');var _0x1c685d,_0x376e84;var _0x10be46;var _0x11c925={'encoding':_0x6642('0x40'),'method':'POST','timeout':0x2710,'url':_0x28eb9a,'headers':{'Content-Type':_0x6642('0x41')},'body':_0x6642('0x42')+encodeURIComponent(JSON['stringify']([[[_0x6642('0x43'),JSON[_0x6642('0x44')]([_0xaf5ef,_0x36aeb7||'en',![],'null']),null,_0x6642('0x45')]]]))};return rp(_0x11c925)[_0x6642('0x2a')](function(_0x2da18e){try{_0x10be46=eval(_0x2da18e[_0x6642('0x46')](0x5))[0x0][0x2];}catch(_0x20b212){throw new Error(_0x6642('0x47')+_0x2da18e['data']);}if(!_0x10be46){if(_0xaf5ef[_0x6642('0x48')]>0xc8){throw new Error(_0x6642('0x49'));}else{throw new Error(_0x6642('0x4a')+_0x36aeb7+'\x22\x20might\x20not\x20exist');}}try{_0x10be46=eval(_0x10be46)[0x0];}catch(_0x152d84){throw new Error('parse\x20response\x20failed:\x0a'+res[_0x6642('0x4b')]);}const _0x4e3ff1=_0x10be46;_0x1c685d=path[_0x6642('0x25')](__dirname,'tmp',rs[_0x6642('0x36')](0x4)+_0x6642('0x37'));fs[_0x6642('0x28')](_0x1c685d,_0x10be46,{'encoding':'base64'});_0x376e84=path[_0x6642('0x25')](__dirname,_0x6642('0x26'),rs[_0x6642('0x36')](0x4)+_0x6642('0x27'));return convertFile(_0x1c685d,_0x376e84);})[_0x6642('0x2a')](function(){try{fs[_0x6642('0x1c')](_0x1c685d);fs[_0x6642('0x2b')](_0x376e84,_0x6642('0x2c'));}catch(_0x183065){logger[_0x6642('0x15')](_0x183065);}logger[_0x6642('0x3b')]('goggleTTS\x20path',_0x376e84[_0x6642('0x3d')]('.')[0x0]);return _0x376e84['split']('.')[0x0];});};exports[_0x6642('0x4c')]=function(_0x516430,_0x5b0f71,_0x14cb78){return google[_0x6642('0x4d')](_0x516430,_0x5b0f71,_0x14cb78)[_0x6642('0x2a')](function(_0x52058f){logger[_0x6642('0x3b')](_0x52058f[_0x6642('0x4e')]);return rp(_0x52058f);})[_0x6642('0x2a')](function(_0x191238){var _0x55c3e8='';var _0xa8b2ac=0x0;try{fs[_0x6642('0x1c')](_0x516430);}catch(_0x42a8cd){logger['error'](_0x42a8cd);}if(_0x191238&&_0x191238['results']){_0x55c3e8=_0x191238['results']['map'](function(_0x1f7908){return _0x1f7908&&_0x1f7908[_0x6642('0x4f')][0x0]&&_0x1f7908[_0x6642('0x4f')][0x0][_0x6642('0x50')]?_0x1f7908[_0x6642('0x4f')][0x0]['transcript']:'';})['join']('\x0a');_0xa8b2ac=_0x191238[_0x6642('0x51')][_0x6642('0x52')](function(_0x14ae6a){return _0x14ae6a&&_0x14ae6a['alternatives'][0x0]&&_0x14ae6a[_0x6642('0x4f')][0x0]['confidence']?_0x14ae6a['alternatives'][0x0][_0x6642('0x53')]:0x0;})[_0x6642('0x54')]('\x0a');}logger[_0x6642('0x3b')](_0x6642('0x55'),_0x55c3e8);logger[_0x6642('0x3b')](_0x6642('0x56'),_0xa8b2ac);return{'transcript':_0x55c3e8,'confidence':_0xa8b2ac};})['catch'](function(_0x342fe2){logger[_0x6642('0x15')](_0x6642('0x57'),_0x342fe2['statusCode'],_0x342fe2[_0x6642('0x58')],_0x342fe2[_0x6642('0x59')]);});};exports['googleDialogflow']=function(_0x28c1bd,_0x406a78,_0x82fb07,_0x466be8){var _0x3db4fc=apiai(_0x406a78,{'language':_0x466be8||'en'});return _0x3db4fc[_0x6642('0x5a')](_0x82fb07,{'sessionId':md5(_0x28c1bd)})[_0x6642('0x2a')](function(_0x33fff5){logger['info'](JSON['stringify'](_0x33fff5));return{'source':_0x33fff5[_0x6642('0x5b')]['source'],'resolvedQuery':_0x33fff5[_0x6642('0x5b')][_0x6642('0x5c')],'action':_0x33fff5['result']['action'],'actionIncomplete':_0x33fff5[_0x6642('0x5b')][_0x6642('0x5d')],'speech':_0x33fff5[_0x6642('0x5b')][_0x6642('0x5e')][_0x6642('0x5f')],'score':_0x33fff5[_0x6642('0x5b')][_0x6642('0x60')],'statusCode':_0x33fff5[_0x6642('0x61')][_0x6642('0x62')],'endConversation':_0x33fff5[_0x6642('0x5b')][_0x6642('0x63')][_0x6642('0x64')]||![],'isFallbackIntent':_0x33fff5[_0x6642('0x5b')][_0x6642('0x63')][_0x6642('0x65')]};});};exports['googleDialogflowV2']=function(_0x572df0,_0x6268ca,_0x3c3c3a,_0x54311a,_0x281526,_0xee7905){var _0x4dd86d=_0x54311a[_0x6642('0x66')](/\\n/g,'\x0a');var _0x3da271={'credentials':{'private_key':_0x4dd86d,'client_email':_0x3c3c3a}};var _0xd1213b=new dialogflow['SessionsClient'](_0x3da271);var _0x5f0649=_0xd1213b[_0x6642('0x67')](_0x6268ca,md5(_0x572df0));var _0xede5af={'session':_0x5f0649,'queryInput':{'text':{'text':_0x281526,'languageCode':_0xee7905}}};return _0xd1213b['detectIntent'](_0xede5af)[_0x6642('0x2a')](function(_0x124d63){if(_0x124d63&&_0x124d63[_0x6642('0x48')]){logger[_0x6642('0x3b')]('Dialogflow\x20V2\x20response:',JSON[_0x6642('0x44')](_0x124d63));var _0x5b35a0=_0x124d63[0x0];if(_0x5b35a0){var _0x307eee={'action':_0x5b35a0[_0x6642('0x68')][_0x6642('0x69')],'allRequiredParamsPresent':_0x5b35a0['queryResult'][_0x6642('0x6a')],'endConversation':_0x5b35a0[_0x6642('0x68')][_0x6642('0x6b')]&&_0x5b35a0[_0x6642('0x68')][_0x6642('0x6b')][_0x6642('0x6c')]?_0x5b35a0[_0x6642('0x68')][_0x6642('0x6b')][_0x6642('0x6c')]['end_conversation']['boolValue']:![],'fulfillmentText':_0x5b35a0['queryResult'][_0x6642('0x6d')],'intentName':_0x5b35a0[_0x6642('0x68')][_0x6642('0x6e')][_0x6642('0x58')],'intentDisplayName':_0x5b35a0[_0x6642('0x68')][_0x6642('0x6e')]['displayName'],'isFallbackIntent':_0x5b35a0[_0x6642('0x68')][_0x6642('0x6e')][_0x6642('0x6f')],'languageCode':_0x5b35a0[_0x6642('0x68')][_0x6642('0x70')],'queryText':_0x5b35a0[_0x6642('0x68')][_0x6642('0x71')],'responseId':_0x5b35a0[_0x6642('0x72')],'score':_0x5b35a0[_0x6642('0x68')]['intentDetectionConfidence'],'speech':_0x5b35a0['queryResult'][_0x6642('0x6d')],'providerResponse':JSON[_0x6642('0x44')](_0x124d63)};return _0x307eee;}}});};exports[_0x6642('0x73')]=function(_0x17e75e,_0x20687d,_0x39c1c5,_0x1337a1){return tilde[_0x6642('0x4d')](_0x17e75e,_0x20687d,_0x39c1c5,_0x1337a1)[_0x6642('0x2a')](function(_0x41dd13){try{fs[_0x6642('0x1c')](_0x17e75e);}catch(_0x285ea8){logger[_0x6642('0x15')](_0x285ea8);}logger['info'](_0x6642('0x74'),_0x41dd13[_0x6642('0x50')]);logger[_0x6642('0x3b')](_0x6642('0x75'),_0x41dd13[_0x6642('0x53')]);return _0x41dd13;});};exports[_0x6642('0x76')]=function(_0x39e3e4,_0xeecdc7,_0x51a0b7,_0x5de272,_0x17c563,_0x4a532b){var _0x19b6dc=path[_0x6642('0x25')](__dirname,_0x6642('0x26'),rs['generate'](0x4)+_0x6642('0x37'));var _0x531452;return aws[_0x6642('0x77')](_0x39e3e4,_0xeecdc7,_0x51a0b7,_0x5de272,_0x17c563,_0x4a532b,_0x19b6dc)[_0x6642('0x2a')](function(){_0x531452=path[_0x6642('0x25')](__dirname,_0x6642('0x26'),rs[_0x6642('0x36')](0x4)+_0x6642('0x27'));return convertFile(_0x19b6dc,_0x531452);})['then'](function(){try{fs[_0x6642('0x1c')](_0x19b6dc);fs['chmodSync'](_0x531452,_0x6642('0x2c'));}catch(_0x23d522){logger[_0x6642('0x15')](_0x23d522);}return _0x531452[_0x6642('0x3d')]('.')[0x0];});};exports['awsLex']=function(_0x371497,_0x4c5898,_0x460870,_0x2288c6,_0x4015ad,_0x530374){return aws[_0x6642('0x78')](_0x371497,_0x4c5898,_0x460870,_0x2288c6,_0x4015ad,_0x530374)[_0x6642('0x2a')](function(_0x10c5f7){logger[_0x6642('0x3b')](JSON[_0x6642('0x44')](_0x10c5f7));return _0x10c5f7;});};exports['ispeechTTS']=function(_0x3606f3,_0x1f9a36,_0x5ebdec,_0x25a626){var _0x43ce65=util[_0x6642('0x79')](_0x6642('0x7a'),ISPEECH_API,_0x3606f3,encodeURIComponent(_0x1f9a36),_0x5ebdec,_0x25a626);var _0x46d60b=path[_0x6642('0x25')](__dirname,_0x6642('0x26'),rs[_0x6642('0x36')](0x4)+_0x6642('0x37'));var _0x1aa1b2;return downloadFile(_0x43ce65,_0x46d60b)[_0x6642('0x2a')](function(){_0x1aa1b2=path['resolve'](__dirname,_0x6642('0x26'),rs[_0x6642('0x36')](0x4)+_0x6642('0x27'));return convertFile(_0x46d60b,_0x1aa1b2);})[_0x6642('0x2a')](function(){try{fs[_0x6642('0x1c')](_0x46d60b);fs[_0x6642('0x2b')](_0x1aa1b2,_0x6642('0x2c'));}catch(_0x1f4e9a){logger[_0x6642('0x15')](_0x1f4e9a);}return _0x1aa1b2[_0x6642('0x3d')]('.')[0x0];});};exports[_0x6642('0x7b')]=function(_0x11b40a,_0x5b32f1,_0x124c57,_0x570faa){var _0x28d2b3=util[_0x6642('0x79')](_0x6642('0x7c'),ISPEECH_API,_0x5b32f1,_0x124c57,base64Encode(_0x11b40a),_0x570faa?util['format'](_0x6642('0x7d'),encodeURIComponent(_0x570faa)):_0x6642('0x7e'));return uploadFile(_0x28d2b3)[_0x6642('0x2a')](function(_0x5c0b49){return querystring['parse'](_0x5c0b49);});};exports[_0x6642('0x7f')]=function(_0x578228,_0x5859f8){return sestek[_0x6642('0x80')](_0x578228,_0x5859f8)[_0x6642('0x2a')](function(_0x987d35){logger['info'](JSON['stringify'](_0x987d35));var _0x52e0b5={'speech':_0x987d35[_0x6642('0x81')],'action':_0x987d35['channelData']?_0x987d35[_0x6642('0x82')][_0x6642('0x83')]:undefined,'actiondata':_0x987d35[_0x6642('0x82')]?_0x987d35['channelData'][_0x6642('0x84')]:undefined};if(_0x987d35['channelData']&&_0x987d35[_0x6642('0x82')][_0x6642('0x85')]){return base64Decode(_0x987d35[_0x6642('0x82')][_0x6642('0x85')][_0x6642('0x86')],path[_0x6642('0x25')](__dirname,'tmp',rs[_0x6642('0x36')](0x4)+_0x6642('0x27')))[_0x6642('0x2a')](function(_0x1963ff){_0x52e0b5[_0x6642('0x87')]=_0x1963ff;return _0x52e0b5;});}return _0x52e0b5;});};exports[_0x6642('0x88')]=function(){return __dirname;};