0fcac9f8aae49733bb9e2f209b4ca9291539efd7
[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 _0x4e38=['null','generic','parse\x20response\x20failed:\x0a','text\x20length\x20limit\x20reached','lang\x20\x22','\x22\x20might\x20not\x20exist','goggleTTS\x20path','googleASR','asr','results','map','alternatives','transcript','confidence','googleASR\x20transcription','googleASR\x20confidence','catch','[%s]\x20%s:%s','message','textRequest','result','source','actionIncomplete','fulfillment','speech','status','code','metadata','isFallbackIntent','googleDialogflowV2','replace','detectIntent','Dialogflow\x20V2\x20response:','queryResult','action','allRequiredParamsPresent','diagnosticInfo','fields','boolValue','fulfillmentText','name','intent','displayName','isFallback','queryText','intentDetectionConfidence','tildeASR','Tilde\x20ASR\x20transcription','Tilde\x20ASR\x20confidence','awsPolly','polly','awsLex','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','freeform=3','sestekNDA','channelData','CustomAction','CustomActionData','AudioFromTts','Data','audiofile','dirName','apiai-promise','bluebird','dialogflow','md5','path','querystring','request-promise','sox','parse','util','./aws','./google','./sestek','../../../config/logger','protocol','https:','WHAT_EVER','get','error','request\x20to\x20','\x20failed,\x20status\x20code\x20=\x20','statusCode','statusMessage','createWriteStream','close','unlink','download\x20error','data','end','transcode','error\x20convert','info','finish\x20to\x20convert','start','resolve','.wav','writeFileSync','base64','then','split','readFileSync','toString','googleCloudTTS','https://texttospeech.googleapis.com/v1/','ssml','input','voice','text:synthesize','POST','tmp','generate','.mp3','from','audioContent','chmodSync','777','googleTTS','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','application/x-www-form-urlencoded','stringify','jQ1olc'];(function(_0x53a6c0,_0x53df9a){var _0x30c452=function(_0x34f3ed){while(--_0x34f3ed){_0x53a6c0['push'](_0x53a6c0['shift']());}};_0x30c452(++_0x53df9a);}(_0x4e38,0xbf));var _0x84e3=function(_0x499abc,_0x294679){_0x499abc=_0x499abc-0x0;var _0x1c6bef=_0x4e38[_0x499abc];return _0x1c6bef;};'use strict';var apiai=require(_0x84e3('0x0'));var BPromise=require(_0x84e3('0x1'));var dialogflow=require(_0x84e3('0x2'));var fs=require('fs');var http=require('http');var https=require('https');var md5=require(_0x84e3('0x3'));var path=require(_0x84e3('0x4'));var querystring=require(_0x84e3('0x5'));var rp=require(_0x84e3('0x6'));var rs=require('randomstring');var sox=require(_0x84e3('0x7'));var tts=require('google-tts-api');var urlParse=require('url')[_0x84e3('0x8')];var util=require(_0x84e3('0x9'));var aws=require(_0x84e3('0xa'));var google=require(_0x84e3('0xb'));var sestek=require(_0x84e3('0xc'));var tilde=require('./tilde');var logger=require(_0x84e3('0xd'))('agi');var ISPEECH_API='https://api.ispeech.org/api/rest';function downloadFile(_0x5c14f0,_0x5d01ed){return new BPromise(function(_0x191a25,_0x120c7b){var _0x2619e6=urlParse(_0x5c14f0);var _0x149174=_0x2619e6[_0x84e3('0xe')]===_0x84e3('0xf')?https:http;var _0x340f53={'host':_0x2619e6['host'],'path':_0x2619e6[_0x84e3('0x4')],'headers':{'user-agent':_0x84e3('0x10')}};_0x149174[_0x84e3('0x11')](_0x340f53,function(_0x40fac9){if(_0x40fac9['statusCode']!==0xc8){logger[_0x84e3('0x12')](_0x84e3('0x13')+_0x5c14f0+_0x84e3('0x14')+_0x40fac9[_0x84e3('0x15')]+'\x20('+_0x40fac9[_0x84e3('0x16')]+')');_0x120c7b(new Error(_0x84e3('0x13')+_0x5c14f0+_0x84e3('0x14')+_0x40fac9[_0x84e3('0x15')]+'\x20('+_0x40fac9[_0x84e3('0x16')]+')'));return;}var _0x2546f7=fs[_0x84e3('0x17')](_0x5d01ed);_0x2546f7['on']('finish',function(){logger['info']('finish\x20download\x20file');_0x2546f7[_0x84e3('0x18')](_0x191a25);});_0x2546f7['on']('error',function(_0x4fdcdf){fs[_0x84e3('0x19')](_0x5d01ed);logger[_0x84e3('0x12')](_0x84e3('0x1a'),_0x4fdcdf);_0x120c7b(_0x4fdcdf);});_0x40fac9['pipe'](_0x2546f7);})['on'](_0x84e3('0x12'),function(_0x11e8c3){logger['error'](_0x11e8c3);_0x120c7b(_0x11e8c3);})['end']();});}function uploadFile(_0x189090){return new BPromise(function(_0x24a426,_0x5947dc){var _0x3b1080=urlParse(_0x189090);var _0x5180c0=_0x3b1080[_0x84e3('0xe')]===_0x84e3('0xf')?https:http;var _0x529f11={'host':_0x3b1080['host'],'path':_0x3b1080[_0x84e3('0x4')],'headers':{'user-agent':_0x84e3('0x10')}};_0x5180c0[_0x84e3('0x11')](_0x529f11,function(_0x4544b3){if(_0x4544b3['statusCode']!==0xc8){_0x5947dc(new Error('request\x20to\x20'+_0x189090+_0x84e3('0x14')+_0x4544b3[_0x84e3('0x15')]+'\x20('+_0x4544b3['statusMessage']+')'));return;}var _0x5acd49='';_0x4544b3['on'](_0x84e3('0x1b'),function(_0x4baafb){_0x5acd49+=_0x4baafb;});_0x4544b3['on'](_0x84e3('0x1c'),function(){_0x24a426(_0x5acd49);});})['on'](_0x84e3('0x12'),function(_0xd4f4e8){_0x5947dc(_0xd4f4e8);})['end']();});}function convertFile(_0x198146,_0x558069){return new BPromise(function(_0xe0d677,_0x3316c9){var _0x766f4e=sox[_0x84e3('0x1d')](_0x198146,_0x558069,{'sampleRate':0x1f40,'format':'wav','channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x766f4e['on']('error',function(_0x5a93ed){logger[_0x84e3('0x12')](_0x84e3('0x1e'),_0x5a93ed);_0x3316c9(_0x5a93ed);});_0x766f4e['on']('end',function(){logger[_0x84e3('0x1f')](_0x84e3('0x20'));_0xe0d677();});_0x766f4e[_0x84e3('0x21')]();});}function base64Decode(_0x14bf00,_0x2a96b7){var _0x229427=path[_0x84e3('0x22')](__dirname,'tmp',rs['generate'](0x4)+_0x84e3('0x23'));fs[_0x84e3('0x24')](_0x229427,_0x14bf00,_0x84e3('0x25'));return convertFile(_0x229427,_0x2a96b7)[_0x84e3('0x26')](function(){try{fs['unlink'](_0x229427);fs['chmodSync'](_0x2a96b7,'777');}catch(_0x30c9b8){logger[_0x84e3('0x12')](_0x30c9b8);}return _0x2a96b7[_0x84e3('0x27')]('.')[0x0];});}function base64Encode(_0x592bc0){var _0x53fed0=fs[_0x84e3('0x28')](_0x592bc0);return new Buffer(_0x53fed0)[_0x84e3('0x29')](_0x84e3('0x25'));}exports[_0x84e3('0x2a')]=function(_0x887ff8,_0x33c65f,_0x4150d7,_0x5c6e71,_0x556e50,_0x4c392e){var _0x435116,_0x506656;var _0x18060e=_0x84e3('0x2b');var _0x4643e0='?key='+_0x887ff8;var _0x58692d={};if(_0x33c65f===_0x84e3('0x2c')){_0x58692d[_0x84e3('0x2d')]={'ssml':_0x4150d7};}else{_0x58692d[_0x84e3('0x2d')]={'text':_0x4150d7};};_0x58692d[_0x84e3('0x2e')]={'languageCode':_0x5c6e71,'ssmlGender':_0x556e50};_0x58692d['audioConfig']={'audioEncoding':'MP3','sampleRateHertz':0x1f40};var _0x2d42f3={'url':_0x18060e+_0x84e3('0x2f')+_0x4643e0,'method':_0x84e3('0x30'),'json':!![],'body':_0x58692d};return rp(_0x2d42f3)[_0x84e3('0x26')](function(_0x109229){return new BPromise(function(_0x3b325b,_0x1a8a0a){_0x435116=path[_0x84e3('0x22')](__dirname,_0x84e3('0x31'),rs[_0x84e3('0x32')](0x4)+_0x84e3('0x33'));var _0x3c9546=Buffer[_0x84e3('0x34')](_0x109229[_0x84e3('0x35')],_0x84e3('0x25'));return fs['writeFile'](_0x435116,_0x3c9546,function(_0xdc75c6){_0x1a8a0a(_0xdc75c6);},function(_0x106218){fs[_0x84e3('0x36')](_0x435116,_0x84e3('0x37'));_0x3b325b(_0x106218);});});})[_0x84e3('0x26')](function(_0x463eac){_0x506656=path['resolve'](__dirname,'tmp',rs[_0x84e3('0x32')](0x4)+_0x84e3('0x23'));return convertFile(_0x435116,_0x506656);})['then'](function(){try{fs[_0x84e3('0x19')](_0x435116);fs['chmodSync'](_0x506656,_0x84e3('0x37'));}catch(_0x441f45){logger[_0x84e3('0x12')](_0x441f45);}logger[_0x84e3('0x1f')]('googleCloudTTS\x20path',_0x506656[_0x84e3('0x27')]('.')[0x0]);return _0x506656[_0x84e3('0x27')]('.')[0x0];});};exports[_0x84e3('0x38')]=function(_0x2913fd,_0x2c60a1){var _0x3eb1ae=_0x84e3('0x39');var _0x5c69f2,_0x4dd455;var _0x4f1123;var _0x5990a1={'encoding':'utf8','method':_0x84e3('0x30'),'timeout':0x2710,'url':_0x3eb1ae,'headers':{'Content-Type':_0x84e3('0x3a')},'body':'f.req='+encodeURIComponent(JSON[_0x84e3('0x3b')]([[[_0x84e3('0x3c'),JSON[_0x84e3('0x3b')]([_0x2913fd,_0x2c60a1||'en',![],_0x84e3('0x3d')]),null,_0x84e3('0x3e')]]]))};return rp(_0x5990a1)[_0x84e3('0x26')](function(_0x59f701){try{_0x4f1123=eval(_0x59f701['slice'](0x5))[0x0][0x2];}catch(_0xa1cd6f){throw new Error(_0x84e3('0x3f')+_0x59f701[_0x84e3('0x1b')]);}if(!_0x4f1123){if(_0x2913fd['length']>0xc8){throw new Error(_0x84e3('0x40'));}else{throw new Error(_0x84e3('0x41')+_0x2c60a1+_0x84e3('0x42'));}}try{_0x4f1123=eval(_0x4f1123)[0x0];}catch(_0x510bf0){throw new Error(_0x84e3('0x3f')+res[_0x84e3('0x1b')]);}const _0x2c3b59=_0x4f1123;_0x5c69f2=path[_0x84e3('0x22')](__dirname,_0x84e3('0x31'),rs[_0x84e3('0x32')](0x4)+_0x84e3('0x33'));fs[_0x84e3('0x24')](_0x5c69f2,_0x4f1123,{'encoding':_0x84e3('0x25')});_0x4dd455=path[_0x84e3('0x22')](__dirname,_0x84e3('0x31'),rs['generate'](0x4)+_0x84e3('0x23'));return convertFile(_0x5c69f2,_0x4dd455);})[_0x84e3('0x26')](function(){try{fs[_0x84e3('0x19')](_0x5c69f2);fs[_0x84e3('0x36')](_0x4dd455,_0x84e3('0x37'));}catch(_0x53f11c){logger[_0x84e3('0x12')](_0x53f11c);}logger[_0x84e3('0x1f')](_0x84e3('0x43'),_0x4dd455['split']('.')[0x0]);return _0x4dd455[_0x84e3('0x27')]('.')[0x0];});};exports[_0x84e3('0x44')]=function(_0x621b53,_0x25d4ef,_0x29989e){return google[_0x84e3('0x45')](_0x621b53,_0x25d4ef,_0x29989e)[_0x84e3('0x26')](function(_0x45124d){logger[_0x84e3('0x1f')](_0x45124d['uri']);return rp(_0x45124d);})[_0x84e3('0x26')](function(_0x5a3877){var _0x1ed4ce='';var _0x36c69b=0x0;try{fs[_0x84e3('0x19')](_0x621b53);}catch(_0x1b9ffd){logger['error'](_0x1b9ffd);}if(_0x5a3877&&_0x5a3877[_0x84e3('0x46')]){_0x1ed4ce=_0x5a3877[_0x84e3('0x46')][_0x84e3('0x47')](function(_0x15869b){return _0x15869b&&_0x15869b[_0x84e3('0x48')][0x0]&&_0x15869b[_0x84e3('0x48')][0x0]['transcript']?_0x15869b['alternatives'][0x0][_0x84e3('0x49')]:'';})['join']('\x0a');_0x36c69b=_0x5a3877[_0x84e3('0x46')][_0x84e3('0x47')](function(_0x499f99){return _0x499f99&&_0x499f99[_0x84e3('0x48')][0x0]&&_0x499f99[_0x84e3('0x48')][0x0][_0x84e3('0x4a')]?_0x499f99[_0x84e3('0x48')][0x0][_0x84e3('0x4a')]:0x0;})['join']('\x0a');}logger[_0x84e3('0x1f')](_0x84e3('0x4b'),_0x1ed4ce);logger[_0x84e3('0x1f')](_0x84e3('0x4c'),_0x36c69b);return{'transcript':_0x1ed4ce,'confidence':_0x36c69b};})[_0x84e3('0x4d')](function(_0x2fb4e0){logger[_0x84e3('0x12')](_0x84e3('0x4e'),_0x2fb4e0[_0x84e3('0x15')],_0x2fb4e0['name'],_0x2fb4e0[_0x84e3('0x4f')]);});};exports['googleDialogflow']=function(_0x5fbfa1,_0x160736,_0xed5396,_0x3451fa){var _0x44c6e3=apiai(_0x160736,{'language':_0x3451fa||'en'});return _0x44c6e3[_0x84e3('0x50')](_0xed5396,{'sessionId':md5(_0x5fbfa1)})['then'](function(_0x43ccb2){logger[_0x84e3('0x1f')](JSON[_0x84e3('0x3b')](_0x43ccb2));return{'source':_0x43ccb2[_0x84e3('0x51')][_0x84e3('0x52')],'resolvedQuery':_0x43ccb2[_0x84e3('0x51')]['resolvedQuery'],'action':_0x43ccb2[_0x84e3('0x51')]['action'],'actionIncomplete':_0x43ccb2[_0x84e3('0x51')][_0x84e3('0x53')],'speech':_0x43ccb2[_0x84e3('0x51')][_0x84e3('0x54')][_0x84e3('0x55')],'score':_0x43ccb2['result']['score'],'statusCode':_0x43ccb2[_0x84e3('0x56')][_0x84e3('0x57')],'endConversation':_0x43ccb2[_0x84e3('0x51')][_0x84e3('0x58')]['endConversation']||![],'isFallbackIntent':_0x43ccb2[_0x84e3('0x51')]['metadata'][_0x84e3('0x59')]};});};exports[_0x84e3('0x5a')]=function(_0x199f13,_0x466a4d,_0x52f605,_0x108158,_0x5842ee,_0x28691a){var _0x22d494=_0x108158[_0x84e3('0x5b')](/\\n/g,'\x0a');var _0x16ffe6={'credentials':{'private_key':_0x22d494,'client_email':_0x52f605}};var _0x3787db=new dialogflow['SessionsClient'](_0x16ffe6);var _0x38e79a=_0x3787db['sessionPath'](_0x466a4d,md5(_0x199f13));var _0x92942={'session':_0x38e79a,'queryInput':{'text':{'text':_0x5842ee,'languageCode':_0x28691a}}};return _0x3787db[_0x84e3('0x5c')](_0x92942)[_0x84e3('0x26')](function(_0x5e562a){if(_0x5e562a&&_0x5e562a['length']){logger[_0x84e3('0x1f')](_0x84e3('0x5d'),JSON['stringify'](_0x5e562a));var _0x4782af=_0x5e562a[0x0];if(_0x4782af){var _0x236140={'action':_0x4782af[_0x84e3('0x5e')][_0x84e3('0x5f')],'allRequiredParamsPresent':_0x4782af[_0x84e3('0x5e')][_0x84e3('0x60')],'endConversation':_0x4782af[_0x84e3('0x5e')][_0x84e3('0x61')]&&_0x4782af[_0x84e3('0x5e')]['diagnosticInfo'][_0x84e3('0x62')]?_0x4782af['queryResult'][_0x84e3('0x61')][_0x84e3('0x62')]['end_conversation'][_0x84e3('0x63')]:![],'fulfillmentText':_0x4782af[_0x84e3('0x5e')][_0x84e3('0x64')],'intentName':_0x4782af['queryResult']['intent'][_0x84e3('0x65')],'intentDisplayName':_0x4782af[_0x84e3('0x5e')][_0x84e3('0x66')][_0x84e3('0x67')],'isFallbackIntent':_0x4782af[_0x84e3('0x5e')][_0x84e3('0x66')][_0x84e3('0x68')],'languageCode':_0x4782af[_0x84e3('0x5e')]['languageCode'],'queryText':_0x4782af[_0x84e3('0x5e')][_0x84e3('0x69')],'responseId':_0x4782af['responseId'],'score':_0x4782af[_0x84e3('0x5e')][_0x84e3('0x6a')],'speech':_0x4782af[_0x84e3('0x5e')][_0x84e3('0x64')],'providerResponse':JSON[_0x84e3('0x3b')](_0x5e562a)};return _0x236140;}}});};exports[_0x84e3('0x6b')]=function(_0x1fbe7f,_0x33642a,_0x20bf3a,_0x29db6f){return tilde['asr'](_0x1fbe7f,_0x33642a,_0x20bf3a,_0x29db6f)['then'](function(_0x25b9ce){try{fs[_0x84e3('0x19')](_0x1fbe7f);}catch(_0x2835b3){logger[_0x84e3('0x12')](_0x2835b3);}logger[_0x84e3('0x1f')](_0x84e3('0x6c'),_0x25b9ce['transcript']);logger[_0x84e3('0x1f')](_0x84e3('0x6d'),_0x25b9ce[_0x84e3('0x4a')]);return _0x25b9ce;});};exports[_0x84e3('0x6e')]=function(_0x36e937,_0x1125f2,_0x474ce0,_0x29a58a,_0x5498d3,_0x1930ab){var _0x1f4c46=path['resolve'](__dirname,'tmp',rs[_0x84e3('0x32')](0x4)+_0x84e3('0x33'));var _0x24c715;return aws[_0x84e3('0x6f')](_0x36e937,_0x1125f2,_0x474ce0,_0x29a58a,_0x5498d3,_0x1930ab,_0x1f4c46)[_0x84e3('0x26')](function(){_0x24c715=path[_0x84e3('0x22')](__dirname,_0x84e3('0x31'),rs['generate'](0x4)+_0x84e3('0x23'));return convertFile(_0x1f4c46,_0x24c715);})[_0x84e3('0x26')](function(){try{fs[_0x84e3('0x19')](_0x1f4c46);fs[_0x84e3('0x36')](_0x24c715,_0x84e3('0x37'));}catch(_0x3fda27){logger[_0x84e3('0x12')](_0x3fda27);}return _0x24c715[_0x84e3('0x27')]('.')[0x0];});};exports[_0x84e3('0x70')]=function(_0x7d5974,_0x5251a5,_0x11df80,_0x6d1fc8,_0x299d46,_0x534785){return aws['lex'](_0x7d5974,_0x5251a5,_0x11df80,_0x6d1fc8,_0x299d46,_0x534785)[_0x84e3('0x26')](function(_0x230ae8){logger[_0x84e3('0x1f')](JSON[_0x84e3('0x3b')](_0x230ae8));return _0x230ae8;});};exports['ispeechTTS']=function(_0x11bb88,_0x2d02ac,_0x5622b6,_0x460612){var _0x1b8297=util[_0x84e3('0x71')](_0x84e3('0x72'),ISPEECH_API,_0x11bb88,encodeURIComponent(_0x2d02ac),_0x5622b6,_0x460612);var _0x2fe1ac=path['resolve'](__dirname,'tmp',rs[_0x84e3('0x32')](0x4)+_0x84e3('0x33'));var _0x1570cc;return downloadFile(_0x1b8297,_0x2fe1ac)[_0x84e3('0x26')](function(){_0x1570cc=path[_0x84e3('0x22')](__dirname,_0x84e3('0x31'),rs[_0x84e3('0x32')](0x4)+_0x84e3('0x23'));return convertFile(_0x2fe1ac,_0x1570cc);})['then'](function(){try{fs[_0x84e3('0x19')](_0x2fe1ac);fs[_0x84e3('0x36')](_0x1570cc,_0x84e3('0x37'));}catch(_0x1a840b){logger[_0x84e3('0x12')](_0x1a840b);}return _0x1570cc[_0x84e3('0x27')]('.')[0x0];});};exports[_0x84e3('0x73')]=function(_0x382137,_0x3c82fe,_0x5717a4,_0x5bf5e1){var _0x230274=util[_0x84e3('0x71')](_0x84e3('0x74'),ISPEECH_API,_0x3c82fe,_0x5717a4,base64Encode(_0x382137),_0x5bf5e1?util[_0x84e3('0x71')]('model=%s',encodeURIComponent(_0x5bf5e1)):_0x84e3('0x75'));return uploadFile(_0x230274)[_0x84e3('0x26')](function(_0x5879c0){return querystring[_0x84e3('0x8')](_0x5879c0);});};exports[_0x84e3('0x76')]=function(_0xe458a1,_0x5f3012){return sestek['nda'](_0xe458a1,_0x5f3012)[_0x84e3('0x26')](function(_0x4d6ba3){logger[_0x84e3('0x1f')](JSON[_0x84e3('0x3b')](_0x4d6ba3));var _0x44df15={'speech':_0x4d6ba3['text'],'action':_0x4d6ba3['channelData']?_0x4d6ba3[_0x84e3('0x77')][_0x84e3('0x78')]:undefined,'actiondata':_0x4d6ba3[_0x84e3('0x77')]?_0x4d6ba3[_0x84e3('0x77')][_0x84e3('0x79')]:undefined};if(_0x4d6ba3[_0x84e3('0x77')]&&_0x4d6ba3[_0x84e3('0x77')]['AudioFromTts']){return base64Decode(_0x4d6ba3[_0x84e3('0x77')][_0x84e3('0x7a')][_0x84e3('0x7b')],path[_0x84e3('0x22')](__dirname,_0x84e3('0x31'),rs['generate'](0x4)+_0x84e3('0x23')))[_0x84e3('0x26')](function(_0x7312f8){_0x44df15[_0x84e3('0x7c')]=_0x7312f8;return _0x44df15;});}return _0x44df15;});};exports[_0x84e3('0x7d')]=function(){return __dirname;};