66a2f5d4077decb03c567957027ecfe7f004e479
[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 _0x93e9=['intent','displayName','isFallback','intentDetectionConfidence','tildeASR','asr','Tilde\x20ASR\x20transcription','Tilde\x20ASR\x20confidence','awsPolly','polly','awsLex','format','%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3','model=%s','sestekNDA','nda','channelData','CustomAction','CustomActionData','AudioFromTts','Data','dirName','apiai-promise','bluebird','dialogflow','md5','path','querystring','request-promise','randomstring','sox','google-tts-api','url','parse','util','./aws','./google','./sestek','agi','https://api.ispeech.org/api/rest','protocol','https:','host','statusCode','error','request\x20to\x20','\x20failed,\x20status\x20code\x20=\x20','statusMessage','info','finish\x20download\x20file','unlink','download\x20error','end','WHAT_EVER','data','wav','error\x20convert','start','resolve','.wav','writeFileSync','base64','then','777','split','readFileSync','toString','googleCloudTTS','https://texttospeech.googleapis.com/v1/','?key=','ssml','voice','audioConfig','MP3','text:synthesize','POST','generate','.mp3','from','audioContent','chmodSync','tmp','googleCloudTTS\x20path','googleTTS','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','f.req=','stringify','null','generic','slice','parse\x20response\x20failed:\x0a','length','text\x20length\x20limit\x20reached','lang\x20\x22','\x22\x20might\x20not\x20exist','goggleTTS\x20path','googleASR','uri','results','map','alternatives','transcript','confidence','join','googleASR\x20transcription','catch','name','message','googleDialogflow','textRequest','source','resolvedQuery','result','action','actionIncomplete','speech','score','status','code','metadata','isFallbackIntent','googleDialogflowV2','replace','SessionsClient','sessionPath','detectIntent','Dialogflow\x20V2\x20response:','queryResult','allRequiredParamsPresent','fields','diagnosticInfo','end_conversation','boolValue','fulfillmentText'];(function(_0x2706da,_0x3856f5){var _0x3ba87e=function(_0x479a79){while(--_0x479a79){_0x2706da['push'](_0x2706da['shift']());}};_0x3ba87e(++_0x3856f5);}(_0x93e9,0x1a8));var _0x993e=function(_0x1ea855,_0x26f59f){_0x1ea855=_0x1ea855-0x0;var _0x4f1e6a=_0x93e9[_0x1ea855];return _0x4f1e6a;};'use strict';var apiai=require(_0x993e('0x0'));var BPromise=require(_0x993e('0x1'));var dialogflow=require(_0x993e('0x2'));var fs=require('fs');var http=require('http');var https=require('https');var md5=require(_0x993e('0x3'));var path=require(_0x993e('0x4'));var querystring=require(_0x993e('0x5'));var rp=require(_0x993e('0x6'));var rs=require(_0x993e('0x7'));var sox=require(_0x993e('0x8'));var tts=require(_0x993e('0x9'));var urlParse=require(_0x993e('0xa'))[_0x993e('0xb')];var util=require(_0x993e('0xc'));var aws=require(_0x993e('0xd'));var google=require(_0x993e('0xe'));var sestek=require(_0x993e('0xf'));var tilde=require('./tilde');var logger=require('../../../config/logger')(_0x993e('0x10'));var ISPEECH_API=_0x993e('0x11');function downloadFile(_0x2497f7,_0x4c808b){return new BPromise(function(_0x4bd4ef,_0x42546c){var _0xdbb49a=urlParse(_0x2497f7);var _0x3996dc=_0xdbb49a[_0x993e('0x12')]===_0x993e('0x13')?https:http;var _0x5b57b1={'host':_0xdbb49a[_0x993e('0x14')],'path':_0xdbb49a['path'],'headers':{'user-agent':'WHAT_EVER'}};_0x3996dc['get'](_0x5b57b1,function(_0x52b72f){if(_0x52b72f[_0x993e('0x15')]!==0xc8){logger[_0x993e('0x16')](_0x993e('0x17')+_0x2497f7+_0x993e('0x18')+_0x52b72f[_0x993e('0x15')]+'\x20('+_0x52b72f[_0x993e('0x19')]+')');_0x42546c(new Error('request\x20to\x20'+_0x2497f7+_0x993e('0x18')+_0x52b72f[_0x993e('0x15')]+'\x20('+_0x52b72f[_0x993e('0x19')]+')'));return;}var _0x3e5235=fs['createWriteStream'](_0x4c808b);_0x3e5235['on']('finish',function(){logger[_0x993e('0x1a')](_0x993e('0x1b'));_0x3e5235['close'](_0x4bd4ef);});_0x3e5235['on'](_0x993e('0x16'),function(_0xcfc915){fs[_0x993e('0x1c')](_0x4c808b);logger[_0x993e('0x16')](_0x993e('0x1d'),_0xcfc915);_0x42546c(_0xcfc915);});_0x52b72f['pipe'](_0x3e5235);})['on'](_0x993e('0x16'),function(_0x1e6068){logger[_0x993e('0x16')](_0x1e6068);_0x42546c(_0x1e6068);})[_0x993e('0x1e')]();});}function uploadFile(_0x275a5d){return new BPromise(function(_0x4ed841,_0x110893){var _0x53b208=urlParse(_0x275a5d);var _0x56594e=_0x53b208[_0x993e('0x12')]==='https:'?https:http;var _0x2f58e0={'host':_0x53b208[_0x993e('0x14')],'path':_0x53b208[_0x993e('0x4')],'headers':{'user-agent':_0x993e('0x1f')}};_0x56594e['get'](_0x2f58e0,function(_0x3f4cc0){if(_0x3f4cc0[_0x993e('0x15')]!==0xc8){_0x110893(new Error(_0x993e('0x17')+_0x275a5d+_0x993e('0x18')+_0x3f4cc0[_0x993e('0x15')]+'\x20('+_0x3f4cc0[_0x993e('0x19')]+')'));return;}var _0x57df26='';_0x3f4cc0['on'](_0x993e('0x20'),function(_0x4eebb2){_0x57df26+=_0x4eebb2;});_0x3f4cc0['on'](_0x993e('0x1e'),function(){_0x4ed841(_0x57df26);});})['on'](_0x993e('0x16'),function(_0xec6e82){_0x110893(_0xec6e82);})[_0x993e('0x1e')]();});}function convertFile(_0x1707ab,_0x1f113d){return new BPromise(function(_0x2705c6,_0x4af800){var _0x1a02fe=sox['transcode'](_0x1707ab,_0x1f113d,{'sampleRate':0x1f40,'format':_0x993e('0x21'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x1a02fe['on'](_0x993e('0x16'),function(_0x545bf9){logger[_0x993e('0x16')](_0x993e('0x22'),_0x545bf9);_0x4af800(_0x545bf9);});_0x1a02fe['on'](_0x993e('0x1e'),function(){logger['info']('finish\x20to\x20convert');_0x2705c6();});_0x1a02fe[_0x993e('0x23')]();});}function base64Decode(_0x16dcf1,_0x4573d3){var _0x9dccb7=path[_0x993e('0x24')](__dirname,'tmp',rs['generate'](0x4)+_0x993e('0x25'));fs[_0x993e('0x26')](_0x9dccb7,_0x16dcf1,_0x993e('0x27'));return convertFile(_0x9dccb7,_0x4573d3)[_0x993e('0x28')](function(){try{fs[_0x993e('0x1c')](_0x9dccb7);fs['chmodSync'](_0x4573d3,_0x993e('0x29'));}catch(_0x2cfeaf){logger['error'](_0x2cfeaf);}return _0x4573d3[_0x993e('0x2a')]('.')[0x0];});}function base64Encode(_0x209339){var _0x292919=fs[_0x993e('0x2b')](_0x209339);return new Buffer(_0x292919)[_0x993e('0x2c')](_0x993e('0x27'));}exports[_0x993e('0x2d')]=function(_0x5d0750,_0x33ed32,_0xbcd86f,_0xaed551,_0x134e5f,_0x38e35e){var _0x48a45c,_0x2bc4d2;var _0x33fcdc=_0x993e('0x2e');var _0xb3eb1=_0x993e('0x2f')+_0x5d0750;var _0x363e64={};if(_0x33ed32===_0x993e('0x30')){_0x363e64['input']={'ssml':_0xbcd86f};}else{_0x363e64['input']={'text':_0xbcd86f};};_0x363e64[_0x993e('0x31')]={'languageCode':_0xaed551,'ssmlGender':_0x134e5f};_0x363e64[_0x993e('0x32')]={'audioEncoding':_0x993e('0x33'),'sampleRateHertz':0x1f40};var _0x5bd77f={'url':_0x33fcdc+_0x993e('0x34')+_0xb3eb1,'method':_0x993e('0x35'),'json':!![],'body':_0x363e64};return rp(_0x5bd77f)[_0x993e('0x28')](function(_0x1dce2b){return new BPromise(function(_0xf672f,_0x3545a1){_0x48a45c=path['resolve'](__dirname,'tmp',rs[_0x993e('0x36')](0x4)+_0x993e('0x37'));var _0x56980f=Buffer[_0x993e('0x38')](_0x1dce2b[_0x993e('0x39')],'base64');return fs['writeFile'](_0x48a45c,_0x56980f,function(_0x5cdacb){_0x3545a1(_0x5cdacb);},function(_0x461e96){fs[_0x993e('0x3a')](_0x48a45c,_0x993e('0x29'));_0xf672f(_0x461e96);});});})[_0x993e('0x28')](function(_0x53a941){_0x2bc4d2=path[_0x993e('0x24')](__dirname,_0x993e('0x3b'),rs[_0x993e('0x36')](0x4)+_0x993e('0x25'));return convertFile(_0x48a45c,_0x2bc4d2);})[_0x993e('0x28')](function(){try{fs['unlink'](_0x48a45c);fs['chmodSync'](_0x2bc4d2,_0x993e('0x29'));}catch(_0x463f71){logger['error'](_0x463f71);}logger[_0x993e('0x1a')](_0x993e('0x3c'),_0x2bc4d2[_0x993e('0x2a')]('.')[0x0]);return _0x2bc4d2[_0x993e('0x2a')]('.')[0x0];});};exports[_0x993e('0x3d')]=function(_0x491dba,_0x205539){var _0x5c85e1=_0x993e('0x3e');var _0x48d74a,_0x344465;var _0x5e945c;var _0xaaa627={'encoding':'utf8','method':_0x993e('0x35'),'timeout':0x2710,'url':_0x5c85e1,'headers':{'Content-Type':'application/x-www-form-urlencoded'},'body':_0x993e('0x3f')+encodeURIComponent(JSON['stringify']([[['jQ1olc',JSON[_0x993e('0x40')]([_0x491dba,_0x205539||'en',![],_0x993e('0x41')]),null,_0x993e('0x42')]]]))};return rp(_0xaaa627)[_0x993e('0x28')](function(_0x2201a0){try{_0x5e945c=eval(_0x2201a0[_0x993e('0x43')](0x5))[0x0][0x2];}catch(_0x281348){throw new Error(_0x993e('0x44')+_0x2201a0[_0x993e('0x20')]);}if(!_0x5e945c){if(_0x491dba[_0x993e('0x45')]>0xc8){throw new Error(_0x993e('0x46'));}else{throw new Error(_0x993e('0x47')+_0x205539+_0x993e('0x48'));}}try{_0x5e945c=eval(_0x5e945c)[0x0];}catch(_0xf45817){throw new Error('parse\x20response\x20failed:\x0a'+res['data']);}const _0x26ce43=_0x5e945c;_0x48d74a=path['resolve'](__dirname,'tmp',rs[_0x993e('0x36')](0x4)+_0x993e('0x37'));fs[_0x993e('0x26')](_0x48d74a,_0x5e945c,{'encoding':_0x993e('0x27')});_0x344465=path[_0x993e('0x24')](__dirname,'tmp',rs[_0x993e('0x36')](0x4)+_0x993e('0x25'));return convertFile(_0x48d74a,_0x344465);})['then'](function(){try{fs[_0x993e('0x1c')](_0x48d74a);fs[_0x993e('0x3a')](_0x344465,_0x993e('0x29'));}catch(_0x290640){logger[_0x993e('0x16')](_0x290640);}logger['info'](_0x993e('0x49'),_0x344465[_0x993e('0x2a')]('.')[0x0]);return _0x344465[_0x993e('0x2a')]('.')[0x0];});};exports[_0x993e('0x4a')]=function(_0x12d005,_0x5a2319,_0x237c33){return google['asr'](_0x12d005,_0x5a2319,_0x237c33)[_0x993e('0x28')](function(_0x40eb7c){logger[_0x993e('0x1a')](_0x40eb7c[_0x993e('0x4b')]);return rp(_0x40eb7c);})[_0x993e('0x28')](function(_0x24c248){var _0x2feff8='';var _0x42adfc=0x0;try{fs[_0x993e('0x1c')](_0x12d005);}catch(_0xdc13d3){logger['error'](_0xdc13d3);}if(_0x24c248&&_0x24c248[_0x993e('0x4c')]){_0x2feff8=_0x24c248[_0x993e('0x4c')][_0x993e('0x4d')](function(_0x597b0e){return _0x597b0e&&_0x597b0e[_0x993e('0x4e')][0x0]&&_0x597b0e[_0x993e('0x4e')][0x0][_0x993e('0x4f')]?_0x597b0e[_0x993e('0x4e')][0x0][_0x993e('0x4f')]:'';})['join']('\x0a');_0x42adfc=_0x24c248['results']['map'](function(_0x25ca09){return _0x25ca09&&_0x25ca09[_0x993e('0x4e')][0x0]&&_0x25ca09[_0x993e('0x4e')][0x0][_0x993e('0x50')]?_0x25ca09[_0x993e('0x4e')][0x0][_0x993e('0x50')]:0x0;})[_0x993e('0x51')]('\x0a');}logger['info'](_0x993e('0x52'),_0x2feff8);logger['info']('googleASR\x20confidence',_0x42adfc);return{'transcript':_0x2feff8,'confidence':_0x42adfc};})[_0x993e('0x53')](function(_0x505ad7){logger[_0x993e('0x16')]('[%s]\x20%s:%s',_0x505ad7[_0x993e('0x15')],_0x505ad7[_0x993e('0x54')],_0x505ad7[_0x993e('0x55')]);});};exports[_0x993e('0x56')]=function(_0x49e0e1,_0x19ac07,_0x169e17,_0x2a4842){var _0x27c07f=apiai(_0x19ac07,{'language':_0x2a4842||'en'});return _0x27c07f[_0x993e('0x57')](_0x169e17,{'sessionId':md5(_0x49e0e1)})[_0x993e('0x28')](function(_0x422ccd){logger[_0x993e('0x1a')](JSON['stringify'](_0x422ccd));return{'source':_0x422ccd['result'][_0x993e('0x58')],'resolvedQuery':_0x422ccd['result'][_0x993e('0x59')],'action':_0x422ccd[_0x993e('0x5a')][_0x993e('0x5b')],'actionIncomplete':_0x422ccd['result'][_0x993e('0x5c')],'speech':_0x422ccd[_0x993e('0x5a')]['fulfillment'][_0x993e('0x5d')],'score':_0x422ccd[_0x993e('0x5a')][_0x993e('0x5e')],'statusCode':_0x422ccd[_0x993e('0x5f')][_0x993e('0x60')],'endConversation':_0x422ccd[_0x993e('0x5a')][_0x993e('0x61')]['endConversation']||![],'isFallbackIntent':_0x422ccd[_0x993e('0x5a')]['metadata'][_0x993e('0x62')]};});};exports[_0x993e('0x63')]=function(_0x15a1db,_0x295623,_0xf5e591,_0x1e2915,_0x157e1c,_0x28d162){var _0x2096ca=_0x1e2915[_0x993e('0x64')](/\\n/g,'\x0a');var _0xd134ad={'credentials':{'private_key':_0x2096ca,'client_email':_0xf5e591}};var _0x292056=new dialogflow[(_0x993e('0x65'))](_0xd134ad);var _0x524123=_0x292056[_0x993e('0x66')](_0x295623,md5(_0x15a1db));var _0x16ce9e={'session':_0x524123,'queryInput':{'text':{'text':_0x157e1c,'languageCode':_0x28d162}}};return _0x292056[_0x993e('0x67')](_0x16ce9e)[_0x993e('0x28')](function(_0x1ec0e5){if(_0x1ec0e5&&_0x1ec0e5['length']){logger[_0x993e('0x1a')](_0x993e('0x68'),JSON[_0x993e('0x40')](_0x1ec0e5));var _0x5b6568=_0x1ec0e5[0x0];if(_0x5b6568){var _0x49fc86={'action':_0x5b6568[_0x993e('0x69')][_0x993e('0x5b')],'allRequiredParamsPresent':_0x5b6568[_0x993e('0x69')][_0x993e('0x6a')],'endConversation':_0x5b6568[_0x993e('0x69')]['diagnosticInfo']&&_0x5b6568['queryResult']['diagnosticInfo'][_0x993e('0x6b')]?_0x5b6568[_0x993e('0x69')][_0x993e('0x6c')][_0x993e('0x6b')][_0x993e('0x6d')][_0x993e('0x6e')]:![],'fulfillmentText':_0x5b6568['queryResult'][_0x993e('0x6f')],'intentName':_0x5b6568[_0x993e('0x69')][_0x993e('0x70')]['name'],'intentDisplayName':_0x5b6568[_0x993e('0x69')][_0x993e('0x70')][_0x993e('0x71')],'isFallbackIntent':_0x5b6568[_0x993e('0x69')][_0x993e('0x70')][_0x993e('0x72')],'languageCode':_0x5b6568[_0x993e('0x69')]['languageCode'],'queryText':_0x5b6568['queryResult']['queryText'],'responseId':_0x5b6568['responseId'],'score':_0x5b6568[_0x993e('0x69')][_0x993e('0x73')],'speech':_0x5b6568['queryResult']['fulfillmentText'],'providerResponse':JSON[_0x993e('0x40')](_0x1ec0e5)};return _0x49fc86;}}});};exports[_0x993e('0x74')]=function(_0x5aa092,_0x1a9a0f,_0xedda64,_0x497485){return tilde[_0x993e('0x75')](_0x5aa092,_0x1a9a0f,_0xedda64,_0x497485)['then'](function(_0x2bc56e){try{fs[_0x993e('0x1c')](_0x5aa092);}catch(_0x2be87b){logger['error'](_0x2be87b);}logger[_0x993e('0x1a')](_0x993e('0x76'),_0x2bc56e[_0x993e('0x4f')]);logger[_0x993e('0x1a')](_0x993e('0x77'),_0x2bc56e[_0x993e('0x50')]);return _0x2bc56e;});};exports[_0x993e('0x78')]=function(_0x462f6c,_0x2002d6,_0x356534,_0x5a7e53,_0x12a1fb,_0x312534){var _0x5b2ac6=path[_0x993e('0x24')](__dirname,_0x993e('0x3b'),rs[_0x993e('0x36')](0x4)+_0x993e('0x37'));var _0x3b1192;return aws[_0x993e('0x79')](_0x462f6c,_0x2002d6,_0x356534,_0x5a7e53,_0x12a1fb,_0x312534,_0x5b2ac6)[_0x993e('0x28')](function(){_0x3b1192=path[_0x993e('0x24')](__dirname,_0x993e('0x3b'),rs[_0x993e('0x36')](0x4)+_0x993e('0x25'));return convertFile(_0x5b2ac6,_0x3b1192);})['then'](function(){try{fs[_0x993e('0x1c')](_0x5b2ac6);fs[_0x993e('0x3a')](_0x3b1192,_0x993e('0x29'));}catch(_0x4e0632){logger[_0x993e('0x16')](_0x4e0632);}return _0x3b1192[_0x993e('0x2a')]('.')[0x0];});};exports[_0x993e('0x7a')]=function(_0x335aec,_0x158eba,_0xa83063,_0x5d55b2,_0x163d71,_0x1bae2e){return aws['lex'](_0x335aec,_0x158eba,_0xa83063,_0x5d55b2,_0x163d71,_0x1bae2e)[_0x993e('0x28')](function(_0x1b822b){logger[_0x993e('0x1a')](JSON[_0x993e('0x40')](_0x1b822b));return _0x1b822b;});};exports['ispeechTTS']=function(_0x527608,_0x493c73,_0x336eed,_0x49787d){var _0x525032=util[_0x993e('0x7b')](_0x993e('0x7c'),ISPEECH_API,_0x527608,encodeURIComponent(_0x493c73),_0x336eed,_0x49787d);var _0x1e27f6=path[_0x993e('0x24')](__dirname,'tmp',rs[_0x993e('0x36')](0x4)+'.mp3');var _0x43856f;return downloadFile(_0x525032,_0x1e27f6)[_0x993e('0x28')](function(){_0x43856f=path['resolve'](__dirname,_0x993e('0x3b'),rs[_0x993e('0x36')](0x4)+_0x993e('0x25'));return convertFile(_0x1e27f6,_0x43856f);})[_0x993e('0x28')](function(){try{fs['unlink'](_0x1e27f6);fs[_0x993e('0x3a')](_0x43856f,_0x993e('0x29'));}catch(_0x37a028){logger['error'](_0x37a028);}return _0x43856f[_0x993e('0x2a')]('.')[0x0];});};exports['ispeechASR']=function(_0x1644d1,_0x4d9f1c,_0x3977dc,_0x3d1b13){var _0x4aca6e=util[_0x993e('0x7b')]('%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s',ISPEECH_API,_0x4d9f1c,_0x3977dc,base64Encode(_0x1644d1),_0x3d1b13?util['format'](_0x993e('0x7d'),encodeURIComponent(_0x3d1b13)):'freeform=3');return uploadFile(_0x4aca6e)[_0x993e('0x28')](function(_0x462076){return querystring[_0x993e('0xb')](_0x462076);});};exports[_0x993e('0x7e')]=function(_0x51f09c,_0x4a05ba){return sestek[_0x993e('0x7f')](_0x51f09c,_0x4a05ba)['then'](function(_0x30fd9f){logger[_0x993e('0x1a')](JSON['stringify'](_0x30fd9f));var _0x6826c3={'speech':_0x30fd9f['text'],'action':_0x30fd9f[_0x993e('0x80')]?_0x30fd9f['channelData'][_0x993e('0x81')]:undefined,'actiondata':_0x30fd9f['channelData']?_0x30fd9f[_0x993e('0x80')][_0x993e('0x82')]:undefined};if(_0x30fd9f[_0x993e('0x80')]&&_0x30fd9f[_0x993e('0x80')][_0x993e('0x83')]){return base64Decode(_0x30fd9f[_0x993e('0x80')][_0x993e('0x83')][_0x993e('0x84')],path[_0x993e('0x24')](__dirname,_0x993e('0x3b'),rs['generate'](0x4)+_0x993e('0x25')))[_0x993e('0x28')](function(_0x247aaf){_0x6826c3['audiofile']=_0x247aaf;return _0x6826c3;});}return _0x6826c3;});};exports[_0x993e('0x85')]=function(){return __dirname;};