edbc99be3d3f86f6243df047178e1cd77829ec0e
[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 _0x1af6=['../../../config/logger','agi','https://api.ispeech.org/api/rest','protocol','host','statusCode','\x20failed,\x20status\x20code\x20=\x20','statusMessage','request\x20to\x20','createWriteStream','info','finish\x20download\x20file','error','unlink','download\x20error','pipe','end','https:','WHAT_EVER','get','transcode','wav','error\x20convert','finish\x20to\x20convert','start','resolve','tmp','generate','.wav','writeFileSync','base64','777','split','readFileSync','toString','googleCloudTTS','https://texttospeech.googleapis.com/v1/','?key=','ssml','input','voice','audioConfig','MP3','text:synthesize','POST','from','audioContent','writeFile','then','chmodSync','googleCloudTTS\x20path','googleTTS','utf8','application/x-www-form-urlencoded','stringify','jQ1olc','null','generic','slice','parse\x20response\x20failed:\x0a','data','lang\x20\x22','\x22\x20might\x20not\x20exist','.mp3','goggleTTS\x20path','asr','map','alternatives','transcript','join','results','confidence','googleASR\x20transcription','googleASR\x20confidence','catch','[%s]\x20%s:%s','name','message','googleDialogflow','textRequest','source','result','resolvedQuery','action','actionIncomplete','fulfillment','speech','score','status','code','metadata','endConversation','isFallbackIntent','googleDialogflowV2','replace','SessionsClient','sessionPath','detectIntent','length','Dialogflow\x20V2\x20response:','queryResult','allRequiredParamsPresent','fields','diagnosticInfo','end_conversation','boolValue','fulfillmentText','intent','displayName','isFallback','languageCode','queryText','responseId','intentDetectionConfidence','Tilde\x20ASR\x20transcription','awsPolly','polly','format','ispeechASR','model=%s','freeform=3','sestekNDA','text','channelData','CustomActionData','AudioFromTts','Data','audiofile','dirName','apiai-promise','dialogflow','http','https','path','querystring','request-promise','randomstring','sox','google-tts-api','url','parse','./google','./sestek','./tilde'];(function(_0x511961,_0x5d56d8){var _0x81b23c=function(_0x72eb01){while(--_0x72eb01){_0x511961['push'](_0x511961['shift']());}};_0x81b23c(++_0x5d56d8);}(_0x1af6,0x1a1));var _0x61af=function(_0xb10baa,_0x464e15){_0xb10baa=_0xb10baa-0x0;var _0x3d5ca9=_0x1af6[_0xb10baa];return _0x3d5ca9;};'use strict';var apiai=require(_0x61af('0x0'));var BPromise=require('bluebird');var dialogflow=require(_0x61af('0x1'));var fs=require('fs');var http=require(_0x61af('0x2'));var https=require(_0x61af('0x3'));var md5=require('md5');var path=require(_0x61af('0x4'));var querystring=require(_0x61af('0x5'));var rp=require(_0x61af('0x6'));var rs=require(_0x61af('0x7'));var sox=require(_0x61af('0x8'));var tts=require(_0x61af('0x9'));var urlParse=require(_0x61af('0xa'))[_0x61af('0xb')];var util=require('util');var aws=require('./aws');var google=require(_0x61af('0xc'));var sestek=require(_0x61af('0xd'));var tilde=require(_0x61af('0xe'));var logger=require(_0x61af('0xf'))(_0x61af('0x10'));var ISPEECH_API=_0x61af('0x11');function downloadFile(_0x6f7b30,_0x40aed8){return new BPromise(function(_0x19cd3c,_0xd82da0){var _0x2e0f0f=urlParse(_0x6f7b30);var _0x22cc07=_0x2e0f0f[_0x61af('0x12')]==='https:'?https:http;var _0x3874f9={'host':_0x2e0f0f[_0x61af('0x13')],'path':_0x2e0f0f[_0x61af('0x4')],'headers':{'user-agent':'WHAT_EVER'}};_0x22cc07['get'](_0x3874f9,function(_0x140cdf){if(_0x140cdf[_0x61af('0x14')]!==0xc8){logger['error']('request\x20to\x20'+_0x6f7b30+_0x61af('0x15')+_0x140cdf[_0x61af('0x14')]+'\x20('+_0x140cdf[_0x61af('0x16')]+')');_0xd82da0(new Error(_0x61af('0x17')+_0x6f7b30+'\x20failed,\x20status\x20code\x20=\x20'+_0x140cdf[_0x61af('0x14')]+'\x20('+_0x140cdf[_0x61af('0x16')]+')'));return;}var _0x2e4b13=fs[_0x61af('0x18')](_0x40aed8);_0x2e4b13['on']('finish',function(){logger[_0x61af('0x19')](_0x61af('0x1a'));_0x2e4b13['close'](_0x19cd3c);});_0x2e4b13['on'](_0x61af('0x1b'),function(_0x17aac8){fs[_0x61af('0x1c')](_0x40aed8);logger['error'](_0x61af('0x1d'),_0x17aac8);_0xd82da0(_0x17aac8);});_0x140cdf[_0x61af('0x1e')](_0x2e4b13);})['on'](_0x61af('0x1b'),function(_0x4fb9d9){logger[_0x61af('0x1b')](_0x4fb9d9);_0xd82da0(_0x4fb9d9);})[_0x61af('0x1f')]();});}function uploadFile(_0x2b51e){return new BPromise(function(_0x4fadfb,_0x457827){var _0x4004ba=urlParse(_0x2b51e);var _0x3865ba=_0x4004ba[_0x61af('0x12')]===_0x61af('0x20')?https:http;var _0x332e30={'host':_0x4004ba['host'],'path':_0x4004ba[_0x61af('0x4')],'headers':{'user-agent':_0x61af('0x21')}};_0x3865ba[_0x61af('0x22')](_0x332e30,function(_0x2c107d){if(_0x2c107d[_0x61af('0x14')]!==0xc8){_0x457827(new Error(_0x61af('0x17')+_0x2b51e+_0x61af('0x15')+_0x2c107d[_0x61af('0x14')]+'\x20('+_0x2c107d[_0x61af('0x16')]+')'));return;}var _0x3a6d23='';_0x2c107d['on']('data',function(_0x53ce34){_0x3a6d23+=_0x53ce34;});_0x2c107d['on'](_0x61af('0x1f'),function(){_0x4fadfb(_0x3a6d23);});})['on'](_0x61af('0x1b'),function(_0x33059){_0x457827(_0x33059);})[_0x61af('0x1f')]();});}function convertFile(_0x4fde12,_0x43899a){return new BPromise(function(_0xc7b242,_0x62ad8f){var _0x2e36c2=sox[_0x61af('0x23')](_0x4fde12,_0x43899a,{'sampleRate':0x1f40,'format':_0x61af('0x24'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x2e36c2['on']('error',function(_0x3e9f9e){logger['error'](_0x61af('0x25'),_0x3e9f9e);_0x62ad8f(_0x3e9f9e);});_0x2e36c2['on']('end',function(){logger[_0x61af('0x19')](_0x61af('0x26'));_0xc7b242();});_0x2e36c2[_0x61af('0x27')]();});}function base64Decode(_0x4ebb40,_0x50922e){var _0x2249d3=path[_0x61af('0x28')](__dirname,_0x61af('0x29'),rs[_0x61af('0x2a')](0x4)+_0x61af('0x2b'));fs[_0x61af('0x2c')](_0x2249d3,_0x4ebb40,_0x61af('0x2d'));return convertFile(_0x2249d3,_0x50922e)['then'](function(){try{fs[_0x61af('0x1c')](_0x2249d3);fs['chmodSync'](_0x50922e,_0x61af('0x2e'));}catch(_0x1ac742){logger[_0x61af('0x1b')](_0x1ac742);}return _0x50922e[_0x61af('0x2f')]('.')[0x0];});}function base64Encode(_0x618c95){var _0x2a2e3c=fs[_0x61af('0x30')](_0x618c95);return new Buffer(_0x2a2e3c)[_0x61af('0x31')]('base64');}exports[_0x61af('0x32')]=function(_0x249015,_0x5fb8be,_0x241133,_0x2e3157,_0x371eab,_0x3f92d3){var _0x50911a,_0x219837;var _0x57fc4c=_0x61af('0x33');var _0x5bb40d=_0x61af('0x34')+_0x249015;var _0x1084f0={};if(_0x5fb8be===_0x61af('0x35')){_0x1084f0[_0x61af('0x36')]={'ssml':_0x241133};}else{_0x1084f0['input']={'text':_0x241133};};_0x1084f0[_0x61af('0x37')]={'languageCode':_0x2e3157,'ssmlGender':_0x371eab};_0x1084f0[_0x61af('0x38')]={'audioEncoding':_0x61af('0x39'),'sampleRateHertz':0x1f40};var _0xa2f976={'url':_0x57fc4c+_0x61af('0x3a')+_0x5bb40d,'method':_0x61af('0x3b'),'json':!![],'body':_0x1084f0};return rp(_0xa2f976)['then'](function(_0x2b60c7){return new BPromise(function(_0x2c0118,_0x2b6e62){_0x50911a=path[_0x61af('0x28')](__dirname,_0x61af('0x29'),rs[_0x61af('0x2a')](0x4)+'.mp3');var _0x4e366d=Buffer[_0x61af('0x3c')](_0x2b60c7[_0x61af('0x3d')],'base64');return fs[_0x61af('0x3e')](_0x50911a,_0x4e366d,function(_0x6c01bc){_0x2b6e62(_0x6c01bc);},function(_0x425996){fs['chmodSync'](_0x50911a,_0x61af('0x2e'));_0x2c0118(_0x425996);});});})[_0x61af('0x3f')](function(_0x2959a8){_0x219837=path['resolve'](__dirname,_0x61af('0x29'),rs[_0x61af('0x2a')](0x4)+_0x61af('0x2b'));return convertFile(_0x50911a,_0x219837);})['then'](function(){try{fs[_0x61af('0x1c')](_0x50911a);fs[_0x61af('0x40')](_0x219837,'777');}catch(_0x3d3300){logger[_0x61af('0x1b')](_0x3d3300);}logger['info'](_0x61af('0x41'),_0x219837[_0x61af('0x2f')]('.')[0x0]);return _0x219837[_0x61af('0x2f')]('.')[0x0];});};exports[_0x61af('0x42')]=function(_0x2de1eb,_0x49285c){var _0x2b223f='https://translate.google.com/_/TranslateWebserverUi/data/batchexecute';var _0x2d91ae,_0x732090;var _0x502034;var _0x5410e1={'encoding':_0x61af('0x43'),'method':_0x61af('0x3b'),'timeout':0x2710,'url':_0x2b223f,'headers':{'Content-Type':_0x61af('0x44')},'body':'f.req='+encodeURIComponent(JSON[_0x61af('0x45')]([[[_0x61af('0x46'),JSON['stringify']([_0x2de1eb,_0x49285c||'en',![],_0x61af('0x47')]),null,_0x61af('0x48')]]]))};return rp(_0x5410e1)[_0x61af('0x3f')](function(_0x3458e8){try{_0x502034=eval(_0x3458e8[_0x61af('0x49')](0x5))[0x0][0x2];}catch(_0x1ef628){throw new Error(_0x61af('0x4a')+_0x3458e8[_0x61af('0x4b')]);}if(!_0x502034){if(_0x2de1eb['length']>0xc8){throw new Error('text\x20length\x20limit\x20reached');}else{throw new Error(_0x61af('0x4c')+_0x49285c+_0x61af('0x4d'));}}try{_0x502034=eval(_0x502034)[0x0];}catch(_0x1ab7f9){throw new Error(_0x61af('0x4a')+res[_0x61af('0x4b')]);}const _0x28b613=_0x502034;_0x2d91ae=path['resolve'](__dirname,_0x61af('0x29'),rs[_0x61af('0x2a')](0x4)+_0x61af('0x4e'));fs[_0x61af('0x2c')](_0x2d91ae,_0x502034,{'encoding':_0x61af('0x2d')});_0x732090=path['resolve'](__dirname,_0x61af('0x29'),rs[_0x61af('0x2a')](0x4)+_0x61af('0x2b'));return convertFile(_0x2d91ae,_0x732090);})[_0x61af('0x3f')](function(){try{fs[_0x61af('0x1c')](_0x2d91ae);fs[_0x61af('0x40')](_0x732090,'777');}catch(_0x13ba12){logger['error'](_0x13ba12);}logger['info'](_0x61af('0x4f'),_0x732090['split']('.')[0x0]);return _0x732090['split']('.')[0x0];});};exports['googleASR']=function(_0x506cfd,_0x1c21d7,_0xfe3169){return google[_0x61af('0x50')](_0x506cfd,_0x1c21d7,_0xfe3169)[_0x61af('0x3f')](function(_0x5497dc){logger[_0x61af('0x19')](_0x5497dc['uri']);return rp(_0x5497dc);})[_0x61af('0x3f')](function(_0x254bbf){var _0x3e801e='';var _0x109816=0x0;try{fs[_0x61af('0x1c')](_0x506cfd);}catch(_0x20ce57){logger[_0x61af('0x1b')](_0x20ce57);}if(_0x254bbf&&_0x254bbf['results']){_0x3e801e=_0x254bbf['results'][_0x61af('0x51')](function(_0x450d7e){return _0x450d7e&&_0x450d7e['alternatives'][0x0]&&_0x450d7e[_0x61af('0x52')][0x0]['transcript']?_0x450d7e[_0x61af('0x52')][0x0][_0x61af('0x53')]:'';})[_0x61af('0x54')]('\x0a');_0x109816=_0x254bbf[_0x61af('0x55')][_0x61af('0x51')](function(_0x253c67){return _0x253c67&&_0x253c67[_0x61af('0x52')][0x0]&&_0x253c67[_0x61af('0x52')][0x0]['confidence']?_0x253c67[_0x61af('0x52')][0x0][_0x61af('0x56')]:0x0;})[_0x61af('0x54')]('\x0a');}logger[_0x61af('0x19')](_0x61af('0x57'),_0x3e801e);logger['info'](_0x61af('0x58'),_0x109816);return{'transcript':_0x3e801e,'confidence':_0x109816};})[_0x61af('0x59')](function(_0x5a2378){logger['error'](_0x61af('0x5a'),_0x5a2378[_0x61af('0x14')],_0x5a2378[_0x61af('0x5b')],_0x5a2378[_0x61af('0x5c')]);});};exports[_0x61af('0x5d')]=function(_0x4116f0,_0x480315,_0x2ea27a,_0x334934){var _0x5d3a00=apiai(_0x480315,{'language':_0x334934||'en'});return _0x5d3a00[_0x61af('0x5e')](_0x2ea27a,{'sessionId':md5(_0x4116f0)})[_0x61af('0x3f')](function(_0x42242a){logger[_0x61af('0x19')](JSON[_0x61af('0x45')](_0x42242a));return{'source':_0x42242a['result'][_0x61af('0x5f')],'resolvedQuery':_0x42242a[_0x61af('0x60')][_0x61af('0x61')],'action':_0x42242a[_0x61af('0x60')][_0x61af('0x62')],'actionIncomplete':_0x42242a[_0x61af('0x60')][_0x61af('0x63')],'speech':_0x42242a['result'][_0x61af('0x64')][_0x61af('0x65')],'score':_0x42242a[_0x61af('0x60')][_0x61af('0x66')],'statusCode':_0x42242a[_0x61af('0x67')][_0x61af('0x68')],'endConversation':_0x42242a[_0x61af('0x60')][_0x61af('0x69')][_0x61af('0x6a')]||![],'isFallbackIntent':_0x42242a[_0x61af('0x60')][_0x61af('0x69')][_0x61af('0x6b')]};});};exports[_0x61af('0x6c')]=function(_0xe749bc,_0x544914,_0xdd41ee,_0x3fecff,_0x377936,_0x592cec){var _0x2fdd92=_0x3fecff[_0x61af('0x6d')](/\\n/g,'\x0a');var _0xc66a93={'credentials':{'private_key':_0x2fdd92,'client_email':_0xdd41ee}};var _0x323d9f=new dialogflow[(_0x61af('0x6e'))](_0xc66a93);var _0x3be2f1=_0x323d9f[_0x61af('0x6f')](_0x544914,md5(_0xe749bc));var _0x39a4a1={'session':_0x3be2f1,'queryInput':{'text':{'text':_0x377936,'languageCode':_0x592cec}}};return _0x323d9f[_0x61af('0x70')](_0x39a4a1)[_0x61af('0x3f')](function(_0x43b96f){if(_0x43b96f&&_0x43b96f[_0x61af('0x71')]){logger[_0x61af('0x19')](_0x61af('0x72'),JSON[_0x61af('0x45')](_0x43b96f));var _0x18422d=_0x43b96f[0x0];if(_0x18422d){var _0x43c285={'action':_0x18422d[_0x61af('0x73')][_0x61af('0x62')],'allRequiredParamsPresent':_0x18422d['queryResult'][_0x61af('0x74')],'endConversation':_0x18422d[_0x61af('0x73')]['diagnosticInfo']&&_0x18422d['queryResult']['diagnosticInfo'][_0x61af('0x75')]?_0x18422d[_0x61af('0x73')][_0x61af('0x76')][_0x61af('0x75')][_0x61af('0x77')][_0x61af('0x78')]:![],'fulfillmentText':_0x18422d[_0x61af('0x73')][_0x61af('0x79')],'intentName':_0x18422d['queryResult'][_0x61af('0x7a')][_0x61af('0x5b')],'intentDisplayName':_0x18422d[_0x61af('0x73')]['intent'][_0x61af('0x7b')],'isFallbackIntent':_0x18422d['queryResult'][_0x61af('0x7a')][_0x61af('0x7c')],'languageCode':_0x18422d[_0x61af('0x73')][_0x61af('0x7d')],'queryText':_0x18422d[_0x61af('0x73')][_0x61af('0x7e')],'responseId':_0x18422d[_0x61af('0x7f')],'score':_0x18422d[_0x61af('0x73')][_0x61af('0x80')],'speech':_0x18422d['queryResult'][_0x61af('0x79')],'providerResponse':JSON[_0x61af('0x45')](_0x43b96f)};return _0x43c285;}}});};exports['tildeASR']=function(_0x5224d4,_0xae0ef1,_0x2f0431,_0x50302d){return tilde['asr'](_0x5224d4,_0xae0ef1,_0x2f0431,_0x50302d)['then'](function(_0x88bc2b){try{fs[_0x61af('0x1c')](_0x5224d4);}catch(_0x438b08){logger[_0x61af('0x1b')](_0x438b08);}logger[_0x61af('0x19')](_0x61af('0x81'),_0x88bc2b[_0x61af('0x53')]);logger[_0x61af('0x19')]('Tilde\x20ASR\x20confidence',_0x88bc2b[_0x61af('0x56')]);return _0x88bc2b;});};exports[_0x61af('0x82')]=function(_0x4de1e1,_0x3084b7,_0x482435,_0x528bc7,_0x2d3712,_0x5bc395){var _0x4600c5=path[_0x61af('0x28')](__dirname,_0x61af('0x29'),rs[_0x61af('0x2a')](0x4)+_0x61af('0x4e'));var _0x5bfeea;return aws[_0x61af('0x83')](_0x4de1e1,_0x3084b7,_0x482435,_0x528bc7,_0x2d3712,_0x5bc395,_0x4600c5)[_0x61af('0x3f')](function(){_0x5bfeea=path['resolve'](__dirname,_0x61af('0x29'),rs['generate'](0x4)+_0x61af('0x2b'));return convertFile(_0x4600c5,_0x5bfeea);})[_0x61af('0x3f')](function(){try{fs[_0x61af('0x1c')](_0x4600c5);fs[_0x61af('0x40')](_0x5bfeea,_0x61af('0x2e'));}catch(_0xdd6db5){logger['error'](_0xdd6db5);}return _0x5bfeea['split']('.')[0x0];});};exports['awsLex']=function(_0x23976c,_0x447582,_0x58314b,_0xdc14b2,_0x203879,_0xd0bdcb){return aws['lex'](_0x23976c,_0x447582,_0x58314b,_0xdc14b2,_0x203879,_0xd0bdcb)[_0x61af('0x3f')](function(_0x87cfec){logger[_0x61af('0x19')](JSON[_0x61af('0x45')](_0x87cfec));return _0x87cfec;});};exports['ispeechTTS']=function(_0xd6ba56,_0x225877,_0x2b0401,_0x91eae){var _0x5ea923=util[_0x61af('0x84')]('%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3',ISPEECH_API,_0xd6ba56,encodeURIComponent(_0x225877),_0x2b0401,_0x91eae);var _0x14c03b=path[_0x61af('0x28')](__dirname,_0x61af('0x29'),rs['generate'](0x4)+_0x61af('0x4e'));var _0x309816;return downloadFile(_0x5ea923,_0x14c03b)[_0x61af('0x3f')](function(){_0x309816=path[_0x61af('0x28')](__dirname,'tmp',rs['generate'](0x4)+_0x61af('0x2b'));return convertFile(_0x14c03b,_0x309816);})[_0x61af('0x3f')](function(){try{fs[_0x61af('0x1c')](_0x14c03b);fs[_0x61af('0x40')](_0x309816,_0x61af('0x2e'));}catch(_0xcd0955){logger[_0x61af('0x1b')](_0xcd0955);}return _0x309816['split']('.')[0x0];});};exports[_0x61af('0x85')]=function(_0x37d86e,_0x38f437,_0x4752b7,_0x5749d3){var _0x89979=util[_0x61af('0x84')]('%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s',ISPEECH_API,_0x38f437,_0x4752b7,base64Encode(_0x37d86e),_0x5749d3?util[_0x61af('0x84')](_0x61af('0x86'),encodeURIComponent(_0x5749d3)):_0x61af('0x87'));return uploadFile(_0x89979)['then'](function(_0x287767){return querystring[_0x61af('0xb')](_0x287767);});};exports[_0x61af('0x88')]=function(_0x50cc08,_0x5ed391){return sestek['nda'](_0x50cc08,_0x5ed391)[_0x61af('0x3f')](function(_0x53ec9f){logger[_0x61af('0x19')](JSON[_0x61af('0x45')](_0x53ec9f));var _0xe91af8={'speech':_0x53ec9f[_0x61af('0x89')],'action':_0x53ec9f[_0x61af('0x8a')]?_0x53ec9f[_0x61af('0x8a')]['CustomAction']:undefined,'actiondata':_0x53ec9f[_0x61af('0x8a')]?_0x53ec9f[_0x61af('0x8a')][_0x61af('0x8b')]:undefined};if(_0x53ec9f[_0x61af('0x8a')]&&_0x53ec9f['channelData'][_0x61af('0x8c')]){return base64Decode(_0x53ec9f['channelData'][_0x61af('0x8c')][_0x61af('0x8d')],path[_0x61af('0x28')](__dirname,_0x61af('0x29'),rs[_0x61af('0x2a')](0x4)+'.wav'))[_0x61af('0x3f')](function(_0x4bfb1c){_0xe91af8[_0x61af('0x8e')]=_0x4bfb1c;return _0xe91af8;});}return _0xe91af8;});};exports[_0x61af('0x8f')]=function(){return __dirname;};