Built motion from commit b5996064.|2.6.21
[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 _0xffbf=['querystring','request-promise','randomstring','sox','google-tts-api','parse','util','./aws','./google','./sestek','./tilde','../../../config/logger','https://api.ispeech.org/api/rest','protocol','https:','host','get','statusCode','error','request\x20to\x20','statusMessage','\x20failed,\x20status\x20code\x20=\x20','createWriteStream','finish','info','finish\x20download\x20file','close','unlink','download\x20error','pipe','end','WHAT_EVER','data','transcode','finish\x20to\x20convert','start','resolve','generate','.wav','writeFileSync','then','chmodSync','777','split','readFileSync','toString','base64','googleCloudTTS','https://texttospeech.googleapis.com/v1/','?key=','ssml','input','MP3','.mp3','from','writeFile','googleCloudTTS\x20path','googleTTS','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','utf8','application/x-www-form-urlencoded','f.req=','stringify','jQ1olc','null','generic','slice','parse\x20response\x20failed:\x0a','length','text\x20length\x20limit\x20reached','lang\x20\x22','\x22\x20might\x20not\x20exist','tmp','goggleTTS\x20path','asr','uri','results','map','alternatives','transcript','confidence','join','googleASR\x20transcription','googleASR\x20confidence','[%s]\x20%s:%s','message','googleDialogflow','result','source','resolvedQuery','actionIncomplete','fulfillment','score','status','code','endConversation','metadata','isFallbackIntent','sessionPath','queryResult','allRequiredParamsPresent','diagnosticInfo','fields','end_conversation','boolValue','fulfillmentText','intent','name','displayName','isFallback','languageCode','queryText','responseId','intentDetectionConfidence','tildeASR','Tilde\x20ASR\x20transcription','polly','awsLex','lex','ispeechASR','format','%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s','model=%s','text','channelData','CustomAction','AudioFromTts','Data','dirName','apiai-promise','bluebird','path'];(function(_0x386f91,_0x103fd4){var _0x10b3de=function(_0x268ec7){while(--_0x268ec7){_0x386f91['push'](_0x386f91['shift']());}};_0x10b3de(++_0x103fd4);}(_0xffbf,0x105));var _0xfffb=function(_0x37b2c8,_0x1d09e1){_0x37b2c8=_0x37b2c8-0x0;var _0xb7e887=_0xffbf[_0x37b2c8];return _0xb7e887;};'use strict';var apiai=require(_0xfffb('0x0'));var BPromise=require(_0xfffb('0x1'));var dialogflow=require('dialogflow');var fs=require('fs');var http=require('http');var https=require('https');var md5=require('md5');var path=require(_0xfffb('0x2'));var querystring=require(_0xfffb('0x3'));var rp=require(_0xfffb('0x4'));var rs=require(_0xfffb('0x5'));var sox=require(_0xfffb('0x6'));var tts=require(_0xfffb('0x7'));var urlParse=require('url')[_0xfffb('0x8')];var util=require(_0xfffb('0x9'));var aws=require(_0xfffb('0xa'));var google=require(_0xfffb('0xb'));var sestek=require(_0xfffb('0xc'));var tilde=require(_0xfffb('0xd'));var logger=require(_0xfffb('0xe'))('agi');var ISPEECH_API=_0xfffb('0xf');function downloadFile(_0x789d61,_0x27669c){return new BPromise(function(_0x53ef80,_0x3cfda4){var _0x45efa2=urlParse(_0x789d61);var _0x4c0e59=_0x45efa2[_0xfffb('0x10')]===_0xfffb('0x11')?https:http;var _0x11da3d={'host':_0x45efa2[_0xfffb('0x12')],'path':_0x45efa2[_0xfffb('0x2')],'headers':{'user-agent':'WHAT_EVER'}};_0x4c0e59[_0xfffb('0x13')](_0x11da3d,function(_0x1150a4){if(_0x1150a4[_0xfffb('0x14')]!==0xc8){logger[_0xfffb('0x15')](_0xfffb('0x16')+_0x789d61+'\x20failed,\x20status\x20code\x20=\x20'+_0x1150a4['statusCode']+'\x20('+_0x1150a4[_0xfffb('0x17')]+')');_0x3cfda4(new Error(_0xfffb('0x16')+_0x789d61+_0xfffb('0x18')+_0x1150a4[_0xfffb('0x14')]+'\x20('+_0x1150a4['statusMessage']+')'));return;}var _0x165a6a=fs[_0xfffb('0x19')](_0x27669c);_0x165a6a['on'](_0xfffb('0x1a'),function(){logger[_0xfffb('0x1b')](_0xfffb('0x1c'));_0x165a6a[_0xfffb('0x1d')](_0x53ef80);});_0x165a6a['on'](_0xfffb('0x15'),function(_0x40e97f){fs[_0xfffb('0x1e')](_0x27669c);logger['error'](_0xfffb('0x1f'),_0x40e97f);_0x3cfda4(_0x40e97f);});_0x1150a4[_0xfffb('0x20')](_0x165a6a);})['on'](_0xfffb('0x15'),function(_0x27de70){logger[_0xfffb('0x15')](_0x27de70);_0x3cfda4(_0x27de70);})[_0xfffb('0x21')]();});}function uploadFile(_0x3a9cb6){return new BPromise(function(_0x356ae8,_0x24839d){var _0x4c49e0=urlParse(_0x3a9cb6);var _0x2f9b8d=_0x4c49e0['protocol']===_0xfffb('0x11')?https:http;var _0x3d121e={'host':_0x4c49e0[_0xfffb('0x12')],'path':_0x4c49e0['path'],'headers':{'user-agent':_0xfffb('0x22')}};_0x2f9b8d['get'](_0x3d121e,function(_0x519f4d){if(_0x519f4d[_0xfffb('0x14')]!==0xc8){_0x24839d(new Error(_0xfffb('0x16')+_0x3a9cb6+_0xfffb('0x18')+_0x519f4d[_0xfffb('0x14')]+'\x20('+_0x519f4d['statusMessage']+')'));return;}var _0x18d01f='';_0x519f4d['on'](_0xfffb('0x23'),function(_0x235108){_0x18d01f+=_0x235108;});_0x519f4d['on'](_0xfffb('0x21'),function(){_0x356ae8(_0x18d01f);});})['on'](_0xfffb('0x15'),function(_0x226e55){_0x24839d(_0x226e55);})[_0xfffb('0x21')]();});}function convertFile(_0x457fe9,_0x5db9d0){return new BPromise(function(_0x41193b,_0x2a1f8d){var _0x3588b8=sox[_0xfffb('0x24')](_0x457fe9,_0x5db9d0,{'sampleRate':0x1f40,'format':'wav','channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x3588b8['on'](_0xfffb('0x15'),function(_0x2dcd73){logger[_0xfffb('0x15')]('error\x20convert',_0x2dcd73);_0x2a1f8d(_0x2dcd73);});_0x3588b8['on']('end',function(){logger[_0xfffb('0x1b')](_0xfffb('0x25'));_0x41193b();});_0x3588b8[_0xfffb('0x26')]();});}function base64Decode(_0x328cb4,_0x2869e4){var _0x542651=path[_0xfffb('0x27')](__dirname,'tmp',rs[_0xfffb('0x28')](0x4)+_0xfffb('0x29'));fs[_0xfffb('0x2a')](_0x542651,_0x328cb4,'base64');return convertFile(_0x542651,_0x2869e4)[_0xfffb('0x2b')](function(){try{fs['unlink'](_0x542651);fs[_0xfffb('0x2c')](_0x2869e4,_0xfffb('0x2d'));}catch(_0x254343){logger[_0xfffb('0x15')](_0x254343);}return _0x2869e4[_0xfffb('0x2e')]('.')[0x0];});}function base64Encode(_0x5d11a4){var _0x448b34=fs[_0xfffb('0x2f')](_0x5d11a4);return new Buffer(_0x448b34)[_0xfffb('0x30')](_0xfffb('0x31'));}exports[_0xfffb('0x32')]=function(_0x333255,_0x539d46,_0x46f82c,_0x5eba76,_0x30eca7,_0x4c5792){var _0x57f48a,_0x3685ba;var _0x86b7a6=_0xfffb('0x33');var _0x5b5ca5=_0xfffb('0x34')+_0x333255;var _0x5ee0b2={};if(_0x539d46===_0xfffb('0x35')){_0x5ee0b2[_0xfffb('0x36')]={'ssml':_0x46f82c};}else{_0x5ee0b2[_0xfffb('0x36')]={'text':_0x46f82c};};_0x5ee0b2['voice']={'languageCode':_0x5eba76,'ssmlGender':_0x30eca7};_0x5ee0b2['audioConfig']={'audioEncoding':_0xfffb('0x37'),'sampleRateHertz':0x1f40};var _0x3c845a={'url':_0x86b7a6+'text:synthesize'+_0x5b5ca5,'method':'POST','json':!![],'body':_0x5ee0b2};return rp(_0x3c845a)[_0xfffb('0x2b')](function(_0x2b7455){return new BPromise(function(_0x17a1be,_0x31c6e6){_0x57f48a=path['resolve'](__dirname,'tmp',rs[_0xfffb('0x28')](0x4)+_0xfffb('0x38'));var _0x2c6481=Buffer[_0xfffb('0x39')](_0x2b7455['audioContent'],_0xfffb('0x31'));return fs[_0xfffb('0x3a')](_0x57f48a,_0x2c6481,function(_0x413e59){_0x31c6e6(_0x413e59);},function(_0x376bb3){fs['chmodSync'](_0x57f48a,_0xfffb('0x2d'));_0x17a1be(_0x376bb3);});});})[_0xfffb('0x2b')](function(_0x5eba61){_0x3685ba=path[_0xfffb('0x27')](__dirname,'tmp',rs['generate'](0x4)+_0xfffb('0x29'));return convertFile(_0x57f48a,_0x3685ba);})[_0xfffb('0x2b')](function(){try{fs[_0xfffb('0x1e')](_0x57f48a);fs[_0xfffb('0x2c')](_0x3685ba,'777');}catch(_0x58489b){logger[_0xfffb('0x15')](_0x58489b);}logger['info'](_0xfffb('0x3b'),_0x3685ba[_0xfffb('0x2e')]('.')[0x0]);return _0x3685ba[_0xfffb('0x2e')]('.')[0x0];});};exports[_0xfffb('0x3c')]=function(_0x478db7,_0x5a91de){var _0x167256=_0xfffb('0x3d');var _0x4b14d2,_0x2ef20f;var _0x21aef8;var _0x522f8a={'encoding':_0xfffb('0x3e'),'method':'POST','timeout':0x2710,'url':_0x167256,'headers':{'Content-Type':_0xfffb('0x3f')},'body':_0xfffb('0x40')+encodeURIComponent(JSON[_0xfffb('0x41')]([[[_0xfffb('0x42'),JSON['stringify']([_0x478db7,_0x5a91de||'en',![],_0xfffb('0x43')]),null,_0xfffb('0x44')]]]))};return rp(_0x522f8a)[_0xfffb('0x2b')](function(_0x5c3d1e){try{_0x21aef8=eval(_0x5c3d1e[_0xfffb('0x45')](0x5))[0x0][0x2];}catch(_0x37b7f5){throw new Error(_0xfffb('0x46')+_0x5c3d1e[_0xfffb('0x23')]);}if(!_0x21aef8){if(_0x478db7[_0xfffb('0x47')]>0xc8){throw new Error(_0xfffb('0x48'));}else{throw new Error(_0xfffb('0x49')+_0x5a91de+_0xfffb('0x4a'));}}try{_0x21aef8=eval(_0x21aef8)[0x0];}catch(_0x64da4d){throw new Error(_0xfffb('0x46')+res[_0xfffb('0x23')]);}const _0x57888c=_0x21aef8;_0x4b14d2=path[_0xfffb('0x27')](__dirname,_0xfffb('0x4b'),rs[_0xfffb('0x28')](0x4)+_0xfffb('0x38'));fs['writeFileSync'](_0x4b14d2,_0x21aef8,{'encoding':_0xfffb('0x31')});_0x2ef20f=path[_0xfffb('0x27')](__dirname,_0xfffb('0x4b'),rs[_0xfffb('0x28')](0x4)+_0xfffb('0x29'));return convertFile(_0x4b14d2,_0x2ef20f);})[_0xfffb('0x2b')](function(){try{fs['unlink'](_0x4b14d2);fs[_0xfffb('0x2c')](_0x2ef20f,'777');}catch(_0x415c17){logger[_0xfffb('0x15')](_0x415c17);}logger[_0xfffb('0x1b')](_0xfffb('0x4c'),_0x2ef20f[_0xfffb('0x2e')]('.')[0x0]);return _0x2ef20f[_0xfffb('0x2e')]('.')[0x0];});};exports['googleASR']=function(_0x5822f3,_0x26d349,_0x356b8a){return google[_0xfffb('0x4d')](_0x5822f3,_0x26d349,_0x356b8a)[_0xfffb('0x2b')](function(_0x4a5f0a){logger[_0xfffb('0x1b')](_0x4a5f0a[_0xfffb('0x4e')]);return rp(_0x4a5f0a);})[_0xfffb('0x2b')](function(_0x5ba02b){var _0x157050='';var _0x514d3b=0x0;try{fs[_0xfffb('0x1e')](_0x5822f3);}catch(_0x175087){logger[_0xfffb('0x15')](_0x175087);}if(_0x5ba02b&&_0x5ba02b['results']){_0x157050=_0x5ba02b[_0xfffb('0x4f')][_0xfffb('0x50')](function(_0x301b37){return _0x301b37&&_0x301b37[_0xfffb('0x51')][0x0]&&_0x301b37[_0xfffb('0x51')][0x0][_0xfffb('0x52')]?_0x301b37[_0xfffb('0x51')][0x0][_0xfffb('0x52')]:'';})['join']('\x0a');_0x514d3b=_0x5ba02b['results']['map'](function(_0xbc31ec){return _0xbc31ec&&_0xbc31ec[_0xfffb('0x51')][0x0]&&_0xbc31ec['alternatives'][0x0][_0xfffb('0x53')]?_0xbc31ec[_0xfffb('0x51')][0x0][_0xfffb('0x53')]:0x0;})[_0xfffb('0x54')]('\x0a');}logger[_0xfffb('0x1b')](_0xfffb('0x55'),_0x157050);logger[_0xfffb('0x1b')](_0xfffb('0x56'),_0x514d3b);return{'transcript':_0x157050,'confidence':_0x514d3b};})['catch'](function(_0x13d069){logger[_0xfffb('0x15')](_0xfffb('0x57'),_0x13d069[_0xfffb('0x14')],_0x13d069['name'],_0x13d069[_0xfffb('0x58')]);});};exports[_0xfffb('0x59')]=function(_0x59dbd0,_0x1bb15d,_0x297248,_0x5c5c64){var _0x38bf96=apiai(_0x1bb15d,{'language':_0x5c5c64||'en'});return _0x38bf96['textRequest'](_0x297248,{'sessionId':md5(_0x59dbd0)})[_0xfffb('0x2b')](function(_0x3c1a79){logger[_0xfffb('0x1b')](JSON[_0xfffb('0x41')](_0x3c1a79));return{'source':_0x3c1a79[_0xfffb('0x5a')][_0xfffb('0x5b')],'resolvedQuery':_0x3c1a79['result'][_0xfffb('0x5c')],'action':_0x3c1a79[_0xfffb('0x5a')]['action'],'actionIncomplete':_0x3c1a79['result'][_0xfffb('0x5d')],'speech':_0x3c1a79[_0xfffb('0x5a')][_0xfffb('0x5e')]['speech'],'score':_0x3c1a79[_0xfffb('0x5a')][_0xfffb('0x5f')],'statusCode':_0x3c1a79[_0xfffb('0x60')][_0xfffb('0x61')],'endConversation':_0x3c1a79[_0xfffb('0x5a')]['metadata'][_0xfffb('0x62')]||![],'isFallbackIntent':_0x3c1a79['result'][_0xfffb('0x63')][_0xfffb('0x64')]};});};exports['googleDialogflowV2']=function(_0x43b85f,_0x35dc76,_0x1e46ef,_0x387f20,_0x46370d,_0x1fb9b8){var _0x437c19=_0x387f20['replace'](/\\n/g,'\x0a');var _0x4d1e6d={'credentials':{'private_key':_0x437c19,'client_email':_0x1e46ef}};var _0x371001=new dialogflow['SessionsClient'](_0x4d1e6d);var _0x3eec02=_0x371001[_0xfffb('0x65')](_0x35dc76,md5(_0x43b85f));var _0xfc20c5={'session':_0x3eec02,'queryInput':{'text':{'text':_0x46370d,'languageCode':_0x1fb9b8}}};return _0x371001['detectIntent'](_0xfc20c5)[_0xfffb('0x2b')](function(_0x954176){if(_0x954176&&_0x954176[_0xfffb('0x47')]){logger[_0xfffb('0x1b')]('Dialogflow\x20V2\x20response:',JSON['stringify'](_0x954176));var _0x372262=_0x954176[0x0];if(_0x372262){var _0x1e42f2={'action':_0x372262['queryResult']['action'],'allRequiredParamsPresent':_0x372262[_0xfffb('0x66')][_0xfffb('0x67')],'endConversation':_0x372262[_0xfffb('0x66')][_0xfffb('0x68')]&&_0x372262['queryResult'][_0xfffb('0x68')][_0xfffb('0x69')]?_0x372262[_0xfffb('0x66')]['diagnosticInfo'][_0xfffb('0x69')][_0xfffb('0x6a')][_0xfffb('0x6b')]:![],'fulfillmentText':_0x372262['queryResult'][_0xfffb('0x6c')],'intentName':_0x372262[_0xfffb('0x66')][_0xfffb('0x6d')][_0xfffb('0x6e')],'intentDisplayName':_0x372262[_0xfffb('0x66')][_0xfffb('0x6d')][_0xfffb('0x6f')],'isFallbackIntent':_0x372262['queryResult'][_0xfffb('0x6d')][_0xfffb('0x70')],'languageCode':_0x372262['queryResult'][_0xfffb('0x71')],'queryText':_0x372262[_0xfffb('0x66')][_0xfffb('0x72')],'responseId':_0x372262[_0xfffb('0x73')],'score':_0x372262['queryResult'][_0xfffb('0x74')],'speech':_0x372262[_0xfffb('0x66')][_0xfffb('0x6c')],'providerResponse':JSON[_0xfffb('0x41')](_0x954176)};return _0x1e42f2;}}});};exports[_0xfffb('0x75')]=function(_0x51279b,_0x3e6859,_0x33aedc,_0x422607){return tilde[_0xfffb('0x4d')](_0x51279b,_0x3e6859,_0x33aedc,_0x422607)['then'](function(_0x238b75){try{fs[_0xfffb('0x1e')](_0x51279b);}catch(_0x3e4b49){logger[_0xfffb('0x15')](_0x3e4b49);}logger[_0xfffb('0x1b')](_0xfffb('0x76'),_0x238b75[_0xfffb('0x52')]);logger[_0xfffb('0x1b')]('Tilde\x20ASR\x20confidence',_0x238b75[_0xfffb('0x53')]);return _0x238b75;});};exports['awsPolly']=function(_0x336752,_0x27bc77,_0x148f41,_0x53fe35,_0x21528b,_0x3e196c){var _0x22d56f=path['resolve'](__dirname,_0xfffb('0x4b'),rs[_0xfffb('0x28')](0x4)+_0xfffb('0x38'));var _0x5a3e46;return aws[_0xfffb('0x77')](_0x336752,_0x27bc77,_0x148f41,_0x53fe35,_0x21528b,_0x3e196c,_0x22d56f)[_0xfffb('0x2b')](function(){_0x5a3e46=path[_0xfffb('0x27')](__dirname,_0xfffb('0x4b'),rs['generate'](0x4)+'.wav');return convertFile(_0x22d56f,_0x5a3e46);})[_0xfffb('0x2b')](function(){try{fs[_0xfffb('0x1e')](_0x22d56f);fs['chmodSync'](_0x5a3e46,_0xfffb('0x2d'));}catch(_0x75e046){logger[_0xfffb('0x15')](_0x75e046);}return _0x5a3e46[_0xfffb('0x2e')]('.')[0x0];});};exports[_0xfffb('0x78')]=function(_0x39afb5,_0x1dba41,_0x50b5b7,_0xbfd61b,_0x105b24,_0x4a67f1){return aws[_0xfffb('0x79')](_0x39afb5,_0x1dba41,_0x50b5b7,_0xbfd61b,_0x105b24,_0x4a67f1)[_0xfffb('0x2b')](function(_0x512e25){logger['info'](JSON[_0xfffb('0x41')](_0x512e25));return _0x512e25;});};exports['ispeechTTS']=function(_0x7f639f,_0x41cf11,_0x42778c,_0x5c3e3a){var _0x3b9b47=util['format']('%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3',ISPEECH_API,_0x7f639f,encodeURIComponent(_0x41cf11),_0x42778c,_0x5c3e3a);var _0x4f5284=path[_0xfffb('0x27')](__dirname,'tmp',rs[_0xfffb('0x28')](0x4)+_0xfffb('0x38'));var _0x3c6515;return downloadFile(_0x3b9b47,_0x4f5284)['then'](function(){_0x3c6515=path[_0xfffb('0x27')](__dirname,_0xfffb('0x4b'),rs[_0xfffb('0x28')](0x4)+_0xfffb('0x29'));return convertFile(_0x4f5284,_0x3c6515);})[_0xfffb('0x2b')](function(){try{fs['unlink'](_0x4f5284);fs[_0xfffb('0x2c')](_0x3c6515,'777');}catch(_0x41be5b){logger['error'](_0x41be5b);}return _0x3c6515['split']('.')[0x0];});};exports[_0xfffb('0x7a')]=function(_0x5d6990,_0x9a24f8,_0x5d852f,_0x51800a){var _0x11fc20=util[_0xfffb('0x7b')](_0xfffb('0x7c'),ISPEECH_API,_0x9a24f8,_0x5d852f,base64Encode(_0x5d6990),_0x51800a?util[_0xfffb('0x7b')](_0xfffb('0x7d'),encodeURIComponent(_0x51800a)):'freeform=3');return uploadFile(_0x11fc20)[_0xfffb('0x2b')](function(_0x5391ec){return querystring[_0xfffb('0x8')](_0x5391ec);});};exports['sestekNDA']=function(_0x1f9a86,_0x292c4d){return sestek['nda'](_0x1f9a86,_0x292c4d)['then'](function(_0x2d1816){logger[_0xfffb('0x1b')](JSON['stringify'](_0x2d1816));var _0x16a525={'speech':_0x2d1816[_0xfffb('0x7e')],'action':_0x2d1816[_0xfffb('0x7f')]?_0x2d1816['channelData'][_0xfffb('0x80')]:undefined,'actiondata':_0x2d1816[_0xfffb('0x7f')]?_0x2d1816['channelData']['CustomActionData']:undefined};if(_0x2d1816[_0xfffb('0x7f')]&&_0x2d1816[_0xfffb('0x7f')][_0xfffb('0x81')]){return base64Decode(_0x2d1816[_0xfffb('0x7f')]['AudioFromTts'][_0xfffb('0x82')],path['resolve'](__dirname,'tmp',rs[_0xfffb('0x28')](0x4)+_0xfffb('0x29')))[_0xfffb('0x2b')](function(_0x1dc8b6){_0x16a525['audiofile']=_0x1dc8b6;return _0x16a525;});}return _0x16a525;});};exports[_0xfffb('0x83')]=function(){return __dirname;};