ccb40f89e1d57c04c0e3561b6649eb7cb2d3229d
[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 _0x7774=['finish\x20to\x20convert','start','tmp','generate','.wav','writeFileSync','base64','then','777','split','googleCloudTTS','input','voice','audioConfig','MP3','resolve','.mp3','from','audioContent','writeFile','chmodSync','googleCloudTTS\x20path','googleTTS','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','utf8','POST','f.req=','stringify','generic','slice','parse\x20response\x20failed:\x0a','lang\x20\x22','\x22\x20might\x20not\x20exist','goggleTTS\x20path','googleASR','results','map','alternatives','transcript','confidence','catch','[%s]\x20%s:%s','name','message','textRequest','source','result','fulfillment','code','metadata','isFallbackIntent','replace','SessionsClient','sessionPath','detectIntent','length','Dialogflow\x20V2\x20response:','queryResult','diagnosticInfo','end_conversation','boolValue','fulfillmentText','intent','displayName','isFallback','languageCode','queryText','responseId','tildeASR','asr','Tilde\x20ASR\x20transcription','Tilde\x20ASR\x20confidence','awsLex','lex','ispeechTTS','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','parse','sestekNDA','nda','text','channelData','CustomAction','CustomActionData','AudioFromTts','Data','audiofile','dirName','apiai-promise','bluebird','http','https','md5','path','querystring','randomstring','sox','google-tts-api','url','util','./sestek','../../../config/logger','agi','protocol','https:','host','WHAT_EVER','request\x20to\x20','statusCode','statusMessage','\x20failed,\x20status\x20code\x20=\x20','finish','info','close','unlink','download\x20error','pipe','error','end','data','transcode','wav','error\x20convert'];(function(_0x3b9d25,_0x3d9c64){var _0x38a18e=function(_0x116aa6){while(--_0x116aa6){_0x3b9d25['push'](_0x3b9d25['shift']());}};_0x38a18e(++_0x3d9c64);}(_0x7774,0xdb));var _0x4777=function(_0x22868f,_0x450f48){_0x22868f=_0x22868f-0x0;var _0x97bc75=_0x7774[_0x22868f];return _0x97bc75;};'use strict';var apiai=require(_0x4777('0x0'));var BPromise=require(_0x4777('0x1'));var dialogflow=require('dialogflow');var fs=require('fs');var http=require(_0x4777('0x2'));var https=require(_0x4777('0x3'));var md5=require(_0x4777('0x4'));var path=require(_0x4777('0x5'));var querystring=require(_0x4777('0x6'));var rp=require('request-promise');var rs=require(_0x4777('0x7'));var sox=require(_0x4777('0x8'));var tts=require(_0x4777('0x9'));var urlParse=require(_0x4777('0xa'))['parse'];var util=require(_0x4777('0xb'));var aws=require('./aws');var google=require('./google');var sestek=require(_0x4777('0xc'));var tilde=require('./tilde');var logger=require(_0x4777('0xd'))(_0x4777('0xe'));var ISPEECH_API='https://api.ispeech.org/api/rest';function downloadFile(_0xe06bc6,_0x1ab487){return new BPromise(function(_0x5723ee,_0x14663d){var _0xfe467=urlParse(_0xe06bc6);var _0x59bcb4=_0xfe467[_0x4777('0xf')]===_0x4777('0x10')?https:http;var _0x1a4deb={'host':_0xfe467[_0x4777('0x11')],'path':_0xfe467[_0x4777('0x5')],'headers':{'user-agent':_0x4777('0x12')}};_0x59bcb4['get'](_0x1a4deb,function(_0x2e82a4){if(_0x2e82a4['statusCode']!==0xc8){logger['error'](_0x4777('0x13')+_0xe06bc6+'\x20failed,\x20status\x20code\x20=\x20'+_0x2e82a4[_0x4777('0x14')]+'\x20('+_0x2e82a4[_0x4777('0x15')]+')');_0x14663d(new Error(_0x4777('0x13')+_0xe06bc6+_0x4777('0x16')+_0x2e82a4[_0x4777('0x14')]+'\x20('+_0x2e82a4[_0x4777('0x15')]+')'));return;}var _0x461414=fs['createWriteStream'](_0x1ab487);_0x461414['on'](_0x4777('0x17'),function(){logger[_0x4777('0x18')]('finish\x20download\x20file');_0x461414[_0x4777('0x19')](_0x5723ee);});_0x461414['on']('error',function(_0x40aab5){fs[_0x4777('0x1a')](_0x1ab487);logger['error'](_0x4777('0x1b'),_0x40aab5);_0x14663d(_0x40aab5);});_0x2e82a4[_0x4777('0x1c')](_0x461414);})['on'](_0x4777('0x1d'),function(_0x3aba2b){logger['error'](_0x3aba2b);_0x14663d(_0x3aba2b);})[_0x4777('0x1e')]();});}function uploadFile(_0x1b5c28){return new BPromise(function(_0x1d6c64,_0x1ce8f3){var _0x4f0fb7=urlParse(_0x1b5c28);var _0x260d13=_0x4f0fb7[_0x4777('0xf')]===_0x4777('0x10')?https:http;var _0x556a3a={'host':_0x4f0fb7['host'],'path':_0x4f0fb7['path'],'headers':{'user-agent':'WHAT_EVER'}};_0x260d13['get'](_0x556a3a,function(_0xede5a1){if(_0xede5a1[_0x4777('0x14')]!==0xc8){_0x1ce8f3(new Error('request\x20to\x20'+_0x1b5c28+'\x20failed,\x20status\x20code\x20=\x20'+_0xede5a1[_0x4777('0x14')]+'\x20('+_0xede5a1[_0x4777('0x15')]+')'));return;}var _0x573225='';_0xede5a1['on'](_0x4777('0x1f'),function(_0x46a390){_0x573225+=_0x46a390;});_0xede5a1['on'](_0x4777('0x1e'),function(){_0x1d6c64(_0x573225);});})['on']('error',function(_0x4f4c55){_0x1ce8f3(_0x4f4c55);})['end']();});}function convertFile(_0x1d5dbc,_0xc7f59a){return new BPromise(function(_0x300558,_0xbbcdb2){var _0x3f76d5=sox[_0x4777('0x20')](_0x1d5dbc,_0xc7f59a,{'sampleRate':0x1f40,'format':_0x4777('0x21'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x3f76d5['on'](_0x4777('0x1d'),function(_0x31d3cb){logger[_0x4777('0x1d')](_0x4777('0x22'),_0x31d3cb);_0xbbcdb2(_0x31d3cb);});_0x3f76d5['on'](_0x4777('0x1e'),function(){logger[_0x4777('0x18')](_0x4777('0x23'));_0x300558();});_0x3f76d5[_0x4777('0x24')]();});}function base64Decode(_0x562e5d,_0x26e708){var _0x3d1dfd=path['resolve'](__dirname,_0x4777('0x25'),rs[_0x4777('0x26')](0x4)+_0x4777('0x27'));fs[_0x4777('0x28')](_0x3d1dfd,_0x562e5d,_0x4777('0x29'));return convertFile(_0x3d1dfd,_0x26e708)[_0x4777('0x2a')](function(){try{fs[_0x4777('0x1a')](_0x3d1dfd);fs['chmodSync'](_0x26e708,_0x4777('0x2b'));}catch(_0x1a322c){logger['error'](_0x1a322c);}return _0x26e708[_0x4777('0x2c')]('.')[0x0];});}function base64Encode(_0x3d15ee){var _0x25faee=fs['readFileSync'](_0x3d15ee);return new Buffer(_0x25faee)['toString'](_0x4777('0x29'));}exports[_0x4777('0x2d')]=function(_0x5e10aa,_0x5f0aaf,_0x22f68c,_0x5654c1,_0x37cd7c,_0x21d49f){var _0x21f804,_0x206406;var _0xc4ffff='https://texttospeech.googleapis.com/v1/';var _0x4edc8b='?key='+_0x5e10aa;var _0x152a70={};if(_0x5f0aaf==='ssml'){_0x152a70[_0x4777('0x2e')]={'ssml':_0x22f68c};}else{_0x152a70['input']={'text':_0x22f68c};};_0x152a70[_0x4777('0x2f')]={'languageCode':_0x5654c1,'ssmlGender':_0x37cd7c};_0x152a70[_0x4777('0x30')]={'audioEncoding':_0x4777('0x31'),'sampleRateHertz':0x1f40};var _0x4280e4={'url':_0xc4ffff+'text:synthesize'+_0x4edc8b,'method':'POST','json':!![],'body':_0x152a70};return rp(_0x4280e4)[_0x4777('0x2a')](function(_0x1ca0a9){return new BPromise(function(_0xdc8c65,_0x393039){_0x21f804=path[_0x4777('0x32')](__dirname,'tmp',rs[_0x4777('0x26')](0x4)+_0x4777('0x33'));var _0x3a5636=Buffer[_0x4777('0x34')](_0x1ca0a9[_0x4777('0x35')],_0x4777('0x29'));return fs[_0x4777('0x36')](_0x21f804,_0x3a5636,function(_0x31143b){_0x393039(_0x31143b);},function(_0x54ede7){fs[_0x4777('0x37')](_0x21f804,_0x4777('0x2b'));_0xdc8c65(_0x54ede7);});});})[_0x4777('0x2a')](function(_0x5ce5dd){_0x206406=path['resolve'](__dirname,_0x4777('0x25'),rs[_0x4777('0x26')](0x4)+_0x4777('0x27'));return convertFile(_0x21f804,_0x206406);})[_0x4777('0x2a')](function(){try{fs[_0x4777('0x1a')](_0x21f804);fs[_0x4777('0x37')](_0x206406,_0x4777('0x2b'));}catch(_0x59b451){logger[_0x4777('0x1d')](_0x59b451);}logger[_0x4777('0x18')](_0x4777('0x38'),_0x206406[_0x4777('0x2c')]('.')[0x0]);return _0x206406['split']('.')[0x0];});};exports[_0x4777('0x39')]=function(_0x262c6a,_0x2af386){var _0x466f94=_0x4777('0x3a');var _0x528af1,_0x420788;var _0xa6a184;var _0x2a2956={'encoding':_0x4777('0x3b'),'method':_0x4777('0x3c'),'timeout':0x2710,'url':_0x466f94,'headers':{'Content-Type':'application/x-www-form-urlencoded'},'body':_0x4777('0x3d')+encodeURIComponent(JSON[_0x4777('0x3e')]([[['jQ1olc',JSON[_0x4777('0x3e')]([_0x262c6a,_0x2af386||'en',![],'null']),null,_0x4777('0x3f')]]]))};return rp(_0x2a2956)['then'](function(_0x512046){try{_0xa6a184=eval(_0x512046[_0x4777('0x40')](0x5))[0x0][0x2];}catch(_0x4046cf){throw new Error(_0x4777('0x41')+_0x512046[_0x4777('0x1f')]);}if(!_0xa6a184){if(_0x262c6a['length']>0xc8){throw new Error('text\x20length\x20limit\x20reached');}else{throw new Error(_0x4777('0x42')+_0x2af386+_0x4777('0x43'));}}try{_0xa6a184=eval(_0xa6a184)[0x0];}catch(_0x4c16ac){throw new Error('parse\x20response\x20failed:\x0a'+res[_0x4777('0x1f')]);}const _0x35c9a1=_0xa6a184;_0x528af1=path['resolve'](__dirname,_0x4777('0x25'),rs['generate'](0x4)+_0x4777('0x33'));fs['writeFileSync'](_0x528af1,_0xa6a184,{'encoding':_0x4777('0x29')});_0x420788=path[_0x4777('0x32')](__dirname,_0x4777('0x25'),rs[_0x4777('0x26')](0x4)+_0x4777('0x27'));return convertFile(_0x528af1,_0x420788);})['then'](function(){try{fs[_0x4777('0x1a')](_0x528af1);fs['chmodSync'](_0x420788,_0x4777('0x2b'));}catch(_0x2bafe7){logger['error'](_0x2bafe7);}logger['info'](_0x4777('0x44'),_0x420788[_0x4777('0x2c')]('.')[0x0]);return _0x420788[_0x4777('0x2c')]('.')[0x0];});};exports[_0x4777('0x45')]=function(_0x1c14e5,_0x288794,_0x4bae69){return google['asr'](_0x1c14e5,_0x288794,_0x4bae69)[_0x4777('0x2a')](function(_0x4bb597){logger[_0x4777('0x18')](_0x4bb597['uri']);return rp(_0x4bb597);})[_0x4777('0x2a')](function(_0x9eeef0){var _0x5097c9='';var _0xe6a97c=0x0;try{fs[_0x4777('0x1a')](_0x1c14e5);}catch(_0x134069){logger['error'](_0x134069);}if(_0x9eeef0&&_0x9eeef0[_0x4777('0x46')]){_0x5097c9=_0x9eeef0['results'][_0x4777('0x47')](function(_0x4e82b8){return _0x4e82b8&&_0x4e82b8[_0x4777('0x48')][0x0]&&_0x4e82b8[_0x4777('0x48')][0x0][_0x4777('0x49')]?_0x4e82b8[_0x4777('0x48')][0x0][_0x4777('0x49')]:'';})['join']('\x0a');_0xe6a97c=_0x9eeef0['results']['map'](function(_0x17510b){return _0x17510b&&_0x17510b[_0x4777('0x48')][0x0]&&_0x17510b[_0x4777('0x48')][0x0][_0x4777('0x4a')]?_0x17510b[_0x4777('0x48')][0x0][_0x4777('0x4a')]:0x0;})['join']('\x0a');}logger['info']('googleASR\x20transcription',_0x5097c9);logger[_0x4777('0x18')]('googleASR\x20confidence',_0xe6a97c);return{'transcript':_0x5097c9,'confidence':_0xe6a97c};})[_0x4777('0x4b')](function(_0x1df139){logger[_0x4777('0x1d')](_0x4777('0x4c'),_0x1df139[_0x4777('0x14')],_0x1df139[_0x4777('0x4d')],_0x1df139[_0x4777('0x4e')]);});};exports['googleDialogflow']=function(_0x251fbe,_0x2b3e1a,_0x5cd476,_0x1af3b2){var _0x55cf7f=apiai(_0x2b3e1a,{'language':_0x1af3b2||'en'});return _0x55cf7f[_0x4777('0x4f')](_0x5cd476,{'sessionId':md5(_0x251fbe)})[_0x4777('0x2a')](function(_0x21c1fa){logger[_0x4777('0x18')](JSON[_0x4777('0x3e')](_0x21c1fa));return{'source':_0x21c1fa['result'][_0x4777('0x50')],'resolvedQuery':_0x21c1fa[_0x4777('0x51')]['resolvedQuery'],'action':_0x21c1fa[_0x4777('0x51')]['action'],'actionIncomplete':_0x21c1fa['result']['actionIncomplete'],'speech':_0x21c1fa[_0x4777('0x51')][_0x4777('0x52')]['speech'],'score':_0x21c1fa[_0x4777('0x51')]['score'],'statusCode':_0x21c1fa['status'][_0x4777('0x53')],'endConversation':_0x21c1fa[_0x4777('0x51')][_0x4777('0x54')]['endConversation']||![],'isFallbackIntent':_0x21c1fa[_0x4777('0x51')][_0x4777('0x54')][_0x4777('0x55')]};});};exports['googleDialogflowV2']=function(_0x4353d4,_0x269bb8,_0xd6da4d,_0x16d9ea,_0x4e4c5d,_0x24506f){var _0x1dcab3=_0x16d9ea[_0x4777('0x56')](/\\n/g,'\x0a');var _0x4504ac={'credentials':{'private_key':_0x1dcab3,'client_email':_0xd6da4d}};var _0x4862a0=new dialogflow[(_0x4777('0x57'))](_0x4504ac);var _0x2a55ea=_0x4862a0[_0x4777('0x58')](_0x269bb8,md5(_0x4353d4));var _0x5cf821={'session':_0x2a55ea,'queryInput':{'text':{'text':_0x4e4c5d,'languageCode':_0x24506f}}};return _0x4862a0[_0x4777('0x59')](_0x5cf821)[_0x4777('0x2a')](function(_0xa4a78d){if(_0xa4a78d&&_0xa4a78d[_0x4777('0x5a')]){logger[_0x4777('0x18')](_0x4777('0x5b'),JSON[_0x4777('0x3e')](_0xa4a78d));var _0x21a04e=_0xa4a78d[0x0];if(_0x21a04e){var _0x14c60f={'action':_0x21a04e[_0x4777('0x5c')]['action'],'allRequiredParamsPresent':_0x21a04e['queryResult']['allRequiredParamsPresent'],'endConversation':_0x21a04e[_0x4777('0x5c')][_0x4777('0x5d')]&&_0x21a04e['queryResult'][_0x4777('0x5d')]['fields']?_0x21a04e[_0x4777('0x5c')][_0x4777('0x5d')]['fields'][_0x4777('0x5e')][_0x4777('0x5f')]:![],'fulfillmentText':_0x21a04e[_0x4777('0x5c')][_0x4777('0x60')],'intentName':_0x21a04e[_0x4777('0x5c')][_0x4777('0x61')]['name'],'intentDisplayName':_0x21a04e[_0x4777('0x5c')][_0x4777('0x61')][_0x4777('0x62')],'isFallbackIntent':_0x21a04e[_0x4777('0x5c')]['intent'][_0x4777('0x63')],'languageCode':_0x21a04e[_0x4777('0x5c')][_0x4777('0x64')],'queryText':_0x21a04e['queryResult'][_0x4777('0x65')],'responseId':_0x21a04e[_0x4777('0x66')],'score':_0x21a04e['queryResult']['intentDetectionConfidence'],'speech':_0x21a04e['queryResult'][_0x4777('0x60')],'providerResponse':JSON['stringify'](_0xa4a78d)};return _0x14c60f;}}});};exports[_0x4777('0x67')]=function(_0x46da40,_0x651aa,_0x332e5c,_0x3fe464){return tilde[_0x4777('0x68')](_0x46da40,_0x651aa,_0x332e5c,_0x3fe464)[_0x4777('0x2a')](function(_0x3bf479){try{fs[_0x4777('0x1a')](_0x46da40);}catch(_0xf9432){logger[_0x4777('0x1d')](_0xf9432);}logger['info'](_0x4777('0x69'),_0x3bf479[_0x4777('0x49')]);logger[_0x4777('0x18')](_0x4777('0x6a'),_0x3bf479[_0x4777('0x4a')]);return _0x3bf479;});};exports['awsPolly']=function(_0x510c45,_0x221566,_0xef1761,_0x30e4fa,_0x46be70,_0x5e36f1){var _0x262492=path[_0x4777('0x32')](__dirname,_0x4777('0x25'),rs[_0x4777('0x26')](0x4)+_0x4777('0x33'));var _0x2a9f8b;return aws['polly'](_0x510c45,_0x221566,_0xef1761,_0x30e4fa,_0x46be70,_0x5e36f1,_0x262492)[_0x4777('0x2a')](function(){_0x2a9f8b=path[_0x4777('0x32')](__dirname,'tmp',rs[_0x4777('0x26')](0x4)+'.wav');return convertFile(_0x262492,_0x2a9f8b);})['then'](function(){try{fs[_0x4777('0x1a')](_0x262492);fs['chmodSync'](_0x2a9f8b,'777');}catch(_0x250ab2){logger[_0x4777('0x1d')](_0x250ab2);}return _0x2a9f8b[_0x4777('0x2c')]('.')[0x0];});};exports[_0x4777('0x6b')]=function(_0x5aa80d,_0x28a9da,_0x32d5a2,_0x2d2e59,_0x48ea14,_0x4d0e40){return aws[_0x4777('0x6c')](_0x5aa80d,_0x28a9da,_0x32d5a2,_0x2d2e59,_0x48ea14,_0x4d0e40)[_0x4777('0x2a')](function(_0x443d33){logger[_0x4777('0x18')](JSON[_0x4777('0x3e')](_0x443d33));return _0x443d33;});};exports[_0x4777('0x6d')]=function(_0x2d663c,_0x46f911,_0x39a84a,_0x2bbc62){var _0x3d3a28=util[_0x4777('0x6e')](_0x4777('0x6f'),ISPEECH_API,_0x2d663c,encodeURIComponent(_0x46f911),_0x39a84a,_0x2bbc62);var _0x47368a=path[_0x4777('0x32')](__dirname,_0x4777('0x25'),rs[_0x4777('0x26')](0x4)+_0x4777('0x33'));var _0x6e739d;return downloadFile(_0x3d3a28,_0x47368a)[_0x4777('0x2a')](function(){_0x6e739d=path[_0x4777('0x32')](__dirname,_0x4777('0x25'),rs[_0x4777('0x26')](0x4)+_0x4777('0x27'));return convertFile(_0x47368a,_0x6e739d);})['then'](function(){try{fs[_0x4777('0x1a')](_0x47368a);fs[_0x4777('0x37')](_0x6e739d,_0x4777('0x2b'));}catch(_0x2d028c){logger[_0x4777('0x1d')](_0x2d028c);}return _0x6e739d['split']('.')[0x0];});};exports[_0x4777('0x70')]=function(_0x139bd1,_0x453c56,_0x4fb99c,_0x4b551d){var _0x2a6289=util['format'](_0x4777('0x71'),ISPEECH_API,_0x453c56,_0x4fb99c,base64Encode(_0x139bd1),_0x4b551d?util[_0x4777('0x6e')](_0x4777('0x72'),encodeURIComponent(_0x4b551d)):_0x4777('0x73'));return uploadFile(_0x2a6289)['then'](function(_0x3d23c5){return querystring[_0x4777('0x74')](_0x3d23c5);});};exports[_0x4777('0x75')]=function(_0x2fee53,_0xfbf602){return sestek[_0x4777('0x76')](_0x2fee53,_0xfbf602)[_0x4777('0x2a')](function(_0x15e034){logger[_0x4777('0x18')](JSON[_0x4777('0x3e')](_0x15e034));var _0x52c58d={'speech':_0x15e034[_0x4777('0x77')],'action':_0x15e034[_0x4777('0x78')]?_0x15e034[_0x4777('0x78')][_0x4777('0x79')]:undefined,'actiondata':_0x15e034[_0x4777('0x78')]?_0x15e034[_0x4777('0x78')][_0x4777('0x7a')]:undefined};if(_0x15e034[_0x4777('0x78')]&&_0x15e034[_0x4777('0x78')][_0x4777('0x7b')]){return base64Decode(_0x15e034[_0x4777('0x78')]['AudioFromTts'][_0x4777('0x7c')],path[_0x4777('0x32')](__dirname,'tmp',rs[_0x4777('0x26')](0x4)+'.wav'))[_0x4777('0x2a')](function(_0x32a6dc){_0x52c58d[_0x4777('0x7d')]=_0x32a6dc;return _0x52c58d;});}return _0x52c58d;});};exports[_0x4777('0x7e')]=function(){return __dirname;};