Built motion from commit f541bb3b.|2.6.14
[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 _0x01e0=['googleTTS','utf8','application/x-www-form-urlencoded','f.req=','stringify','jQ1olc','null','slice','parse\x20response\x20failed:\x0a','text\x20length\x20limit\x20reached','lang\x20\x22','\x22\x20might\x20not\x20exist','writeFileSync','goggleTTS\x20path','googleASR','uri','results','map','transcript','join','alternatives','confidence','googleASR\x20confidence','[%s]\x20%s:%s','name','message','googleDialogflow','textRequest','result','source','actionIncomplete','speech','metadata','endConversation','isFallbackIntent','googleDialogflowV2','replace','SessionsClient','sessionPath','detectIntent','length','Dialogflow\x20V2\x20response:','queryResult','action','allRequiredParamsPresent','diagnosticInfo','fields','boolValue','intent','displayName','isFallback','queryText','fulfillmentText','tildeASR','asr','Tilde\x20ASR\x20transcription','Tilde\x20ASR\x20confidence','awsPolly','polly','awsLex','format','model=%s','freeform=3','parse','sestekNDA','nda','CustomAction','channelData','AudioFromTts','Data','audiofile','apiai-promise','bluebird','dialogflow','path','querystring','request-promise','sox','google-tts-api','url','util','./aws','./google','./sestek','./tilde','../../../config/logger','agi','protocol','WHAT_EVER','get','statusCode','request\x20to\x20','statusMessage','\x20failed,\x20status\x20code\x20=\x20','createWriteStream','finish','info','close','error','unlink','download\x20error','end','https:','host','data','transcode','finish\x20to\x20convert','start','tmp','.wav','base64','then','777','readFileSync','toString','googleCloudTTS','https://texttospeech.googleapis.com/v1/','?key=','input','audioConfig','MP3','text:synthesize','POST','resolve','generate','.mp3','from','chmodSync','googleCloudTTS\x20path','split'];(function(_0x3f5f9a,_0x567b5c){var _0x34f86b=function(_0x33cff0){while(--_0x33cff0){_0x3f5f9a['push'](_0x3f5f9a['shift']());}};_0x34f86b(++_0x567b5c);}(_0x01e0,0x1cd));var _0x001e=function(_0x230949,_0x790da6){_0x230949=_0x230949-0x0;var _0x54a3dd=_0x01e0[_0x230949];return _0x54a3dd;};'use strict';var apiai=require(_0x001e('0x0'));var BPromise=require(_0x001e('0x1'));var dialogflow=require(_0x001e('0x2'));var fs=require('fs');var http=require('http');var https=require('https');var md5=require('md5');var path=require(_0x001e('0x3'));var querystring=require(_0x001e('0x4'));var rp=require(_0x001e('0x5'));var rs=require('randomstring');var sox=require(_0x001e('0x6'));var tts=require(_0x001e('0x7'));var urlParse=require(_0x001e('0x8'))['parse'];var util=require(_0x001e('0x9'));var aws=require(_0x001e('0xa'));var google=require(_0x001e('0xb'));var sestek=require(_0x001e('0xc'));var tilde=require(_0x001e('0xd'));var logger=require(_0x001e('0xe'))(_0x001e('0xf'));var ISPEECH_API='https://api.ispeech.org/api/rest';function downloadFile(_0x33073b,_0x454ec0){return new BPromise(function(_0x53bcd7,_0x16288e){var _0x430825=urlParse(_0x33073b);var _0x329aca=_0x430825[_0x001e('0x10')]==='https:'?https:http;var _0x1b5a75={'host':_0x430825['host'],'path':_0x430825[_0x001e('0x3')],'headers':{'user-agent':_0x001e('0x11')}};_0x329aca[_0x001e('0x12')](_0x1b5a75,function(_0x14cde2){if(_0x14cde2[_0x001e('0x13')]!==0xc8){logger['error'](_0x001e('0x14')+_0x33073b+'\x20failed,\x20status\x20code\x20=\x20'+_0x14cde2[_0x001e('0x13')]+'\x20('+_0x14cde2[_0x001e('0x15')]+')');_0x16288e(new Error(_0x001e('0x14')+_0x33073b+_0x001e('0x16')+_0x14cde2[_0x001e('0x13')]+'\x20('+_0x14cde2['statusMessage']+')'));return;}var _0x39a877=fs[_0x001e('0x17')](_0x454ec0);_0x39a877['on'](_0x001e('0x18'),function(){logger[_0x001e('0x19')]('finish\x20download\x20file');_0x39a877[_0x001e('0x1a')](_0x53bcd7);});_0x39a877['on'](_0x001e('0x1b'),function(_0x47d22e){fs[_0x001e('0x1c')](_0x454ec0);logger[_0x001e('0x1b')](_0x001e('0x1d'),_0x47d22e);_0x16288e(_0x47d22e);});_0x14cde2['pipe'](_0x39a877);})['on']('error',function(_0x486f2a){logger[_0x001e('0x1b')](_0x486f2a);_0x16288e(_0x486f2a);})[_0x001e('0x1e')]();});}function uploadFile(_0x11a0a2){return new BPromise(function(_0x2ae67c,_0x3ef911){var _0x548706=urlParse(_0x11a0a2);var _0x347e7c=_0x548706[_0x001e('0x10')]===_0x001e('0x1f')?https:http;var _0x1f7ced={'host':_0x548706[_0x001e('0x20')],'path':_0x548706[_0x001e('0x3')],'headers':{'user-agent':_0x001e('0x11')}};_0x347e7c[_0x001e('0x12')](_0x1f7ced,function(_0x59e0ae){if(_0x59e0ae[_0x001e('0x13')]!==0xc8){_0x3ef911(new Error(_0x001e('0x14')+_0x11a0a2+'\x20failed,\x20status\x20code\x20=\x20'+_0x59e0ae[_0x001e('0x13')]+'\x20('+_0x59e0ae[_0x001e('0x15')]+')'));return;}var _0x4f9c5a='';_0x59e0ae['on'](_0x001e('0x21'),function(_0x5d9899){_0x4f9c5a+=_0x5d9899;});_0x59e0ae['on'](_0x001e('0x1e'),function(){_0x2ae67c(_0x4f9c5a);});})['on']('error',function(_0x3c6412){_0x3ef911(_0x3c6412);})[_0x001e('0x1e')]();});}function convertFile(_0x572daf,_0x1117a4){return new BPromise(function(_0x306733,_0x771a6e){var _0x36e8e6=sox[_0x001e('0x22')](_0x572daf,_0x1117a4,{'sampleRate':0x1f40,'format':'wav','channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x36e8e6['on']('error',function(_0x4b8729){logger[_0x001e('0x1b')]('error\x20convert',_0x4b8729);_0x771a6e(_0x4b8729);});_0x36e8e6['on'](_0x001e('0x1e'),function(){logger[_0x001e('0x19')](_0x001e('0x23'));_0x306733();});_0x36e8e6[_0x001e('0x24')]();});}function base64Decode(_0x351fe1,_0x46e94c){var _0x242921=path['resolve'](__dirname,_0x001e('0x25'),rs['generate'](0x4)+_0x001e('0x26'));fs['writeFileSync'](_0x242921,_0x351fe1,_0x001e('0x27'));return convertFile(_0x242921,_0x46e94c)[_0x001e('0x28')](function(){try{fs[_0x001e('0x1c')](_0x242921);fs['chmodSync'](_0x46e94c,_0x001e('0x29'));}catch(_0x4f2398){logger[_0x001e('0x1b')](_0x4f2398);}return _0x46e94c['split']('.')[0x0];});}function base64Encode(_0x351235){var _0x1ee0ba=fs[_0x001e('0x2a')](_0x351235);return new Buffer(_0x1ee0ba)[_0x001e('0x2b')](_0x001e('0x27'));}exports[_0x001e('0x2c')]=function(_0x43344a,_0x377811,_0x294038,_0x25565c,_0x28bd16,_0x25cf49){var _0x3d53aa,_0x52a851;var _0x336b76=_0x001e('0x2d');var _0x3aaa01=_0x001e('0x2e')+_0x43344a;var _0x16d5a2={};if(_0x377811==='ssml'){_0x16d5a2['input']={'ssml':_0x294038};}else{_0x16d5a2[_0x001e('0x2f')]={'text':_0x294038};};_0x16d5a2['voice']={'languageCode':_0x25565c,'ssmlGender':_0x28bd16};_0x16d5a2[_0x001e('0x30')]={'audioEncoding':_0x001e('0x31'),'sampleRateHertz':0x1f40};var _0x404e2e={'url':_0x336b76+_0x001e('0x32')+_0x3aaa01,'method':_0x001e('0x33'),'json':!![],'body':_0x16d5a2};return rp(_0x404e2e)[_0x001e('0x28')](function(_0x549110){return new BPromise(function(_0x56a91f,_0x424a2f){_0x3d53aa=path[_0x001e('0x34')](__dirname,_0x001e('0x25'),rs[_0x001e('0x35')](0x4)+_0x001e('0x36'));var _0x2a64df=Buffer[_0x001e('0x37')](_0x549110['audioContent'],_0x001e('0x27'));return fs['writeFile'](_0x3d53aa,_0x2a64df,function(_0x5119dd){_0x424a2f(_0x5119dd);},function(_0x4f9b98){fs['chmodSync'](_0x3d53aa,_0x001e('0x29'));_0x56a91f(_0x4f9b98);});});})[_0x001e('0x28')](function(_0x3d79f8){_0x52a851=path[_0x001e('0x34')](__dirname,'tmp',rs[_0x001e('0x35')](0x4)+_0x001e('0x26'));return convertFile(_0x3d53aa,_0x52a851);})[_0x001e('0x28')](function(){try{fs[_0x001e('0x1c')](_0x3d53aa);fs[_0x001e('0x38')](_0x52a851,_0x001e('0x29'));}catch(_0x52bb07){logger[_0x001e('0x1b')](_0x52bb07);}logger[_0x001e('0x19')](_0x001e('0x39'),_0x52a851[_0x001e('0x3a')]('.')[0x0]);return _0x52a851['split']('.')[0x0];});};exports[_0x001e('0x3b')]=function(_0x187de9,_0x250be5){var _0x56e01b='https://translate.google.com/_/TranslateWebserverUi/data/batchexecute';var _0x39e83f,_0x4ed9b7;var _0x177ad8;var _0xd38cd5={'encoding':_0x001e('0x3c'),'method':_0x001e('0x33'),'timeout':0x2710,'url':_0x56e01b,'headers':{'Content-Type':_0x001e('0x3d')},'body':_0x001e('0x3e')+encodeURIComponent(JSON[_0x001e('0x3f')]([[[_0x001e('0x40'),JSON['stringify']([_0x187de9,_0x250be5||'en',![],_0x001e('0x41')]),null,'generic']]]))};return rp(_0xd38cd5)[_0x001e('0x28')](function(_0x291dc8){try{_0x177ad8=eval(_0x291dc8[_0x001e('0x42')](0x5))[0x0][0x2];}catch(_0x1f3aad){throw new Error(_0x001e('0x43')+_0x291dc8['data']);}if(!_0x177ad8){if(_0x187de9['length']>0xc8){throw new Error(_0x001e('0x44'));}else{throw new Error(_0x001e('0x45')+_0x250be5+_0x001e('0x46'));}}try{_0x177ad8=eval(_0x177ad8)[0x0];}catch(_0x42d955){throw new Error('parse\x20response\x20failed:\x0a'+res[_0x001e('0x21')]);}const _0x1b1710=_0x177ad8;_0x39e83f=path[_0x001e('0x34')](__dirname,_0x001e('0x25'),rs[_0x001e('0x35')](0x4)+_0x001e('0x36'));fs[_0x001e('0x47')](_0x39e83f,_0x177ad8,{'encoding':_0x001e('0x27')});_0x4ed9b7=path[_0x001e('0x34')](__dirname,_0x001e('0x25'),rs[_0x001e('0x35')](0x4)+'.wav');return convertFile(_0x39e83f,_0x4ed9b7);})['then'](function(){try{fs[_0x001e('0x1c')](_0x39e83f);fs[_0x001e('0x38')](_0x4ed9b7,'777');}catch(_0x5267a9){logger[_0x001e('0x1b')](_0x5267a9);}logger[_0x001e('0x19')](_0x001e('0x48'),_0x4ed9b7[_0x001e('0x3a')]('.')[0x0]);return _0x4ed9b7[_0x001e('0x3a')]('.')[0x0];});};exports[_0x001e('0x49')]=function(_0x4ebc84,_0x1cca1c,_0x259d65){return google['asr'](_0x4ebc84,_0x1cca1c,_0x259d65)[_0x001e('0x28')](function(_0x11e105){logger[_0x001e('0x19')](_0x11e105[_0x001e('0x4a')]);return rp(_0x11e105);})[_0x001e('0x28')](function(_0x1d3b8a){var _0x80af31='';var _0x228a02=0x0;try{fs[_0x001e('0x1c')](_0x4ebc84);}catch(_0x242798){logger['error'](_0x242798);}if(_0x1d3b8a&&_0x1d3b8a[_0x001e('0x4b')]){_0x80af31=_0x1d3b8a[_0x001e('0x4b')][_0x001e('0x4c')](function(_0x29f777){return _0x29f777&&_0x29f777['alternatives'][0x0]&&_0x29f777['alternatives'][0x0][_0x001e('0x4d')]?_0x29f777['alternatives'][0x0][_0x001e('0x4d')]:'';})[_0x001e('0x4e')]('\x0a');_0x228a02=_0x1d3b8a[_0x001e('0x4b')][_0x001e('0x4c')](function(_0x3aaaa8){return _0x3aaaa8&&_0x3aaaa8[_0x001e('0x4f')][0x0]&&_0x3aaaa8['alternatives'][0x0][_0x001e('0x50')]?_0x3aaaa8[_0x001e('0x4f')][0x0][_0x001e('0x50')]:0x0;})[_0x001e('0x4e')]('\x0a');}logger[_0x001e('0x19')]('googleASR\x20transcription',_0x80af31);logger[_0x001e('0x19')](_0x001e('0x51'),_0x228a02);return{'transcript':_0x80af31,'confidence':_0x228a02};})['catch'](function(_0x32cd3c){logger[_0x001e('0x1b')](_0x001e('0x52'),_0x32cd3c[_0x001e('0x13')],_0x32cd3c[_0x001e('0x53')],_0x32cd3c[_0x001e('0x54')]);});};exports[_0x001e('0x55')]=function(_0x52fe8a,_0x24b144,_0x543b79,_0xc1ca62){var _0x3994c5=apiai(_0x24b144,{'language':_0xc1ca62||'en'});return _0x3994c5[_0x001e('0x56')](_0x543b79,{'sessionId':md5(_0x52fe8a)})[_0x001e('0x28')](function(_0x8d86a1){logger[_0x001e('0x19')](JSON['stringify'](_0x8d86a1));return{'source':_0x8d86a1[_0x001e('0x57')][_0x001e('0x58')],'resolvedQuery':_0x8d86a1['result']['resolvedQuery'],'action':_0x8d86a1['result']['action'],'actionIncomplete':_0x8d86a1[_0x001e('0x57')][_0x001e('0x59')],'speech':_0x8d86a1[_0x001e('0x57')]['fulfillment'][_0x001e('0x5a')],'score':_0x8d86a1['result']['score'],'statusCode':_0x8d86a1['status']['code'],'endConversation':_0x8d86a1[_0x001e('0x57')][_0x001e('0x5b')][_0x001e('0x5c')]||![],'isFallbackIntent':_0x8d86a1[_0x001e('0x57')][_0x001e('0x5b')][_0x001e('0x5d')]};});};exports[_0x001e('0x5e')]=function(_0x512df9,_0x255e01,_0x3871e7,_0x4fdb68,_0x53e248,_0x38cdaa){var _0x4e45e2=_0x4fdb68[_0x001e('0x5f')](/\\n/g,'\x0a');var _0x30dc53={'credentials':{'private_key':_0x4e45e2,'client_email':_0x3871e7}};var _0x3576c3=new dialogflow[(_0x001e('0x60'))](_0x30dc53);var _0x4e2b4c=_0x3576c3[_0x001e('0x61')](_0x255e01,md5(_0x512df9));var _0x44a1c9={'session':_0x4e2b4c,'queryInput':{'text':{'text':_0x53e248,'languageCode':_0x38cdaa}}};return _0x3576c3[_0x001e('0x62')](_0x44a1c9)['then'](function(_0x3a502d){if(_0x3a502d&&_0x3a502d[_0x001e('0x63')]){logger['info'](_0x001e('0x64'),JSON[_0x001e('0x3f')](_0x3a502d));var _0x4be256=_0x3a502d[0x0];if(_0x4be256){var _0xd0b87e={'action':_0x4be256[_0x001e('0x65')][_0x001e('0x66')],'allRequiredParamsPresent':_0x4be256['queryResult'][_0x001e('0x67')],'endConversation':_0x4be256[_0x001e('0x65')][_0x001e('0x68')]&&_0x4be256['queryResult'][_0x001e('0x68')][_0x001e('0x69')]?_0x4be256[_0x001e('0x65')]['diagnosticInfo'][_0x001e('0x69')]['end_conversation'][_0x001e('0x6a')]:![],'fulfillmentText':_0x4be256[_0x001e('0x65')]['fulfillmentText'],'intentName':_0x4be256['queryResult'][_0x001e('0x6b')][_0x001e('0x53')],'intentDisplayName':_0x4be256[_0x001e('0x65')][_0x001e('0x6b')][_0x001e('0x6c')],'isFallbackIntent':_0x4be256[_0x001e('0x65')]['intent'][_0x001e('0x6d')],'languageCode':_0x4be256['queryResult']['languageCode'],'queryText':_0x4be256['queryResult'][_0x001e('0x6e')],'responseId':_0x4be256['responseId'],'score':_0x4be256[_0x001e('0x65')]['intentDetectionConfidence'],'speech':_0x4be256[_0x001e('0x65')][_0x001e('0x6f')],'providerResponse':JSON['stringify'](_0x3a502d)};return _0xd0b87e;}}});};exports[_0x001e('0x70')]=function(_0x4ea546,_0x23d809,_0x163b97,_0x9eef52){return tilde[_0x001e('0x71')](_0x4ea546,_0x23d809,_0x163b97,_0x9eef52)['then'](function(_0x39c8cb){try{fs[_0x001e('0x1c')](_0x4ea546);}catch(_0x5d5996){logger[_0x001e('0x1b')](_0x5d5996);}logger[_0x001e('0x19')](_0x001e('0x72'),_0x39c8cb[_0x001e('0x4d')]);logger[_0x001e('0x19')](_0x001e('0x73'),_0x39c8cb['confidence']);return _0x39c8cb;});};exports[_0x001e('0x74')]=function(_0x13c687,_0x338420,_0x4769e4,_0x17e6f9,_0x184433,_0x26653e){var _0x3b3b46=path[_0x001e('0x34')](__dirname,_0x001e('0x25'),rs[_0x001e('0x35')](0x4)+_0x001e('0x36'));var _0x17d2df;return aws[_0x001e('0x75')](_0x13c687,_0x338420,_0x4769e4,_0x17e6f9,_0x184433,_0x26653e,_0x3b3b46)[_0x001e('0x28')](function(){_0x17d2df=path['resolve'](__dirname,_0x001e('0x25'),rs[_0x001e('0x35')](0x4)+_0x001e('0x26'));return convertFile(_0x3b3b46,_0x17d2df);})[_0x001e('0x28')](function(){try{fs[_0x001e('0x1c')](_0x3b3b46);fs['chmodSync'](_0x17d2df,_0x001e('0x29'));}catch(_0x4c448c){logger[_0x001e('0x1b')](_0x4c448c);}return _0x17d2df['split']('.')[0x0];});};exports[_0x001e('0x76')]=function(_0x3d959f,_0x59f0b,_0x183bd2,_0x117b93,_0x2ef176,_0x27898c){return aws['lex'](_0x3d959f,_0x59f0b,_0x183bd2,_0x117b93,_0x2ef176,_0x27898c)[_0x001e('0x28')](function(_0x3fa7d2){logger[_0x001e('0x19')](JSON[_0x001e('0x3f')](_0x3fa7d2));return _0x3fa7d2;});};exports['ispeechTTS']=function(_0x129453,_0x545f0e,_0x3edf82,_0x551ec1){var _0x229632=util[_0x001e('0x77')]('%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3',ISPEECH_API,_0x129453,encodeURIComponent(_0x545f0e),_0x3edf82,_0x551ec1);var _0xd4199a=path[_0x001e('0x34')](__dirname,_0x001e('0x25'),rs['generate'](0x4)+_0x001e('0x36'));var _0x327bfa;return downloadFile(_0x229632,_0xd4199a)[_0x001e('0x28')](function(){_0x327bfa=path[_0x001e('0x34')](__dirname,_0x001e('0x25'),rs['generate'](0x4)+_0x001e('0x26'));return convertFile(_0xd4199a,_0x327bfa);})[_0x001e('0x28')](function(){try{fs[_0x001e('0x1c')](_0xd4199a);fs['chmodSync'](_0x327bfa,'777');}catch(_0x78b0cc){logger[_0x001e('0x1b')](_0x78b0cc);}return _0x327bfa['split']('.')[0x0];});};exports['ispeechASR']=function(_0x4c18a3,_0x3f07de,_0xdbb52f,_0x43bc14){var _0x1472fb=util[_0x001e('0x77')]('%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s',ISPEECH_API,_0x3f07de,_0xdbb52f,base64Encode(_0x4c18a3),_0x43bc14?util[_0x001e('0x77')](_0x001e('0x78'),encodeURIComponent(_0x43bc14)):_0x001e('0x79'));return uploadFile(_0x1472fb)['then'](function(_0x5a8d8f){return querystring[_0x001e('0x7a')](_0x5a8d8f);});};exports[_0x001e('0x7b')]=function(_0x2aa1ec,_0x176fef){return sestek[_0x001e('0x7c')](_0x2aa1ec,_0x176fef)[_0x001e('0x28')](function(_0x1830dc){logger[_0x001e('0x19')](JSON[_0x001e('0x3f')](_0x1830dc));var _0x5df524={'speech':_0x1830dc['text'],'action':_0x1830dc['channelData']?_0x1830dc['channelData'][_0x001e('0x7d')]:undefined,'actiondata':_0x1830dc[_0x001e('0x7e')]?_0x1830dc[_0x001e('0x7e')]['CustomActionData']:undefined};if(_0x1830dc[_0x001e('0x7e')]&&_0x1830dc['channelData'][_0x001e('0x7f')]){return base64Decode(_0x1830dc[_0x001e('0x7e')][_0x001e('0x7f')][_0x001e('0x80')],path['resolve'](__dirname,_0x001e('0x25'),rs['generate'](0x4)+_0x001e('0x26')))[_0x001e('0x28')](function(_0x52de23){_0x5df524[_0x001e('0x81')]=_0x52de23;return _0x5df524;});}return _0x5df524;});};exports['dirName']=function(){return __dirname;};