a22aa64d41bd4fe5817546ca44b298342c0dc66f
[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 _0x143d=['util','./sestek','./tilde','../../../config/logger','https://api.ispeech.org/api/rest','WHAT_EVER','get','statusCode','error','request\x20to\x20','\x20failed,\x20status\x20code\x20=\x20','createWriteStream','finish','info','finish\x20download\x20file','pipe','end','protocol','https:','host','statusMessage','data','wav','error\x20convert','finish\x20to\x20convert','start','resolve','tmp','generate','.wav','writeFileSync','base64','unlink','chmodSync','777','split','readFileSync','toString','googleCloudTTS','?key=','input','audioConfig','MP3','text:synthesize','.mp3','from','writeFile','then','googleCloudTTS\x20path','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','utf8','POST','application/x-www-form-urlencoded','f.req=','stringify','jQ1olc','null','generic','parse\x20response\x20failed:\x0a','length','text\x20length\x20limit\x20reached','lang\x20\x22','\x22\x20might\x20not\x20exist','googleASR','asr','uri','results','map','alternatives','transcript','join','confidence','catch','name','message','googleDialogflow','textRequest','source','result','fulfillment','speech','code','metadata','endConversation','googleDialogflowV2','detectIntent','Dialogflow\x20V2\x20response:','queryResult','action','allRequiredParamsPresent','diagnosticInfo','fields','end_conversation','boolValue','fulfillmentText','intent','displayName','isFallback','languageCode','queryText','responseId','intentDetectionConfidence','tildeASR','Tilde\x20ASR\x20transcription','Tilde\x20ASR\x20confidence','awsPolly','awsLex','lex','%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3','format','%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','dialogflow','https','md5','path','request-promise','randomstring','sox','google-tts-api','url'];(function(_0x1694f5,_0x49b7c3){var _0x5b4321=function(_0x58c183){while(--_0x58c183){_0x1694f5['push'](_0x1694f5['shift']());}};_0x5b4321(++_0x49b7c3);}(_0x143d,0x103));var _0xd143=function(_0x210b93,_0x133e6d){_0x210b93=_0x210b93-0x0;var _0x2b020f=_0x143d[_0x210b93];return _0x2b020f;};'use strict';var apiai=require(_0xd143('0x0'));var BPromise=require(_0xd143('0x1'));var dialogflow=require(_0xd143('0x2'));var fs=require('fs');var http=require('http');var https=require(_0xd143('0x3'));var md5=require(_0xd143('0x4'));var path=require(_0xd143('0x5'));var querystring=require('querystring');var rp=require(_0xd143('0x6'));var rs=require(_0xd143('0x7'));var sox=require(_0xd143('0x8'));var tts=require(_0xd143('0x9'));var urlParse=require(_0xd143('0xa'))['parse'];var util=require(_0xd143('0xb'));var aws=require('./aws');var google=require('./google');var sestek=require(_0xd143('0xc'));var tilde=require(_0xd143('0xd'));var logger=require(_0xd143('0xe'))('agi');var ISPEECH_API=_0xd143('0xf');function downloadFile(_0xbc00f6,_0x4eae2f){return new BPromise(function(_0x37ec6a,_0x3f268a){var _0x13e6fb=urlParse(_0xbc00f6);var _0x532cc0=_0x13e6fb['protocol']==='https:'?https:http;var _0x1c2a23={'host':_0x13e6fb['host'],'path':_0x13e6fb['path'],'headers':{'user-agent':_0xd143('0x10')}};_0x532cc0[_0xd143('0x11')](_0x1c2a23,function(_0x12ec6c){if(_0x12ec6c[_0xd143('0x12')]!==0xc8){logger[_0xd143('0x13')](_0xd143('0x14')+_0xbc00f6+_0xd143('0x15')+_0x12ec6c[_0xd143('0x12')]+'\x20('+_0x12ec6c['statusMessage']+')');_0x3f268a(new Error(_0xd143('0x14')+_0xbc00f6+'\x20failed,\x20status\x20code\x20=\x20'+_0x12ec6c[_0xd143('0x12')]+'\x20('+_0x12ec6c['statusMessage']+')'));return;}var _0x507c03=fs[_0xd143('0x16')](_0x4eae2f);_0x507c03['on'](_0xd143('0x17'),function(){logger[_0xd143('0x18')](_0xd143('0x19'));_0x507c03['close'](_0x37ec6a);});_0x507c03['on']('error',function(_0x425812){fs['unlink'](_0x4eae2f);logger['error']('download\x20error',_0x425812);_0x3f268a(_0x425812);});_0x12ec6c[_0xd143('0x1a')](_0x507c03);})['on']('error',function(_0x2ce283){logger[_0xd143('0x13')](_0x2ce283);_0x3f268a(_0x2ce283);})[_0xd143('0x1b')]();});}function uploadFile(_0x1c34ec){return new BPromise(function(_0x42b5dd,_0x1571ae){var _0x2d4a6d=urlParse(_0x1c34ec);var _0x2331ff=_0x2d4a6d[_0xd143('0x1c')]===_0xd143('0x1d')?https:http;var _0x50b61a={'host':_0x2d4a6d[_0xd143('0x1e')],'path':_0x2d4a6d[_0xd143('0x5')],'headers':{'user-agent':_0xd143('0x10')}};_0x2331ff[_0xd143('0x11')](_0x50b61a,function(_0x46724b){if(_0x46724b[_0xd143('0x12')]!==0xc8){_0x1571ae(new Error('request\x20to\x20'+_0x1c34ec+'\x20failed,\x20status\x20code\x20=\x20'+_0x46724b[_0xd143('0x12')]+'\x20('+_0x46724b[_0xd143('0x1f')]+')'));return;}var _0x4ee72f='';_0x46724b['on'](_0xd143('0x20'),function(_0x244cc3){_0x4ee72f+=_0x244cc3;});_0x46724b['on']('end',function(){_0x42b5dd(_0x4ee72f);});})['on'](_0xd143('0x13'),function(_0x4a418e){_0x1571ae(_0x4a418e);})['end']();});}function convertFile(_0x3ad51e,_0x108c0f){return new BPromise(function(_0x127554,_0x35c424){var _0x36a2e0=sox['transcode'](_0x3ad51e,_0x108c0f,{'sampleRate':0x1f40,'format':_0xd143('0x21'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x36a2e0['on']('error',function(_0x527795){logger[_0xd143('0x13')](_0xd143('0x22'),_0x527795);_0x35c424(_0x527795);});_0x36a2e0['on'](_0xd143('0x1b'),function(){logger['info'](_0xd143('0x23'));_0x127554();});_0x36a2e0[_0xd143('0x24')]();});}function base64Decode(_0x95763a,_0x21100d){var _0x4a26a3=path[_0xd143('0x25')](__dirname,_0xd143('0x26'),rs[_0xd143('0x27')](0x4)+_0xd143('0x28'));fs[_0xd143('0x29')](_0x4a26a3,_0x95763a,_0xd143('0x2a'));return convertFile(_0x4a26a3,_0x21100d)['then'](function(){try{fs[_0xd143('0x2b')](_0x4a26a3);fs[_0xd143('0x2c')](_0x21100d,_0xd143('0x2d'));}catch(_0x45ed56){logger[_0xd143('0x13')](_0x45ed56);}return _0x21100d[_0xd143('0x2e')]('.')[0x0];});}function base64Encode(_0x4ff1ba){var _0x29683d=fs[_0xd143('0x2f')](_0x4ff1ba);return new Buffer(_0x29683d)[_0xd143('0x30')]('base64');}exports[_0xd143('0x31')]=function(_0x2dbae0,_0x775a49,_0x15ed64,_0x87fd32,_0x33df08,_0x3aaf33){var _0x263abd,_0x560e8c;var _0x235cb4='https://texttospeech.googleapis.com/v1/';var _0x9076d4=_0xd143('0x32')+_0x2dbae0;var _0x3d70da={};if(_0x775a49==='ssml'){_0x3d70da[_0xd143('0x33')]={'ssml':_0x15ed64};}else{_0x3d70da[_0xd143('0x33')]={'text':_0x15ed64};};_0x3d70da['voice']={'languageCode':_0x87fd32,'ssmlGender':_0x33df08};_0x3d70da[_0xd143('0x34')]={'audioEncoding':_0xd143('0x35'),'sampleRateHertz':0x1f40};var _0x331f34={'url':_0x235cb4+_0xd143('0x36')+_0x9076d4,'method':'POST','json':!![],'body':_0x3d70da};return rp(_0x331f34)['then'](function(_0xca0458){return new BPromise(function(_0x78c384,_0x5bf594){_0x263abd=path[_0xd143('0x25')](__dirname,_0xd143('0x26'),rs['generate'](0x4)+_0xd143('0x37'));var _0x321e4a=Buffer[_0xd143('0x38')](_0xca0458['audioContent'],_0xd143('0x2a'));return fs[_0xd143('0x39')](_0x263abd,_0x321e4a,function(_0x359ae5){_0x5bf594(_0x359ae5);},function(_0x199579){fs[_0xd143('0x2c')](_0x263abd,_0xd143('0x2d'));_0x78c384(_0x199579);});});})[_0xd143('0x3a')](function(_0x574516){_0x560e8c=path[_0xd143('0x25')](__dirname,'tmp',rs[_0xd143('0x27')](0x4)+_0xd143('0x28'));return convertFile(_0x263abd,_0x560e8c);})['then'](function(){try{fs[_0xd143('0x2b')](_0x263abd);fs['chmodSync'](_0x560e8c,_0xd143('0x2d'));}catch(_0x203f6a){logger[_0xd143('0x13')](_0x203f6a);}logger[_0xd143('0x18')](_0xd143('0x3b'),_0x560e8c[_0xd143('0x2e')]('.')[0x0]);return _0x560e8c[_0xd143('0x2e')]('.')[0x0];});};exports['googleTTS']=function(_0x5cb153,_0x50321a){var _0x144a32=_0xd143('0x3c');var _0x1e2167,_0x3c4a9b;var _0x68e0fb;var _0x293f4d={'encoding':_0xd143('0x3d'),'method':_0xd143('0x3e'),'timeout':0x2710,'url':_0x144a32,'headers':{'Content-Type':_0xd143('0x3f')},'body':_0xd143('0x40')+encodeURIComponent(JSON[_0xd143('0x41')]([[[_0xd143('0x42'),JSON[_0xd143('0x41')]([_0x5cb153,_0x50321a||'en',![],_0xd143('0x43')]),null,_0xd143('0x44')]]]))};return rp(_0x293f4d)[_0xd143('0x3a')](function(_0xfc12fa){try{_0x68e0fb=eval(_0xfc12fa['slice'](0x5))[0x0][0x2];}catch(_0x34a947){throw new Error(_0xd143('0x45')+_0xfc12fa[_0xd143('0x20')]);}if(!_0x68e0fb){if(_0x5cb153[_0xd143('0x46')]>0xc8){throw new Error(_0xd143('0x47'));}else{throw new Error(_0xd143('0x48')+_0x50321a+_0xd143('0x49'));}}try{_0x68e0fb=eval(_0x68e0fb)[0x0];}catch(_0x32bb54){throw new Error(_0xd143('0x45')+res['data']);}const _0x78489a=_0x68e0fb;_0x1e2167=path[_0xd143('0x25')](__dirname,_0xd143('0x26'),rs['generate'](0x4)+_0xd143('0x37'));fs['writeFileSync'](_0x1e2167,_0x68e0fb,{'encoding':_0xd143('0x2a')});_0x3c4a9b=path[_0xd143('0x25')](__dirname,'tmp',rs[_0xd143('0x27')](0x4)+_0xd143('0x28'));return convertFile(_0x1e2167,_0x3c4a9b);})['then'](function(){try{fs['unlink'](_0x1e2167);fs['chmodSync'](_0x3c4a9b,_0xd143('0x2d'));}catch(_0x264ee6){logger[_0xd143('0x13')](_0x264ee6);}logger['info']('goggleTTS\x20path',_0x3c4a9b[_0xd143('0x2e')]('.')[0x0]);return _0x3c4a9b[_0xd143('0x2e')]('.')[0x0];});};exports[_0xd143('0x4a')]=function(_0x73b9bd,_0x88c1f7,_0x53feb3){return google[_0xd143('0x4b')](_0x73b9bd,_0x88c1f7,_0x53feb3)[_0xd143('0x3a')](function(_0x33cb39){logger[_0xd143('0x18')](_0x33cb39[_0xd143('0x4c')]);return rp(_0x33cb39);})['then'](function(_0x3fa550){var _0x86342a='';var _0x2053bf=0x0;try{fs[_0xd143('0x2b')](_0x73b9bd);}catch(_0x12fbb7){logger[_0xd143('0x13')](_0x12fbb7);}if(_0x3fa550&&_0x3fa550[_0xd143('0x4d')]){_0x86342a=_0x3fa550[_0xd143('0x4d')][_0xd143('0x4e')](function(_0x32c151){return _0x32c151&&_0x32c151[_0xd143('0x4f')][0x0]&&_0x32c151[_0xd143('0x4f')][0x0][_0xd143('0x50')]?_0x32c151['alternatives'][0x0][_0xd143('0x50')]:'';})[_0xd143('0x51')]('\x0a');_0x2053bf=_0x3fa550[_0xd143('0x4d')]['map'](function(_0xc93404){return _0xc93404&&_0xc93404[_0xd143('0x4f')][0x0]&&_0xc93404[_0xd143('0x4f')][0x0][_0xd143('0x52')]?_0xc93404['alternatives'][0x0][_0xd143('0x52')]:0x0;})['join']('\x0a');}logger[_0xd143('0x18')]('googleASR\x20transcription',_0x86342a);logger[_0xd143('0x18')]('googleASR\x20confidence',_0x2053bf);return{'transcript':_0x86342a,'confidence':_0x2053bf};})[_0xd143('0x53')](function(_0x5623e2){logger[_0xd143('0x13')]('[%s]\x20%s:%s',_0x5623e2['statusCode'],_0x5623e2[_0xd143('0x54')],_0x5623e2[_0xd143('0x55')]);});};exports[_0xd143('0x56')]=function(_0x24b2b4,_0x349337,_0x396a32,_0x27a324){var _0x3cdc7d=apiai(_0x349337,{'language':_0x27a324||'en'});return _0x3cdc7d[_0xd143('0x57')](_0x396a32,{'sessionId':md5(_0x24b2b4)})[_0xd143('0x3a')](function(_0x1f32dd){logger['info'](JSON[_0xd143('0x41')](_0x1f32dd));return{'source':_0x1f32dd['result'][_0xd143('0x58')],'resolvedQuery':_0x1f32dd[_0xd143('0x59')]['resolvedQuery'],'action':_0x1f32dd[_0xd143('0x59')]['action'],'actionIncomplete':_0x1f32dd[_0xd143('0x59')]['actionIncomplete'],'speech':_0x1f32dd[_0xd143('0x59')][_0xd143('0x5a')][_0xd143('0x5b')],'score':_0x1f32dd[_0xd143('0x59')]['score'],'statusCode':_0x1f32dd['status'][_0xd143('0x5c')],'endConversation':_0x1f32dd[_0xd143('0x59')][_0xd143('0x5d')][_0xd143('0x5e')]||![],'isFallbackIntent':_0x1f32dd['result'][_0xd143('0x5d')]['isFallbackIntent']};});};exports[_0xd143('0x5f')]=function(_0x2ab314,_0x222ab2,_0x275ccb,_0x4f8fa8,_0x44b82d,_0x1ceaea){var _0x50e95a=_0x4f8fa8['replace'](/\\n/g,'\x0a');var _0x14edfe={'credentials':{'private_key':_0x50e95a,'client_email':_0x275ccb}};var _0x41db2f=new dialogflow['SessionsClient'](_0x14edfe);var _0x3d28a5=_0x41db2f['sessionPath'](_0x222ab2,md5(_0x2ab314));var _0x1482dd={'session':_0x3d28a5,'queryInput':{'text':{'text':_0x44b82d,'languageCode':_0x1ceaea}}};return _0x41db2f[_0xd143('0x60')](_0x1482dd)[_0xd143('0x3a')](function(_0xefa7e7){if(_0xefa7e7&&_0xefa7e7[_0xd143('0x46')]){logger[_0xd143('0x18')](_0xd143('0x61'),JSON[_0xd143('0x41')](_0xefa7e7));var _0x44e948=_0xefa7e7[0x0];if(_0x44e948){var _0x49bd76={'action':_0x44e948[_0xd143('0x62')][_0xd143('0x63')],'allRequiredParamsPresent':_0x44e948['queryResult'][_0xd143('0x64')],'endConversation':_0x44e948[_0xd143('0x62')][_0xd143('0x65')]&&_0x44e948[_0xd143('0x62')][_0xd143('0x65')]['fields']?_0x44e948[_0xd143('0x62')]['diagnosticInfo'][_0xd143('0x66')][_0xd143('0x67')][_0xd143('0x68')]:![],'fulfillmentText':_0x44e948['queryResult'][_0xd143('0x69')],'intentName':_0x44e948['queryResult'][_0xd143('0x6a')][_0xd143('0x54')],'intentDisplayName':_0x44e948[_0xd143('0x62')]['intent'][_0xd143('0x6b')],'isFallbackIntent':_0x44e948['queryResult'][_0xd143('0x6a')][_0xd143('0x6c')],'languageCode':_0x44e948[_0xd143('0x62')][_0xd143('0x6d')],'queryText':_0x44e948[_0xd143('0x62')][_0xd143('0x6e')],'responseId':_0x44e948[_0xd143('0x6f')],'score':_0x44e948['queryResult'][_0xd143('0x70')],'speech':_0x44e948[_0xd143('0x62')][_0xd143('0x69')],'providerResponse':JSON[_0xd143('0x41')](_0xefa7e7)};return _0x49bd76;}}});};exports[_0xd143('0x71')]=function(_0x4df534,_0x1bb673,_0x20f9e3,_0x43f203){return tilde[_0xd143('0x4b')](_0x4df534,_0x1bb673,_0x20f9e3,_0x43f203)[_0xd143('0x3a')](function(_0x5e432a){try{fs[_0xd143('0x2b')](_0x4df534);}catch(_0x78ddf5){logger[_0xd143('0x13')](_0x78ddf5);}logger['info'](_0xd143('0x72'),_0x5e432a[_0xd143('0x50')]);logger[_0xd143('0x18')](_0xd143('0x73'),_0x5e432a[_0xd143('0x52')]);return _0x5e432a;});};exports[_0xd143('0x74')]=function(_0x3a942f,_0x310f7e,_0x5a9211,_0x404341,_0x374b86,_0x549394){var _0x5552a5=path[_0xd143('0x25')](__dirname,'tmp',rs[_0xd143('0x27')](0x4)+_0xd143('0x37'));var _0x346630;return aws['polly'](_0x3a942f,_0x310f7e,_0x5a9211,_0x404341,_0x374b86,_0x549394,_0x5552a5)[_0xd143('0x3a')](function(){_0x346630=path['resolve'](__dirname,_0xd143('0x26'),rs[_0xd143('0x27')](0x4)+_0xd143('0x28'));return convertFile(_0x5552a5,_0x346630);})[_0xd143('0x3a')](function(){try{fs['unlink'](_0x5552a5);fs[_0xd143('0x2c')](_0x346630,_0xd143('0x2d'));}catch(_0x915da8){logger[_0xd143('0x13')](_0x915da8);}return _0x346630[_0xd143('0x2e')]('.')[0x0];});};exports[_0xd143('0x75')]=function(_0x1f91b9,_0x4d1886,_0x531bd1,_0x1ee463,_0xc288cb,_0xa22d13){return aws[_0xd143('0x76')](_0x1f91b9,_0x4d1886,_0x531bd1,_0x1ee463,_0xc288cb,_0xa22d13)[_0xd143('0x3a')](function(_0x1a52d8){logger[_0xd143('0x18')](JSON['stringify'](_0x1a52d8));return _0x1a52d8;});};exports['ispeechTTS']=function(_0x5d2992,_0x500c5e,_0x3a236e,_0x1289b0){var _0x3a843c=util['format'](_0xd143('0x77'),ISPEECH_API,_0x5d2992,encodeURIComponent(_0x500c5e),_0x3a236e,_0x1289b0);var _0x12a08c=path[_0xd143('0x25')](__dirname,_0xd143('0x26'),rs['generate'](0x4)+_0xd143('0x37'));var _0x5a0f02;return downloadFile(_0x3a843c,_0x12a08c)[_0xd143('0x3a')](function(){_0x5a0f02=path[_0xd143('0x25')](__dirname,_0xd143('0x26'),rs[_0xd143('0x27')](0x4)+'.wav');return convertFile(_0x12a08c,_0x5a0f02);})[_0xd143('0x3a')](function(){try{fs['unlink'](_0x12a08c);fs[_0xd143('0x2c')](_0x5a0f02,_0xd143('0x2d'));}catch(_0x597371){logger[_0xd143('0x13')](_0x597371);}return _0x5a0f02['split']('.')[0x0];});};exports['ispeechASR']=function(_0x1009a9,_0x4afecd,_0x499778,_0x4a0b1e){var _0x5691a9=util[_0xd143('0x78')](_0xd143('0x79'),ISPEECH_API,_0x4afecd,_0x499778,base64Encode(_0x1009a9),_0x4a0b1e?util[_0xd143('0x78')](_0xd143('0x7a'),encodeURIComponent(_0x4a0b1e)):_0xd143('0x7b'));return uploadFile(_0x5691a9)[_0xd143('0x3a')](function(_0x526eb5){return querystring[_0xd143('0x7c')](_0x526eb5);});};exports[_0xd143('0x7d')]=function(_0x2b4f10,_0x1ec79c){return sestek[_0xd143('0x7e')](_0x2b4f10,_0x1ec79c)[_0xd143('0x3a')](function(_0x508752){logger[_0xd143('0x18')](JSON[_0xd143('0x41')](_0x508752));var _0x2ba0b6={'speech':_0x508752[_0xd143('0x7f')],'action':_0x508752[_0xd143('0x80')]?_0x508752['channelData'][_0xd143('0x81')]:undefined,'actiondata':_0x508752['channelData']?_0x508752['channelData'][_0xd143('0x82')]:undefined};if(_0x508752[_0xd143('0x80')]&&_0x508752[_0xd143('0x80')][_0xd143('0x83')]){return base64Decode(_0x508752[_0xd143('0x80')]['AudioFromTts'][_0xd143('0x84')],path[_0xd143('0x25')](__dirname,_0xd143('0x26'),rs[_0xd143('0x27')](0x4)+_0xd143('0x28')))['then'](function(_0x59590c){_0x2ba0b6[_0xd143('0x85')]=_0x59590c;return _0x2ba0b6;});}return _0x2ba0b6;});};exports[_0xd143('0x86')]=function(){return __dirname;};