Built motion from commit 753c950e.|2.5.42
[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 _0x6e44=['fulfillment','score','code','endConversation','replace','SessionsClient','sessionPath','detectIntent','Dialogflow\x20V2\x20response:','action','queryResult','diagnosticInfo','fields','end_conversation','boolValue','fulfillmentText','intent','displayName','isFallback','queryText','responseId','intentDetectionConfidence','tildeASR','Tilde\x20ASR\x20transcription','awsPolly','awsLex','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','sestekNDA','nda','text','channelData','CustomAction','CustomActionData','AudioFromTts','Data','audiofile','dirName','http','https','md5','path','querystring','request-promise','randomstring','sox','google-tts-api','parse','./aws','./google','./sestek','./tilde','../../../config/logger','agi','https://api.ispeech.org/api/rest','https:','host','get','request\x20to\x20','\x20failed,\x20status\x20code\x20=\x20','statusCode','statusMessage','finish','info','finish\x20download\x20file','error','unlink','download\x20error','pipe','end','protocol','WHAT_EVER','data','wav','error\x20convert','finish\x20to\x20convert','start','.wav','writeFileSync','base64','then','chmodSync','777','readFileSync','toString','googleCloudTTS','https://texttospeech.googleapis.com/v1/','?key=','ssml','input','text:synthesize','POST','generate','.mp3','from','audioContent','resolve','tmp','googleCloudTTS\x20path','split','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','application/x-www-form-urlencoded','f.req=','stringify','jQ1olc','null','slice','parse\x20response\x20failed:\x0a','length','text\x20length\x20limit\x20reached','lang\x20\x22','\x22\x20might\x20not\x20exist','goggleTTS\x20path','googleASR','asr','uri','results','alternatives','transcript','map','confidence','join','googleASR\x20transcription','googleASR\x20confidence','[%s]\x20%s:%s','name','message','googleDialogflow','textRequest','resolvedQuery','result','actionIncomplete'];(function(_0x3ac882,_0x370ae4){var _0x505c4c=function(_0x2abd9c){while(--_0x2abd9c){_0x3ac882['push'](_0x3ac882['shift']());}};_0x505c4c(++_0x370ae4);}(_0x6e44,0xb2));var _0x46e4=function(_0x2594e0,_0x1ee198){_0x2594e0=_0x2594e0-0x0;var _0x1eadb9=_0x6e44[_0x2594e0];return _0x1eadb9;};'use strict';var apiai=require('apiai-promise');var BPromise=require('bluebird');var dialogflow=require('dialogflow');var fs=require('fs');var http=require(_0x46e4('0x0'));var https=require(_0x46e4('0x1'));var md5=require(_0x46e4('0x2'));var path=require(_0x46e4('0x3'));var querystring=require(_0x46e4('0x4'));var rp=require(_0x46e4('0x5'));var rs=require(_0x46e4('0x6'));var sox=require(_0x46e4('0x7'));var tts=require(_0x46e4('0x8'));var urlParse=require('url')[_0x46e4('0x9')];var util=require('util');var aws=require(_0x46e4('0xa'));var google=require(_0x46e4('0xb'));var sestek=require(_0x46e4('0xc'));var tilde=require(_0x46e4('0xd'));var logger=require(_0x46e4('0xe'))(_0x46e4('0xf'));var ISPEECH_API=_0x46e4('0x10');function downloadFile(_0x58d037,_0x504500){return new BPromise(function(_0x19f363,_0x249c22){var _0x289e55=urlParse(_0x58d037);var _0x54831b=_0x289e55['protocol']===_0x46e4('0x11')?https:http;var _0x1eb37d={'host':_0x289e55[_0x46e4('0x12')],'path':_0x289e55[_0x46e4('0x3')],'headers':{'user-agent':'WHAT_EVER'}};_0x54831b[_0x46e4('0x13')](_0x1eb37d,function(_0x148a56){if(_0x148a56['statusCode']!==0xc8){logger['error'](_0x46e4('0x14')+_0x58d037+_0x46e4('0x15')+_0x148a56[_0x46e4('0x16')]+'\x20('+_0x148a56[_0x46e4('0x17')]+')');_0x249c22(new Error(_0x46e4('0x14')+_0x58d037+_0x46e4('0x15')+_0x148a56[_0x46e4('0x16')]+'\x20('+_0x148a56[_0x46e4('0x17')]+')'));return;}var _0x232710=fs['createWriteStream'](_0x504500);_0x232710['on'](_0x46e4('0x18'),function(){logger[_0x46e4('0x19')](_0x46e4('0x1a'));_0x232710['close'](_0x19f363);});_0x232710['on'](_0x46e4('0x1b'),function(_0x2b40c1){fs[_0x46e4('0x1c')](_0x504500);logger[_0x46e4('0x1b')](_0x46e4('0x1d'),_0x2b40c1);_0x249c22(_0x2b40c1);});_0x148a56[_0x46e4('0x1e')](_0x232710);})['on']('error',function(_0x1128ba){logger[_0x46e4('0x1b')](_0x1128ba);_0x249c22(_0x1128ba);})[_0x46e4('0x1f')]();});}function uploadFile(_0x48df90){return new BPromise(function(_0x467a03,_0x12fb59){var _0x21a3f2=urlParse(_0x48df90);var _0x5854df=_0x21a3f2[_0x46e4('0x20')]===_0x46e4('0x11')?https:http;var _0x2c757b={'host':_0x21a3f2[_0x46e4('0x12')],'path':_0x21a3f2[_0x46e4('0x3')],'headers':{'user-agent':_0x46e4('0x21')}};_0x5854df[_0x46e4('0x13')](_0x2c757b,function(_0xa4cf0e){if(_0xa4cf0e[_0x46e4('0x16')]!==0xc8){_0x12fb59(new Error(_0x46e4('0x14')+_0x48df90+_0x46e4('0x15')+_0xa4cf0e['statusCode']+'\x20('+_0xa4cf0e[_0x46e4('0x17')]+')'));return;}var _0x4f105c='';_0xa4cf0e['on'](_0x46e4('0x22'),function(_0x422eb0){_0x4f105c+=_0x422eb0;});_0xa4cf0e['on'](_0x46e4('0x1f'),function(){_0x467a03(_0x4f105c);});})['on'](_0x46e4('0x1b'),function(_0x33dfba){_0x12fb59(_0x33dfba);})[_0x46e4('0x1f')]();});}function convertFile(_0xcd1a6c,_0x50db2a){return new BPromise(function(_0x3fdd5e,_0x851e66){var _0x118431=sox['transcode'](_0xcd1a6c,_0x50db2a,{'sampleRate':0x1f40,'format':_0x46e4('0x23'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x118431['on'](_0x46e4('0x1b'),function(_0x4a8171){logger[_0x46e4('0x1b')](_0x46e4('0x24'),_0x4a8171);_0x851e66(_0x4a8171);});_0x118431['on']('end',function(){logger[_0x46e4('0x19')](_0x46e4('0x25'));_0x3fdd5e();});_0x118431[_0x46e4('0x26')]();});}function base64Decode(_0x379d5e,_0x37d375){var _0x1977f9=path['resolve'](__dirname,'tmp',rs['generate'](0x4)+_0x46e4('0x27'));fs[_0x46e4('0x28')](_0x1977f9,_0x379d5e,_0x46e4('0x29'));return convertFile(_0x1977f9,_0x37d375)[_0x46e4('0x2a')](function(){try{fs[_0x46e4('0x1c')](_0x1977f9);fs[_0x46e4('0x2b')](_0x37d375,_0x46e4('0x2c'));}catch(_0x5da4bf){logger['error'](_0x5da4bf);}return _0x37d375['split']('.')[0x0];});}function base64Encode(_0x240fc2){var _0x214f32=fs[_0x46e4('0x2d')](_0x240fc2);return new Buffer(_0x214f32)[_0x46e4('0x2e')](_0x46e4('0x29'));}exports[_0x46e4('0x2f')]=function(_0x3011e2,_0x34918a,_0x30449e,_0x3fd37b,_0x3a07c8,_0x2af84d){var _0xf6111b,_0x3c8fd3;var _0x5f57de=_0x46e4('0x30');var _0x524cbe=_0x46e4('0x31')+_0x3011e2;var _0x10a8e5={};if(_0x34918a===_0x46e4('0x32')){_0x10a8e5[_0x46e4('0x33')]={'ssml':_0x30449e};}else{_0x10a8e5[_0x46e4('0x33')]={'text':_0x30449e};};_0x10a8e5['voice']={'languageCode':_0x3fd37b,'ssmlGender':_0x3a07c8};_0x10a8e5['audioConfig']={'audioEncoding':'MP3','sampleRateHertz':0x1f40};var _0x1a4365={'url':_0x5f57de+_0x46e4('0x34')+_0x524cbe,'method':_0x46e4('0x35'),'json':!![],'body':_0x10a8e5};return rp(_0x1a4365)['then'](function(_0x29605b){return new BPromise(function(_0x3003dc,_0x37a42d){_0xf6111b=path['resolve'](__dirname,'tmp',rs[_0x46e4('0x36')](0x4)+_0x46e4('0x37'));var _0x5d771e=Buffer[_0x46e4('0x38')](_0x29605b[_0x46e4('0x39')],_0x46e4('0x29'));return fs['writeFile'](_0xf6111b,_0x5d771e,function(_0x4720da){_0x37a42d(_0x4720da);},function(_0x55d8cd){fs[_0x46e4('0x2b')](_0xf6111b,'777');_0x3003dc(_0x55d8cd);});});})[_0x46e4('0x2a')](function(_0x353b80){_0x3c8fd3=path[_0x46e4('0x3a')](__dirname,_0x46e4('0x3b'),rs['generate'](0x4)+_0x46e4('0x27'));return convertFile(_0xf6111b,_0x3c8fd3);})[_0x46e4('0x2a')](function(){try{fs[_0x46e4('0x1c')](_0xf6111b);fs['chmodSync'](_0x3c8fd3,_0x46e4('0x2c'));}catch(_0x4b73bc){logger['error'](_0x4b73bc);}logger[_0x46e4('0x19')](_0x46e4('0x3c'),_0x3c8fd3[_0x46e4('0x3d')]('.')[0x0]);return _0x3c8fd3['split']('.')[0x0];});};exports['googleTTS']=function(_0x2063cb,_0x553a3a){var _0x356dae=_0x46e4('0x3e');var _0x4e3366,_0x18300a;var _0x32925;var _0x46fbca={'encoding':'utf8','method':'POST','timeout':0x2710,'url':_0x356dae,'headers':{'Content-Type':_0x46e4('0x3f')},'body':_0x46e4('0x40')+encodeURIComponent(JSON[_0x46e4('0x41')]([[[_0x46e4('0x42'),JSON[_0x46e4('0x41')]([_0x2063cb,_0x553a3a||'en',![],_0x46e4('0x43')]),null,'generic']]]))};return rp(_0x46fbca)[_0x46e4('0x2a')](function(_0x57f48d){try{_0x32925=eval(_0x57f48d[_0x46e4('0x44')](0x5))[0x0][0x2];}catch(_0x18abaa){throw new Error(_0x46e4('0x45')+_0x57f48d[_0x46e4('0x22')]);}if(!_0x32925){if(_0x2063cb[_0x46e4('0x46')]>0xc8){throw new Error(_0x46e4('0x47'));}else{throw new Error(_0x46e4('0x48')+_0x553a3a+_0x46e4('0x49'));}}try{_0x32925=eval(_0x32925)[0x0];}catch(_0x7ebc3d){throw new Error('parse\x20response\x20failed:\x0a'+res[_0x46e4('0x22')]);}const _0x2786a1=_0x32925;_0x4e3366=path[_0x46e4('0x3a')](__dirname,_0x46e4('0x3b'),rs[_0x46e4('0x36')](0x4)+'.mp3');fs[_0x46e4('0x28')](_0x4e3366,_0x32925,{'encoding':_0x46e4('0x29')});_0x18300a=path[_0x46e4('0x3a')](__dirname,'tmp',rs[_0x46e4('0x36')](0x4)+_0x46e4('0x27'));return convertFile(_0x4e3366,_0x18300a);})[_0x46e4('0x2a')](function(){try{fs['unlink'](_0x4e3366);fs[_0x46e4('0x2b')](_0x18300a,'777');}catch(_0x52a80e){logger[_0x46e4('0x1b')](_0x52a80e);}logger[_0x46e4('0x19')](_0x46e4('0x4a'),_0x18300a[_0x46e4('0x3d')]('.')[0x0]);return _0x18300a['split']('.')[0x0];});};exports[_0x46e4('0x4b')]=function(_0x4786ad,_0x3d3efd,_0x550e40){return google[_0x46e4('0x4c')](_0x4786ad,_0x3d3efd,_0x550e40)[_0x46e4('0x2a')](function(_0x44c5ea){logger[_0x46e4('0x19')](_0x44c5ea[_0x46e4('0x4d')]);return rp(_0x44c5ea);})['then'](function(_0x204c63){var _0x2c1f31='';var _0x40e0ae=0x0;try{fs['unlink'](_0x4786ad);}catch(_0x4f9903){logger[_0x46e4('0x1b')](_0x4f9903);}if(_0x204c63&&_0x204c63[_0x46e4('0x4e')]){_0x2c1f31=_0x204c63['results']['map'](function(_0x533f33){return _0x533f33&&_0x533f33[_0x46e4('0x4f')][0x0]&&_0x533f33[_0x46e4('0x4f')][0x0]['transcript']?_0x533f33[_0x46e4('0x4f')][0x0][_0x46e4('0x50')]:'';})['join']('\x0a');_0x40e0ae=_0x204c63[_0x46e4('0x4e')][_0x46e4('0x51')](function(_0x27f047){return _0x27f047&&_0x27f047[_0x46e4('0x4f')][0x0]&&_0x27f047[_0x46e4('0x4f')][0x0]['confidence']?_0x27f047[_0x46e4('0x4f')][0x0][_0x46e4('0x52')]:0x0;})[_0x46e4('0x53')]('\x0a');}logger[_0x46e4('0x19')](_0x46e4('0x54'),_0x2c1f31);logger[_0x46e4('0x19')](_0x46e4('0x55'),_0x40e0ae);return{'transcript':_0x2c1f31,'confidence':_0x40e0ae};})['catch'](function(_0x2bd23a){logger[_0x46e4('0x1b')](_0x46e4('0x56'),_0x2bd23a[_0x46e4('0x16')],_0x2bd23a[_0x46e4('0x57')],_0x2bd23a[_0x46e4('0x58')]);});};exports[_0x46e4('0x59')]=function(_0x486d40,_0x7068f0,_0x2ecdc1,_0x4e28ce){var _0x1a1a3a=apiai(_0x7068f0,{'language':_0x4e28ce||'en'});return _0x1a1a3a[_0x46e4('0x5a')](_0x2ecdc1,{'sessionId':md5(_0x486d40)})['then'](function(_0x1c8c94){logger['info'](JSON[_0x46e4('0x41')](_0x1c8c94));return{'source':_0x1c8c94['result']['source'],'resolvedQuery':_0x1c8c94['result'][_0x46e4('0x5b')],'action':_0x1c8c94[_0x46e4('0x5c')]['action'],'actionIncomplete':_0x1c8c94[_0x46e4('0x5c')][_0x46e4('0x5d')],'speech':_0x1c8c94[_0x46e4('0x5c')][_0x46e4('0x5e')]['speech'],'score':_0x1c8c94[_0x46e4('0x5c')][_0x46e4('0x5f')],'statusCode':_0x1c8c94['status'][_0x46e4('0x60')],'endConversation':_0x1c8c94['result']['metadata'][_0x46e4('0x61')]||![],'isFallbackIntent':_0x1c8c94[_0x46e4('0x5c')]['metadata']['isFallbackIntent']};});};exports['googleDialogflowV2']=function(_0xa53cbb,_0x15ddb0,_0xf8da19,_0x26c9a6,_0x3e09d7,_0x56b9e3){var _0x1b6258=_0x26c9a6[_0x46e4('0x62')](/\\n/g,'\x0a');var _0x5be43b={'credentials':{'private_key':_0x1b6258,'client_email':_0xf8da19}};var _0x3b8ed3=new dialogflow[(_0x46e4('0x63'))](_0x5be43b);var _0x1ce5de=_0x3b8ed3[_0x46e4('0x64')](_0x15ddb0,md5(_0xa53cbb));var _0x159c48={'session':_0x1ce5de,'queryInput':{'text':{'text':_0x3e09d7,'languageCode':_0x56b9e3}}};return _0x3b8ed3[_0x46e4('0x65')](_0x159c48)[_0x46e4('0x2a')](function(_0x572b14){if(_0x572b14&&_0x572b14['length']){logger[_0x46e4('0x19')](_0x46e4('0x66'),JSON['stringify'](_0x572b14));var _0x5be1ef=_0x572b14[0x0];if(_0x5be1ef){var _0x5492b6={'action':_0x5be1ef['queryResult'][_0x46e4('0x67')],'allRequiredParamsPresent':_0x5be1ef[_0x46e4('0x68')]['allRequiredParamsPresent'],'endConversation':_0x5be1ef[_0x46e4('0x68')]['diagnosticInfo']&&_0x5be1ef[_0x46e4('0x68')][_0x46e4('0x69')][_0x46e4('0x6a')]?_0x5be1ef[_0x46e4('0x68')][_0x46e4('0x69')]['fields'][_0x46e4('0x6b')][_0x46e4('0x6c')]:![],'fulfillmentText':_0x5be1ef[_0x46e4('0x68')][_0x46e4('0x6d')],'intentName':_0x5be1ef['queryResult'][_0x46e4('0x6e')][_0x46e4('0x57')],'intentDisplayName':_0x5be1ef[_0x46e4('0x68')][_0x46e4('0x6e')][_0x46e4('0x6f')],'isFallbackIntent':_0x5be1ef[_0x46e4('0x68')][_0x46e4('0x6e')][_0x46e4('0x70')],'languageCode':_0x5be1ef['queryResult']['languageCode'],'queryText':_0x5be1ef['queryResult'][_0x46e4('0x71')],'responseId':_0x5be1ef[_0x46e4('0x72')],'score':_0x5be1ef[_0x46e4('0x68')][_0x46e4('0x73')],'speech':_0x5be1ef['queryResult']['fulfillmentText'],'providerResponse':JSON[_0x46e4('0x41')](_0x572b14)};return _0x5492b6;}}});};exports[_0x46e4('0x74')]=function(_0xad5200,_0x341fa8,_0x3d5d56,_0x50586c){return tilde[_0x46e4('0x4c')](_0xad5200,_0x341fa8,_0x3d5d56,_0x50586c)[_0x46e4('0x2a')](function(_0x1e4f54){try{fs[_0x46e4('0x1c')](_0xad5200);}catch(_0x6399c6){logger[_0x46e4('0x1b')](_0x6399c6);}logger[_0x46e4('0x19')](_0x46e4('0x75'),_0x1e4f54['transcript']);logger[_0x46e4('0x19')]('Tilde\x20ASR\x20confidence',_0x1e4f54[_0x46e4('0x52')]);return _0x1e4f54;});};exports[_0x46e4('0x76')]=function(_0x227f1c,_0x5f0797,_0x55a7d6,_0x5e490d,_0x246d01,_0x14f6fc){var _0xf5c67f=path[_0x46e4('0x3a')](__dirname,_0x46e4('0x3b'),rs['generate'](0x4)+_0x46e4('0x37'));var _0x12a9cd;return aws['polly'](_0x227f1c,_0x5f0797,_0x55a7d6,_0x5e490d,_0x246d01,_0x14f6fc,_0xf5c67f)[_0x46e4('0x2a')](function(){_0x12a9cd=path[_0x46e4('0x3a')](__dirname,'tmp',rs[_0x46e4('0x36')](0x4)+_0x46e4('0x27'));return convertFile(_0xf5c67f,_0x12a9cd);})[_0x46e4('0x2a')](function(){try{fs[_0x46e4('0x1c')](_0xf5c67f);fs[_0x46e4('0x2b')](_0x12a9cd,_0x46e4('0x2c'));}catch(_0x350f8b){logger['error'](_0x350f8b);}return _0x12a9cd[_0x46e4('0x3d')]('.')[0x0];});};exports[_0x46e4('0x77')]=function(_0x12427e,_0x221f73,_0x35c43f,_0x5425c7,_0x1d81b9,_0x6a2a34){return aws[_0x46e4('0x78')](_0x12427e,_0x221f73,_0x35c43f,_0x5425c7,_0x1d81b9,_0x6a2a34)['then'](function(_0x5c4d8e){logger[_0x46e4('0x19')](JSON[_0x46e4('0x41')](_0x5c4d8e));return _0x5c4d8e;});};exports['ispeechTTS']=function(_0x2db69b,_0x344ed2,_0x35b69e,_0x3b64db){var _0x5ee13d=util[_0x46e4('0x79')](_0x46e4('0x7a'),ISPEECH_API,_0x2db69b,encodeURIComponent(_0x344ed2),_0x35b69e,_0x3b64db);var _0x3e452d=path[_0x46e4('0x3a')](__dirname,_0x46e4('0x3b'),rs[_0x46e4('0x36')](0x4)+_0x46e4('0x37'));var _0xd7a775;return downloadFile(_0x5ee13d,_0x3e452d)[_0x46e4('0x2a')](function(){_0xd7a775=path[_0x46e4('0x3a')](__dirname,_0x46e4('0x3b'),rs[_0x46e4('0x36')](0x4)+_0x46e4('0x27'));return convertFile(_0x3e452d,_0xd7a775);})[_0x46e4('0x2a')](function(){try{fs[_0x46e4('0x1c')](_0x3e452d);fs[_0x46e4('0x2b')](_0xd7a775,'777');}catch(_0x253bef){logger[_0x46e4('0x1b')](_0x253bef);}return _0xd7a775[_0x46e4('0x3d')]('.')[0x0];});};exports[_0x46e4('0x7b')]=function(_0xc20e0b,_0x34af28,_0x304330,_0xd53f96){var _0x339f22=util[_0x46e4('0x79')](_0x46e4('0x7c'),ISPEECH_API,_0x34af28,_0x304330,base64Encode(_0xc20e0b),_0xd53f96?util['format'](_0x46e4('0x7d'),encodeURIComponent(_0xd53f96)):'freeform=3');return uploadFile(_0x339f22)['then'](function(_0x1d4522){return querystring[_0x46e4('0x9')](_0x1d4522);});};exports[_0x46e4('0x7e')]=function(_0x4062ca,_0x3100b2){return sestek[_0x46e4('0x7f')](_0x4062ca,_0x3100b2)[_0x46e4('0x2a')](function(_0x5de30f){logger[_0x46e4('0x19')](JSON[_0x46e4('0x41')](_0x5de30f));var _0x46e787={'speech':_0x5de30f[_0x46e4('0x80')],'action':_0x5de30f[_0x46e4('0x81')]?_0x5de30f['channelData'][_0x46e4('0x82')]:undefined,'actiondata':_0x5de30f[_0x46e4('0x81')]?_0x5de30f[_0x46e4('0x81')][_0x46e4('0x83')]:undefined};if(_0x5de30f[_0x46e4('0x81')]&&_0x5de30f['channelData']['AudioFromTts']){return base64Decode(_0x5de30f[_0x46e4('0x81')][_0x46e4('0x84')][_0x46e4('0x85')],path[_0x46e4('0x3a')](__dirname,'tmp',rs[_0x46e4('0x36')](0x4)+_0x46e4('0x27')))[_0x46e4('0x2a')](function(_0x49488d){_0x46e787[_0x46e4('0x86')]=_0x49488d;return _0x46e787;});}return _0x46e787;});};exports[_0x46e4('0x87')]=function(){return __dirname;};