010939090091362124667711104d6a631b36600a
[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 _0x0953=['format','model=%s','freeform=3','sestekNDA','nda','text','channelData','CustomAction','CustomActionData','AudioFromTts','audiofile','apiai-promise','bluebird','dialogflow','https','md5','querystring','request-promise','randomstring','sox','google-tts-api','parse','util','./aws','./google','./sestek','../../../config/logger','agi','protocol','https:','host','path','WHAT_EVER','get','statusCode','error','request\x20to\x20','\x20failed,\x20status\x20code\x20=\x20','statusMessage','createWriteStream','finish','info','finish\x20download\x20file','close','unlink','download\x20error','pipe','end','data','transcode','wav','error\x20convert','finish\x20to\x20convert','start','resolve','writeFileSync','base64','then','chmodSync','777','split','readFileSync','toString','https://texttospeech.googleapis.com/v1/','?key=','ssml','input','voice','audioConfig','POST','generate','.mp3','from','writeFile','tmp','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','utf8','application/x-www-form-urlencoded','f.req=','stringify','jQ1olc','null','generic','parse\x20response\x20failed:\x0a','text\x20length\x20limit\x20reached','lang\x20\x22','\x22\x20might\x20not\x20exist','.wav','goggleTTS\x20path','googleASR','asr','uri','results','map','transcript','alternatives','join','confidence','googleASR\x20confidence','catch','name','source','resolvedQuery','result','actionIncomplete','fulfillment','speech','score','status','code','metadata','endConversation','isFallbackIntent','SessionsClient','sessionPath','Dialogflow\x20V2\x20response:','queryResult','allRequiredParamsPresent','diagnosticInfo','fields','fulfillmentText','displayName','intent','isFallback','languageCode','responseId','Tilde\x20ASR\x20confidence','polly','awsLex','lex','ispeechTTS','%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3','%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s'];(function(_0x1be289,_0x5dc88c){var _0x49296c=function(_0x2771e5){while(--_0x2771e5){_0x1be289['push'](_0x1be289['shift']());}};_0x49296c(++_0x5dc88c);}(_0x0953,0x19a));var _0x3095=function(_0x3e112d,_0x2bb132){_0x3e112d=_0x3e112d-0x0;var _0x531c31=_0x0953[_0x3e112d];return _0x531c31;};'use strict';var apiai=require(_0x3095('0x0'));var BPromise=require(_0x3095('0x1'));var dialogflow=require(_0x3095('0x2'));var fs=require('fs');var http=require('http');var https=require(_0x3095('0x3'));var md5=require(_0x3095('0x4'));var path=require('path');var querystring=require(_0x3095('0x5'));var rp=require(_0x3095('0x6'));var rs=require(_0x3095('0x7'));var sox=require(_0x3095('0x8'));var tts=require(_0x3095('0x9'));var urlParse=require('url')[_0x3095('0xa')];var util=require(_0x3095('0xb'));var aws=require(_0x3095('0xc'));var google=require(_0x3095('0xd'));var sestek=require(_0x3095('0xe'));var tilde=require('./tilde');var logger=require(_0x3095('0xf'))(_0x3095('0x10'));var ISPEECH_API='https://api.ispeech.org/api/rest';function downloadFile(_0x23eba7,_0x5e2a0e){return new BPromise(function(_0x3a10b6,_0x43c99c){var _0x50dc84=urlParse(_0x23eba7);var _0x2a5323=_0x50dc84[_0x3095('0x11')]===_0x3095('0x12')?https:http;var _0x4a39bf={'host':_0x50dc84[_0x3095('0x13')],'path':_0x50dc84[_0x3095('0x14')],'headers':{'user-agent':_0x3095('0x15')}};_0x2a5323[_0x3095('0x16')](_0x4a39bf,function(_0xbb1dd3){if(_0xbb1dd3[_0x3095('0x17')]!==0xc8){logger[_0x3095('0x18')](_0x3095('0x19')+_0x23eba7+_0x3095('0x1a')+_0xbb1dd3[_0x3095('0x17')]+'\x20('+_0xbb1dd3[_0x3095('0x1b')]+')');_0x43c99c(new Error('request\x20to\x20'+_0x23eba7+_0x3095('0x1a')+_0xbb1dd3[_0x3095('0x17')]+'\x20('+_0xbb1dd3[_0x3095('0x1b')]+')'));return;}var _0x2eaaa0=fs[_0x3095('0x1c')](_0x5e2a0e);_0x2eaaa0['on'](_0x3095('0x1d'),function(){logger[_0x3095('0x1e')](_0x3095('0x1f'));_0x2eaaa0[_0x3095('0x20')](_0x3a10b6);});_0x2eaaa0['on'](_0x3095('0x18'),function(_0x2a5043){fs[_0x3095('0x21')](_0x5e2a0e);logger[_0x3095('0x18')](_0x3095('0x22'),_0x2a5043);_0x43c99c(_0x2a5043);});_0xbb1dd3[_0x3095('0x23')](_0x2eaaa0);})['on'](_0x3095('0x18'),function(_0x40d688){logger['error'](_0x40d688);_0x43c99c(_0x40d688);})[_0x3095('0x24')]();});}function uploadFile(_0x571a92){return new BPromise(function(_0x34d1ac,_0x15139b){var _0x8d29d=urlParse(_0x571a92);var _0x391402=_0x8d29d[_0x3095('0x11')]===_0x3095('0x12')?https:http;var _0x1aac9c={'host':_0x8d29d['host'],'path':_0x8d29d[_0x3095('0x14')],'headers':{'user-agent':_0x3095('0x15')}};_0x391402[_0x3095('0x16')](_0x1aac9c,function(_0x4e0dd1){if(_0x4e0dd1[_0x3095('0x17')]!==0xc8){_0x15139b(new Error(_0x3095('0x19')+_0x571a92+_0x3095('0x1a')+_0x4e0dd1[_0x3095('0x17')]+'\x20('+_0x4e0dd1[_0x3095('0x1b')]+')'));return;}var _0x3fb14e='';_0x4e0dd1['on'](_0x3095('0x25'),function(_0x3a46b9){_0x3fb14e+=_0x3a46b9;});_0x4e0dd1['on'](_0x3095('0x24'),function(){_0x34d1ac(_0x3fb14e);});})['on'](_0x3095('0x18'),function(_0x6b0505){_0x15139b(_0x6b0505);})[_0x3095('0x24')]();});}function convertFile(_0x52c5a9,_0x236edc){return new BPromise(function(_0x25ab41,_0x97aa86){var _0x4e4410=sox[_0x3095('0x26')](_0x52c5a9,_0x236edc,{'sampleRate':0x1f40,'format':_0x3095('0x27'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x4e4410['on'](_0x3095('0x18'),function(_0x392aa5){logger[_0x3095('0x18')](_0x3095('0x28'),_0x392aa5);_0x97aa86(_0x392aa5);});_0x4e4410['on'](_0x3095('0x24'),function(){logger[_0x3095('0x1e')](_0x3095('0x29'));_0x25ab41();});_0x4e4410[_0x3095('0x2a')]();});}function base64Decode(_0x903de9,_0x51cc3f){var _0x30453e=path[_0x3095('0x2b')](__dirname,'tmp',rs['generate'](0x4)+'.wav');fs[_0x3095('0x2c')](_0x30453e,_0x903de9,_0x3095('0x2d'));return convertFile(_0x30453e,_0x51cc3f)[_0x3095('0x2e')](function(){try{fs['unlink'](_0x30453e);fs[_0x3095('0x2f')](_0x51cc3f,_0x3095('0x30'));}catch(_0xe64d09){logger[_0x3095('0x18')](_0xe64d09);}return _0x51cc3f[_0x3095('0x31')]('.')[0x0];});}function base64Encode(_0x1ed254){var _0x1e1bab=fs[_0x3095('0x32')](_0x1ed254);return new Buffer(_0x1e1bab)[_0x3095('0x33')](_0x3095('0x2d'));}exports['googleCloudTTS']=function(_0x64c713,_0x12d7ac,_0x12496b,_0x103424,_0x205397,_0x3b449e){var _0x584de4,_0x12bd98;var _0x4982a4=_0x3095('0x34');var _0x476b41=_0x3095('0x35')+_0x64c713;var _0x3eff3d={};if(_0x12d7ac===_0x3095('0x36')){_0x3eff3d[_0x3095('0x37')]={'ssml':_0x12496b};}else{_0x3eff3d[_0x3095('0x37')]={'text':_0x12496b};};_0x3eff3d[_0x3095('0x38')]={'languageCode':_0x103424,'ssmlGender':_0x205397};_0x3eff3d[_0x3095('0x39')]={'audioEncoding':'MP3','sampleRateHertz':0x1f40};var _0x15b5ac={'url':_0x4982a4+'text:synthesize'+_0x476b41,'method':_0x3095('0x3a'),'json':!![],'body':_0x3eff3d};return rp(_0x15b5ac)[_0x3095('0x2e')](function(_0x186a8d){return new BPromise(function(_0x150239,_0x18cb26){_0x584de4=path[_0x3095('0x2b')](__dirname,'tmp',rs[_0x3095('0x3b')](0x4)+_0x3095('0x3c'));var _0x166da5=Buffer[_0x3095('0x3d')](_0x186a8d['audioContent'],_0x3095('0x2d'));return fs[_0x3095('0x3e')](_0x584de4,_0x166da5,function(_0x31c9bf){_0x18cb26(_0x31c9bf);},function(_0x2317aa){fs['chmodSync'](_0x584de4,_0x3095('0x30'));_0x150239(_0x2317aa);});});})[_0x3095('0x2e')](function(_0x4d8638){_0x12bd98=path['resolve'](__dirname,_0x3095('0x3f'),rs[_0x3095('0x3b')](0x4)+'.wav');return convertFile(_0x584de4,_0x12bd98);})[_0x3095('0x2e')](function(){try{fs[_0x3095('0x21')](_0x584de4);fs[_0x3095('0x2f')](_0x12bd98,_0x3095('0x30'));}catch(_0xe65e5){logger[_0x3095('0x18')](_0xe65e5);}logger[_0x3095('0x1e')]('googleCloudTTS\x20path',_0x12bd98[_0x3095('0x31')]('.')[0x0]);return _0x12bd98[_0x3095('0x31')]('.')[0x0];});};exports['googleTTS']=function(_0x408874,_0x52387b){var _0x45ce00=_0x3095('0x40');var _0x10abc2,_0x4f7264;var _0x341ded;var _0x310404={'encoding':_0x3095('0x41'),'method':_0x3095('0x3a'),'timeout':0x2710,'url':_0x45ce00,'headers':{'Content-Type':_0x3095('0x42')},'body':_0x3095('0x43')+encodeURIComponent(JSON[_0x3095('0x44')]([[[_0x3095('0x45'),JSON[_0x3095('0x44')]([_0x408874,_0x52387b||'en',![],_0x3095('0x46')]),null,_0x3095('0x47')]]]))};return rp(_0x310404)[_0x3095('0x2e')](function(_0x44cfd5){try{_0x341ded=eval(_0x44cfd5['slice'](0x5))[0x0][0x2];}catch(_0x56a7bc){throw new Error(_0x3095('0x48')+_0x44cfd5[_0x3095('0x25')]);}if(!_0x341ded){if(_0x408874['length']>0xc8){throw new Error(_0x3095('0x49'));}else{throw new Error(_0x3095('0x4a')+_0x52387b+_0x3095('0x4b'));}}try{_0x341ded=eval(_0x341ded)[0x0];}catch(_0x10bdfd){throw new Error('parse\x20response\x20failed:\x0a'+res['data']);}const _0x480f4f=_0x341ded;_0x10abc2=path['resolve'](__dirname,_0x3095('0x3f'),rs['generate'](0x4)+_0x3095('0x3c'));fs[_0x3095('0x2c')](_0x10abc2,_0x341ded,{'encoding':'base64'});_0x4f7264=path['resolve'](__dirname,_0x3095('0x3f'),rs[_0x3095('0x3b')](0x4)+_0x3095('0x4c'));return convertFile(_0x10abc2,_0x4f7264);})['then'](function(){try{fs[_0x3095('0x21')](_0x10abc2);fs['chmodSync'](_0x4f7264,_0x3095('0x30'));}catch(_0x58bf31){logger[_0x3095('0x18')](_0x58bf31);}logger['info'](_0x3095('0x4d'),_0x4f7264[_0x3095('0x31')]('.')[0x0]);return _0x4f7264[_0x3095('0x31')]('.')[0x0];});};exports[_0x3095('0x4e')]=function(_0x318c72,_0x259c84,_0x27daa7){return google[_0x3095('0x4f')](_0x318c72,_0x259c84,_0x27daa7)[_0x3095('0x2e')](function(_0x2d2de3){logger[_0x3095('0x1e')](_0x2d2de3[_0x3095('0x50')]);return rp(_0x2d2de3);})[_0x3095('0x2e')](function(_0x27f399){var _0x431bf5='';var _0x20ab83=0x0;try{fs[_0x3095('0x21')](_0x318c72);}catch(_0x40d7b5){logger[_0x3095('0x18')](_0x40d7b5);}if(_0x27f399&&_0x27f399[_0x3095('0x51')]){_0x431bf5=_0x27f399[_0x3095('0x51')][_0x3095('0x52')](function(_0x33a72a){return _0x33a72a&&_0x33a72a['alternatives'][0x0]&&_0x33a72a['alternatives'][0x0][_0x3095('0x53')]?_0x33a72a[_0x3095('0x54')][0x0][_0x3095('0x53')]:'';})[_0x3095('0x55')]('\x0a');_0x20ab83=_0x27f399[_0x3095('0x51')][_0x3095('0x52')](function(_0x4aa19b){return _0x4aa19b&&_0x4aa19b[_0x3095('0x54')][0x0]&&_0x4aa19b[_0x3095('0x54')][0x0]['confidence']?_0x4aa19b[_0x3095('0x54')][0x0][_0x3095('0x56')]:0x0;})[_0x3095('0x55')]('\x0a');}logger[_0x3095('0x1e')]('googleASR\x20transcription',_0x431bf5);logger[_0x3095('0x1e')](_0x3095('0x57'),_0x20ab83);return{'transcript':_0x431bf5,'confidence':_0x20ab83};})[_0x3095('0x58')](function(_0xd0337c){logger['error']('[%s]\x20%s:%s',_0xd0337c['statusCode'],_0xd0337c[_0x3095('0x59')],_0xd0337c['message']);});};exports['googleDialogflow']=function(_0x4f0b4a,_0x1c4479,_0x2ba42c,_0xb2328){var _0x47780c=apiai(_0x1c4479,{'language':_0xb2328||'en'});return _0x47780c['textRequest'](_0x2ba42c,{'sessionId':md5(_0x4f0b4a)})[_0x3095('0x2e')](function(_0xf7977a){logger[_0x3095('0x1e')](JSON[_0x3095('0x44')](_0xf7977a));return{'source':_0xf7977a['result'][_0x3095('0x5a')],'resolvedQuery':_0xf7977a['result'][_0x3095('0x5b')],'action':_0xf7977a['result']['action'],'actionIncomplete':_0xf7977a[_0x3095('0x5c')][_0x3095('0x5d')],'speech':_0xf7977a[_0x3095('0x5c')][_0x3095('0x5e')][_0x3095('0x5f')],'score':_0xf7977a[_0x3095('0x5c')][_0x3095('0x60')],'statusCode':_0xf7977a[_0x3095('0x61')][_0x3095('0x62')],'endConversation':_0xf7977a['result'][_0x3095('0x63')][_0x3095('0x64')]||![],'isFallbackIntent':_0xf7977a[_0x3095('0x5c')][_0x3095('0x63')][_0x3095('0x65')]};});};exports['googleDialogflowV2']=function(_0x3daca3,_0x31e74d,_0x1fda65,_0x1425e9,_0x38d2c2,_0xdf8597){var _0x18a117=_0x1425e9['replace'](/\\n/g,'\x0a');var _0x1ceab4={'credentials':{'private_key':_0x18a117,'client_email':_0x1fda65}};var _0x514282=new dialogflow[(_0x3095('0x66'))](_0x1ceab4);var _0x31fda9=_0x514282[_0x3095('0x67')](_0x31e74d,md5(_0x3daca3));var _0x5bab59={'session':_0x31fda9,'queryInput':{'text':{'text':_0x38d2c2,'languageCode':_0xdf8597}}};return _0x514282['detectIntent'](_0x5bab59)[_0x3095('0x2e')](function(_0x3803c5){if(_0x3803c5&&_0x3803c5['length']){logger[_0x3095('0x1e')](_0x3095('0x68'),JSON[_0x3095('0x44')](_0x3803c5));var _0x188540=_0x3803c5[0x0];if(_0x188540){var _0x2be4da={'action':_0x188540[_0x3095('0x69')]['action'],'allRequiredParamsPresent':_0x188540[_0x3095('0x69')][_0x3095('0x6a')],'endConversation':_0x188540[_0x3095('0x69')][_0x3095('0x6b')]&&_0x188540['queryResult'][_0x3095('0x6b')]['fields']?_0x188540['queryResult'][_0x3095('0x6b')][_0x3095('0x6c')]['end_conversation']['boolValue']:![],'fulfillmentText':_0x188540[_0x3095('0x69')][_0x3095('0x6d')],'intentName':_0x188540['queryResult']['intent'][_0x3095('0x59')],'intentDisplayName':_0x188540['queryResult']['intent'][_0x3095('0x6e')],'isFallbackIntent':_0x188540[_0x3095('0x69')][_0x3095('0x6f')][_0x3095('0x70')],'languageCode':_0x188540[_0x3095('0x69')][_0x3095('0x71')],'queryText':_0x188540[_0x3095('0x69')]['queryText'],'responseId':_0x188540[_0x3095('0x72')],'score':_0x188540[_0x3095('0x69')]['intentDetectionConfidence'],'speech':_0x188540[_0x3095('0x69')]['fulfillmentText'],'providerResponse':JSON[_0x3095('0x44')](_0x3803c5)};return _0x2be4da;}}});};exports['tildeASR']=function(_0x3285ca,_0x3fd272,_0x2f7eb5,_0xd66d4a){return tilde[_0x3095('0x4f')](_0x3285ca,_0x3fd272,_0x2f7eb5,_0xd66d4a)[_0x3095('0x2e')](function(_0x53c347){try{fs[_0x3095('0x21')](_0x3285ca);}catch(_0x247bad){logger[_0x3095('0x18')](_0x247bad);}logger[_0x3095('0x1e')]('Tilde\x20ASR\x20transcription',_0x53c347['transcript']);logger[_0x3095('0x1e')](_0x3095('0x73'),_0x53c347['confidence']);return _0x53c347;});};exports['awsPolly']=function(_0x5bf16c,_0x222807,_0x36ab57,_0x4a16c2,_0x505a2d,_0x50c024){var _0x567dca=path[_0x3095('0x2b')](__dirname,'tmp',rs['generate'](0x4)+_0x3095('0x3c'));var _0x241861;return aws[_0x3095('0x74')](_0x5bf16c,_0x222807,_0x36ab57,_0x4a16c2,_0x505a2d,_0x50c024,_0x567dca)[_0x3095('0x2e')](function(){_0x241861=path[_0x3095('0x2b')](__dirname,_0x3095('0x3f'),rs[_0x3095('0x3b')](0x4)+_0x3095('0x4c'));return convertFile(_0x567dca,_0x241861);})[_0x3095('0x2e')](function(){try{fs['unlink'](_0x567dca);fs['chmodSync'](_0x241861,_0x3095('0x30'));}catch(_0x42fbc5){logger['error'](_0x42fbc5);}return _0x241861[_0x3095('0x31')]('.')[0x0];});};exports[_0x3095('0x75')]=function(_0x26cc6c,_0x201747,_0x322cb7,_0x14e9df,_0x560a61,_0xc5863b){return aws[_0x3095('0x76')](_0x26cc6c,_0x201747,_0x322cb7,_0x14e9df,_0x560a61,_0xc5863b)['then'](function(_0x3990c8){logger['info'](JSON[_0x3095('0x44')](_0x3990c8));return _0x3990c8;});};exports[_0x3095('0x77')]=function(_0x279fff,_0xb33a6a,_0x5c5648,_0x15e5ed){var _0x2c100e=util['format'](_0x3095('0x78'),ISPEECH_API,_0x279fff,encodeURIComponent(_0xb33a6a),_0x5c5648,_0x15e5ed);var _0x51a8aa=path[_0x3095('0x2b')](__dirname,'tmp',rs[_0x3095('0x3b')](0x4)+_0x3095('0x3c'));var _0x2fa204;return downloadFile(_0x2c100e,_0x51a8aa)['then'](function(){_0x2fa204=path[_0x3095('0x2b')](__dirname,_0x3095('0x3f'),rs[_0x3095('0x3b')](0x4)+_0x3095('0x4c'));return convertFile(_0x51a8aa,_0x2fa204);})[_0x3095('0x2e')](function(){try{fs[_0x3095('0x21')](_0x51a8aa);fs[_0x3095('0x2f')](_0x2fa204,'777');}catch(_0x25262a){logger[_0x3095('0x18')](_0x25262a);}return _0x2fa204[_0x3095('0x31')]('.')[0x0];});};exports['ispeechASR']=function(_0x468ee3,_0x3bcd86,_0x5b9848,_0x1707bc){var _0x368ed3=util['format'](_0x3095('0x79'),ISPEECH_API,_0x3bcd86,_0x5b9848,base64Encode(_0x468ee3),_0x1707bc?util[_0x3095('0x7a')](_0x3095('0x7b'),encodeURIComponent(_0x1707bc)):_0x3095('0x7c'));return uploadFile(_0x368ed3)[_0x3095('0x2e')](function(_0x3204a2){return querystring[_0x3095('0xa')](_0x3204a2);});};exports[_0x3095('0x7d')]=function(_0x3bd592,_0x4052cf){return sestek[_0x3095('0x7e')](_0x3bd592,_0x4052cf)[_0x3095('0x2e')](function(_0x5a1269){logger[_0x3095('0x1e')](JSON[_0x3095('0x44')](_0x5a1269));var _0x282474={'speech':_0x5a1269[_0x3095('0x7f')],'action':_0x5a1269[_0x3095('0x80')]?_0x5a1269['channelData'][_0x3095('0x81')]:undefined,'actiondata':_0x5a1269[_0x3095('0x80')]?_0x5a1269[_0x3095('0x80')][_0x3095('0x82')]:undefined};if(_0x5a1269[_0x3095('0x80')]&&_0x5a1269[_0x3095('0x80')][_0x3095('0x83')]){return base64Decode(_0x5a1269[_0x3095('0x80')]['AudioFromTts']['Data'],path['resolve'](__dirname,_0x3095('0x3f'),rs[_0x3095('0x3b')](0x4)+'.wav'))[_0x3095('0x2e')](function(_0xcd139e){_0x282474[_0x3095('0x84')]=_0xcd139e;return _0x282474;});}return _0x282474;});};exports['dirName']=function(){return __dirname;};