Built motion from commit f7863d46.|2.5.41
[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 _0xd195=['f.req=','stringify','jQ1olc','null','generic','slice','parse\x20response\x20failed:\x0a','length','text\x20length\x20limit\x20reached','\x22\x20might\x20not\x20exist','goggleTTS\x20path','googleASR','asr','uri','results','map','alternatives','transcript','join','confidence','googleASR\x20transcription','googleASR\x20confidence','name','googleDialogflow','textRequest','result','source','resolvedQuery','action','actionIncomplete','fulfillment','speech','score','status','code','metadata','endConversation','isFallbackIntent','googleDialogflowV2','replace','sessionPath','Dialogflow\x20V2\x20response:','queryResult','allRequiredParamsPresent','diagnosticInfo','fields','boolValue','fulfillmentText','intent','displayName','languageCode','queryText','responseId','intentDetectionConfidence','tildeASR','Tilde\x20ASR\x20transcription','awsPolly','polly','lex','ispeechTTS','format','%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','parse','sestekNDA','text','channelData','CustomAction','AudioFromTts','Data','audiofile','dirName','apiai-promise','dialogflow','https','querystring','request-promise','sox','google-tts-api','url','util','./aws','./google','./tilde','../../../config/logger','agi','https://api.ispeech.org/api/rest','protocol','https:','WHAT_EVER','get','statusCode','error','request\x20to\x20','\x20failed,\x20status\x20code\x20=\x20','statusMessage','finish\x20download\x20file','close','download\x20error','pipe','host','path','data','end','transcode','wav','info','finish\x20to\x20convert','start','resolve','tmp','generate','.wav','writeFileSync','unlink','chmodSync','777','split','toString','base64','https://texttospeech.googleapis.com/v1/','?key=','ssml','input','voice','audioConfig','text:synthesize','POST','.mp3','from','audioContent','writeFile','then','googleCloudTTS\x20path','googleTTS','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','utf8','application/x-www-form-urlencoded'];(function(_0x201fec,_0x4c8643){var _0x47d9be=function(_0x55641a){while(--_0x55641a){_0x201fec['push'](_0x201fec['shift']());}};_0x47d9be(++_0x4c8643);}(_0xd195,0x1e6));var _0x5d19=function(_0x220359,_0x3827e5){_0x220359=_0x220359-0x0;var _0x638d32=_0xd195[_0x220359];return _0x638d32;};'use strict';var apiai=require(_0x5d19('0x0'));var BPromise=require('bluebird');var dialogflow=require(_0x5d19('0x1'));var fs=require('fs');var http=require('http');var https=require(_0x5d19('0x2'));var md5=require('md5');var path=require('path');var querystring=require(_0x5d19('0x3'));var rp=require(_0x5d19('0x4'));var rs=require('randomstring');var sox=require(_0x5d19('0x5'));var tts=require(_0x5d19('0x6'));var urlParse=require(_0x5d19('0x7'))['parse'];var util=require(_0x5d19('0x8'));var aws=require(_0x5d19('0x9'));var google=require(_0x5d19('0xa'));var sestek=require('./sestek');var tilde=require(_0x5d19('0xb'));var logger=require(_0x5d19('0xc'))(_0x5d19('0xd'));var ISPEECH_API=_0x5d19('0xe');function downloadFile(_0x2e45eb,_0x3698ef){return new BPromise(function(_0x1ad8f9,_0x43af02){var _0xb1557a=urlParse(_0x2e45eb);var _0x17f20c=_0xb1557a[_0x5d19('0xf')]===_0x5d19('0x10')?https:http;var _0x387458={'host':_0xb1557a['host'],'path':_0xb1557a['path'],'headers':{'user-agent':_0x5d19('0x11')}};_0x17f20c[_0x5d19('0x12')](_0x387458,function(_0x549d72){if(_0x549d72[_0x5d19('0x13')]!==0xc8){logger[_0x5d19('0x14')](_0x5d19('0x15')+_0x2e45eb+_0x5d19('0x16')+_0x549d72[_0x5d19('0x13')]+'\x20('+_0x549d72[_0x5d19('0x17')]+')');_0x43af02(new Error(_0x5d19('0x15')+_0x2e45eb+_0x5d19('0x16')+_0x549d72[_0x5d19('0x13')]+'\x20('+_0x549d72[_0x5d19('0x17')]+')'));return;}var _0x53b69f=fs['createWriteStream'](_0x3698ef);_0x53b69f['on']('finish',function(){logger['info'](_0x5d19('0x18'));_0x53b69f[_0x5d19('0x19')](_0x1ad8f9);});_0x53b69f['on'](_0x5d19('0x14'),function(_0x5676d5){fs['unlink'](_0x3698ef);logger[_0x5d19('0x14')](_0x5d19('0x1a'),_0x5676d5);_0x43af02(_0x5676d5);});_0x549d72[_0x5d19('0x1b')](_0x53b69f);})['on']('error',function(_0x3d03bf){logger[_0x5d19('0x14')](_0x3d03bf);_0x43af02(_0x3d03bf);})['end']();});}function uploadFile(_0x6c458c){return new BPromise(function(_0x8a2999,_0x4a558e){var _0x10cfc4=urlParse(_0x6c458c);var _0x45cb1b=_0x10cfc4['protocol']===_0x5d19('0x10')?https:http;var _0x2fc3c0={'host':_0x10cfc4[_0x5d19('0x1c')],'path':_0x10cfc4[_0x5d19('0x1d')],'headers':{'user-agent':_0x5d19('0x11')}};_0x45cb1b[_0x5d19('0x12')](_0x2fc3c0,function(_0x30ebb3){if(_0x30ebb3[_0x5d19('0x13')]!==0xc8){_0x4a558e(new Error(_0x5d19('0x15')+_0x6c458c+_0x5d19('0x16')+_0x30ebb3[_0x5d19('0x13')]+'\x20('+_0x30ebb3[_0x5d19('0x17')]+')'));return;}var _0x346df4='';_0x30ebb3['on'](_0x5d19('0x1e'),function(_0x3a2c1c){_0x346df4+=_0x3a2c1c;});_0x30ebb3['on'](_0x5d19('0x1f'),function(){_0x8a2999(_0x346df4);});})['on']('error',function(_0x5787d2){_0x4a558e(_0x5787d2);})[_0x5d19('0x1f')]();});}function convertFile(_0xe3a638,_0x4d442b){return new BPromise(function(_0x49235b,_0x2b6564){var _0x6099fe=sox[_0x5d19('0x20')](_0xe3a638,_0x4d442b,{'sampleRate':0x1f40,'format':_0x5d19('0x21'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x6099fe['on'](_0x5d19('0x14'),function(_0x378acd){logger[_0x5d19('0x14')]('error\x20convert',_0x378acd);_0x2b6564(_0x378acd);});_0x6099fe['on'](_0x5d19('0x1f'),function(){logger[_0x5d19('0x22')](_0x5d19('0x23'));_0x49235b();});_0x6099fe[_0x5d19('0x24')]();});}function base64Decode(_0x5402cd,_0x3c6e9c){var _0x369a30=path[_0x5d19('0x25')](__dirname,_0x5d19('0x26'),rs[_0x5d19('0x27')](0x4)+_0x5d19('0x28'));fs[_0x5d19('0x29')](_0x369a30,_0x5402cd,'base64');return convertFile(_0x369a30,_0x3c6e9c)['then'](function(){try{fs[_0x5d19('0x2a')](_0x369a30);fs[_0x5d19('0x2b')](_0x3c6e9c,_0x5d19('0x2c'));}catch(_0x2293b6){logger[_0x5d19('0x14')](_0x2293b6);}return _0x3c6e9c[_0x5d19('0x2d')]('.')[0x0];});}function base64Encode(_0xcbdda1){var _0x26d275=fs['readFileSync'](_0xcbdda1);return new Buffer(_0x26d275)[_0x5d19('0x2e')](_0x5d19('0x2f'));}exports['googleCloudTTS']=function(_0x1d4aea,_0xf155e2,_0x4e53b3,_0x813d2e,_0x29435d,_0x2e08ea){var _0x50c5c3,_0xf62397;var _0x1e519d=_0x5d19('0x30');var _0x35449d=_0x5d19('0x31')+_0x1d4aea;var _0x211340={};if(_0xf155e2===_0x5d19('0x32')){_0x211340[_0x5d19('0x33')]={'ssml':_0x4e53b3};}else{_0x211340[_0x5d19('0x33')]={'text':_0x4e53b3};};_0x211340[_0x5d19('0x34')]={'languageCode':_0x813d2e,'ssmlGender':_0x29435d};_0x211340[_0x5d19('0x35')]={'audioEncoding':'MP3','sampleRateHertz':0x1f40};var _0x32d2e6={'url':_0x1e519d+_0x5d19('0x36')+_0x35449d,'method':_0x5d19('0x37'),'json':!![],'body':_0x211340};return rp(_0x32d2e6)['then'](function(_0x45aad7){return new BPromise(function(_0x14e029,_0x3f663f){_0x50c5c3=path[_0x5d19('0x25')](__dirname,'tmp',rs['generate'](0x4)+_0x5d19('0x38'));var _0x209cdc=Buffer[_0x5d19('0x39')](_0x45aad7[_0x5d19('0x3a')],_0x5d19('0x2f'));return fs[_0x5d19('0x3b')](_0x50c5c3,_0x209cdc,function(_0x8c5eff){_0x3f663f(_0x8c5eff);},function(_0x2c5d6f){fs[_0x5d19('0x2b')](_0x50c5c3,'777');_0x14e029(_0x2c5d6f);});});})[_0x5d19('0x3c')](function(_0x344ec3){_0xf62397=path[_0x5d19('0x25')](__dirname,_0x5d19('0x26'),rs[_0x5d19('0x27')](0x4)+_0x5d19('0x28'));return convertFile(_0x50c5c3,_0xf62397);})[_0x5d19('0x3c')](function(){try{fs[_0x5d19('0x2a')](_0x50c5c3);fs[_0x5d19('0x2b')](_0xf62397,'777');}catch(_0x64600a){logger['error'](_0x64600a);}logger[_0x5d19('0x22')](_0x5d19('0x3d'),_0xf62397[_0x5d19('0x2d')]('.')[0x0]);return _0xf62397[_0x5d19('0x2d')]('.')[0x0];});};exports[_0x5d19('0x3e')]=function(_0x2757a5,_0x5be277){var _0x1d124c=_0x5d19('0x3f');var _0x454874,_0x3413b9;var _0x31bf13;var _0x21c7de={'encoding':_0x5d19('0x40'),'method':_0x5d19('0x37'),'timeout':0x2710,'url':_0x1d124c,'headers':{'Content-Type':_0x5d19('0x41')},'body':_0x5d19('0x42')+encodeURIComponent(JSON[_0x5d19('0x43')]([[[_0x5d19('0x44'),JSON[_0x5d19('0x43')]([_0x2757a5,_0x5be277||'en',![],_0x5d19('0x45')]),null,_0x5d19('0x46')]]]))};return rp(_0x21c7de)['then'](function(_0x271255){try{_0x31bf13=eval(_0x271255[_0x5d19('0x47')](0x5))[0x0][0x2];}catch(_0x2c0780){throw new Error(_0x5d19('0x48')+_0x271255[_0x5d19('0x1e')]);}if(!_0x31bf13){if(_0x2757a5[_0x5d19('0x49')]>0xc8){throw new Error(_0x5d19('0x4a'));}else{throw new Error('lang\x20\x22'+_0x5be277+_0x5d19('0x4b'));}}try{_0x31bf13=eval(_0x31bf13)[0x0];}catch(_0x3811eb){throw new Error(_0x5d19('0x48')+res['data']);}const _0x2924c2=_0x31bf13;_0x454874=path['resolve'](__dirname,_0x5d19('0x26'),rs['generate'](0x4)+'.mp3');fs[_0x5d19('0x29')](_0x454874,_0x31bf13,{'encoding':_0x5d19('0x2f')});_0x3413b9=path[_0x5d19('0x25')](__dirname,_0x5d19('0x26'),rs[_0x5d19('0x27')](0x4)+_0x5d19('0x28'));return convertFile(_0x454874,_0x3413b9);})[_0x5d19('0x3c')](function(){try{fs[_0x5d19('0x2a')](_0x454874);fs['chmodSync'](_0x3413b9,_0x5d19('0x2c'));}catch(_0x367932){logger[_0x5d19('0x14')](_0x367932);}logger[_0x5d19('0x22')](_0x5d19('0x4c'),_0x3413b9['split']('.')[0x0]);return _0x3413b9[_0x5d19('0x2d')]('.')[0x0];});};exports[_0x5d19('0x4d')]=function(_0x147c36,_0x1340c0,_0x361053){return google[_0x5d19('0x4e')](_0x147c36,_0x1340c0,_0x361053)[_0x5d19('0x3c')](function(_0x3f6b01){logger[_0x5d19('0x22')](_0x3f6b01[_0x5d19('0x4f')]);return rp(_0x3f6b01);})[_0x5d19('0x3c')](function(_0x54e891){var _0x28cb6c='';var _0x38b9cb=0x0;try{fs[_0x5d19('0x2a')](_0x147c36);}catch(_0x4a0f6f){logger['error'](_0x4a0f6f);}if(_0x54e891&&_0x54e891[_0x5d19('0x50')]){_0x28cb6c=_0x54e891[_0x5d19('0x50')][_0x5d19('0x51')](function(_0x4428ae){return _0x4428ae&&_0x4428ae[_0x5d19('0x52')][0x0]&&_0x4428ae[_0x5d19('0x52')][0x0][_0x5d19('0x53')]?_0x4428ae[_0x5d19('0x52')][0x0]['transcript']:'';})[_0x5d19('0x54')]('\x0a');_0x38b9cb=_0x54e891[_0x5d19('0x50')][_0x5d19('0x51')](function(_0x51fd97){return _0x51fd97&&_0x51fd97['alternatives'][0x0]&&_0x51fd97[_0x5d19('0x52')][0x0]['confidence']?_0x51fd97['alternatives'][0x0][_0x5d19('0x55')]:0x0;})[_0x5d19('0x54')]('\x0a');}logger[_0x5d19('0x22')](_0x5d19('0x56'),_0x28cb6c);logger[_0x5d19('0x22')](_0x5d19('0x57'),_0x38b9cb);return{'transcript':_0x28cb6c,'confidence':_0x38b9cb};})['catch'](function(_0xa16bed){logger[_0x5d19('0x14')]('[%s]\x20%s:%s',_0xa16bed['statusCode'],_0xa16bed[_0x5d19('0x58')],_0xa16bed['message']);});};exports[_0x5d19('0x59')]=function(_0xaff6c2,_0x7b95ba,_0x4f943f,_0x573167){var _0x4ef709=apiai(_0x7b95ba,{'language':_0x573167||'en'});return _0x4ef709[_0x5d19('0x5a')](_0x4f943f,{'sessionId':md5(_0xaff6c2)})[_0x5d19('0x3c')](function(_0x389df6){logger[_0x5d19('0x22')](JSON['stringify'](_0x389df6));return{'source':_0x389df6[_0x5d19('0x5b')][_0x5d19('0x5c')],'resolvedQuery':_0x389df6[_0x5d19('0x5b')][_0x5d19('0x5d')],'action':_0x389df6[_0x5d19('0x5b')][_0x5d19('0x5e')],'actionIncomplete':_0x389df6['result'][_0x5d19('0x5f')],'speech':_0x389df6[_0x5d19('0x5b')][_0x5d19('0x60')][_0x5d19('0x61')],'score':_0x389df6[_0x5d19('0x5b')][_0x5d19('0x62')],'statusCode':_0x389df6[_0x5d19('0x63')][_0x5d19('0x64')],'endConversation':_0x389df6[_0x5d19('0x5b')][_0x5d19('0x65')][_0x5d19('0x66')]||![],'isFallbackIntent':_0x389df6[_0x5d19('0x5b')][_0x5d19('0x65')][_0x5d19('0x67')]};});};exports[_0x5d19('0x68')]=function(_0x262e1b,_0x360f40,_0x560ac2,_0x549a71,_0x4e13f,_0x5c191a){var _0x49ec0e=_0x549a71[_0x5d19('0x69')](/\\n/g,'\x0a');var _0x27af5a={'credentials':{'private_key':_0x49ec0e,'client_email':_0x560ac2}};var _0x28e340=new dialogflow['SessionsClient'](_0x27af5a);var _0x2b854b=_0x28e340[_0x5d19('0x6a')](_0x360f40,md5(_0x262e1b));var _0x435175={'session':_0x2b854b,'queryInput':{'text':{'text':_0x4e13f,'languageCode':_0x5c191a}}};return _0x28e340['detectIntent'](_0x435175)['then'](function(_0x58eaeb){if(_0x58eaeb&&_0x58eaeb[_0x5d19('0x49')]){logger[_0x5d19('0x22')](_0x5d19('0x6b'),JSON['stringify'](_0x58eaeb));var _0x91745e=_0x58eaeb[0x0];if(_0x91745e){var _0x379c9c={'action':_0x91745e[_0x5d19('0x6c')][_0x5d19('0x5e')],'allRequiredParamsPresent':_0x91745e[_0x5d19('0x6c')][_0x5d19('0x6d')],'endConversation':_0x91745e[_0x5d19('0x6c')][_0x5d19('0x6e')]&&_0x91745e[_0x5d19('0x6c')][_0x5d19('0x6e')][_0x5d19('0x6f')]?_0x91745e['queryResult']['diagnosticInfo'][_0x5d19('0x6f')]['end_conversation'][_0x5d19('0x70')]:![],'fulfillmentText':_0x91745e['queryResult'][_0x5d19('0x71')],'intentName':_0x91745e[_0x5d19('0x6c')][_0x5d19('0x72')][_0x5d19('0x58')],'intentDisplayName':_0x91745e[_0x5d19('0x6c')][_0x5d19('0x72')][_0x5d19('0x73')],'isFallbackIntent':_0x91745e['queryResult'][_0x5d19('0x72')]['isFallback'],'languageCode':_0x91745e[_0x5d19('0x6c')][_0x5d19('0x74')],'queryText':_0x91745e[_0x5d19('0x6c')][_0x5d19('0x75')],'responseId':_0x91745e[_0x5d19('0x76')],'score':_0x91745e['queryResult'][_0x5d19('0x77')],'speech':_0x91745e[_0x5d19('0x6c')][_0x5d19('0x71')],'providerResponse':JSON['stringify'](_0x58eaeb)};return _0x379c9c;}}});};exports[_0x5d19('0x78')]=function(_0x3b580a,_0xc67aca,_0x1b7f9f,_0x46a024){return tilde['asr'](_0x3b580a,_0xc67aca,_0x1b7f9f,_0x46a024)[_0x5d19('0x3c')](function(_0x40fc74){try{fs[_0x5d19('0x2a')](_0x3b580a);}catch(_0x26505b){logger[_0x5d19('0x14')](_0x26505b);}logger['info'](_0x5d19('0x79'),_0x40fc74['transcript']);logger[_0x5d19('0x22')]('Tilde\x20ASR\x20confidence',_0x40fc74['confidence']);return _0x40fc74;});};exports[_0x5d19('0x7a')]=function(_0x6a3850,_0x222867,_0x400371,_0x4718af,_0x9e6492,_0x363388){var _0x2255e2=path[_0x5d19('0x25')](__dirname,'tmp',rs[_0x5d19('0x27')](0x4)+_0x5d19('0x38'));var _0x93c536;return aws[_0x5d19('0x7b')](_0x6a3850,_0x222867,_0x400371,_0x4718af,_0x9e6492,_0x363388,_0x2255e2)[_0x5d19('0x3c')](function(){_0x93c536=path[_0x5d19('0x25')](__dirname,_0x5d19('0x26'),rs[_0x5d19('0x27')](0x4)+_0x5d19('0x28'));return convertFile(_0x2255e2,_0x93c536);})[_0x5d19('0x3c')](function(){try{fs[_0x5d19('0x2a')](_0x2255e2);fs[_0x5d19('0x2b')](_0x93c536,_0x5d19('0x2c'));}catch(_0x167e72){logger['error'](_0x167e72);}return _0x93c536[_0x5d19('0x2d')]('.')[0x0];});};exports['awsLex']=function(_0x4ce613,_0x31f493,_0x38b5ef,_0x3e920b,_0x3021b2,_0x1fb8c3){return aws[_0x5d19('0x7c')](_0x4ce613,_0x31f493,_0x38b5ef,_0x3e920b,_0x3021b2,_0x1fb8c3)[_0x5d19('0x3c')](function(_0x167f19){logger[_0x5d19('0x22')](JSON[_0x5d19('0x43')](_0x167f19));return _0x167f19;});};exports[_0x5d19('0x7d')]=function(_0x48a320,_0xc14cb8,_0x41ece1,_0x11531a){var _0x27de83=util[_0x5d19('0x7e')](_0x5d19('0x7f'),ISPEECH_API,_0x48a320,encodeURIComponent(_0xc14cb8),_0x41ece1,_0x11531a);var _0x3e2571=path[_0x5d19('0x25')](__dirname,_0x5d19('0x26'),rs[_0x5d19('0x27')](0x4)+'.mp3');var _0x4b204c;return downloadFile(_0x27de83,_0x3e2571)[_0x5d19('0x3c')](function(){_0x4b204c=path['resolve'](__dirname,_0x5d19('0x26'),rs[_0x5d19('0x27')](0x4)+_0x5d19('0x28'));return convertFile(_0x3e2571,_0x4b204c);})[_0x5d19('0x3c')](function(){try{fs[_0x5d19('0x2a')](_0x3e2571);fs['chmodSync'](_0x4b204c,'777');}catch(_0x1642e8){logger[_0x5d19('0x14')](_0x1642e8);}return _0x4b204c[_0x5d19('0x2d')]('.')[0x0];});};exports['ispeechASR']=function(_0x5921a5,_0x495c74,_0x2aee9c,_0x25c8c2){var _0x3dd8c5=util[_0x5d19('0x7e')](_0x5d19('0x80'),ISPEECH_API,_0x495c74,_0x2aee9c,base64Encode(_0x5921a5),_0x25c8c2?util['format']('model=%s',encodeURIComponent(_0x25c8c2)):'freeform=3');return uploadFile(_0x3dd8c5)[_0x5d19('0x3c')](function(_0x3e00fd){return querystring[_0x5d19('0x81')](_0x3e00fd);});};exports[_0x5d19('0x82')]=function(_0x41e315,_0x4c8997){return sestek['nda'](_0x41e315,_0x4c8997)[_0x5d19('0x3c')](function(_0x213ab7){logger[_0x5d19('0x22')](JSON[_0x5d19('0x43')](_0x213ab7));var _0x174736={'speech':_0x213ab7[_0x5d19('0x83')],'action':_0x213ab7[_0x5d19('0x84')]?_0x213ab7[_0x5d19('0x84')][_0x5d19('0x85')]:undefined,'actiondata':_0x213ab7[_0x5d19('0x84')]?_0x213ab7['channelData']['CustomActionData']:undefined};if(_0x213ab7[_0x5d19('0x84')]&&_0x213ab7[_0x5d19('0x84')][_0x5d19('0x86')]){return base64Decode(_0x213ab7['channelData'][_0x5d19('0x86')][_0x5d19('0x87')],path[_0x5d19('0x25')](__dirname,_0x5d19('0x26'),rs[_0x5d19('0x27')](0x4)+'.wav'))[_0x5d19('0x3c')](function(_0x2806e4){_0x174736[_0x5d19('0x88')]=_0x2806e4;return _0x174736;});}return _0x174736;});};exports[_0x5d19('0x89')]=function(){return __dirname;};