Built motion from commit (unavailable).|2.5.30
[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 _0x62f6=['metadata','endConversation','isFallbackIntent','googleDialogflowV2','replace','SessionsClient','sessionPath','detectIntent','Dialogflow\x20V2\x20response:','queryResult','action','diagnosticInfo','fields','boolValue','fulfillmentText','intent','displayName','languageCode','queryText','responseId','intentDetectionConfidence','Tilde\x20ASR\x20transcription','Tilde\x20ASR\x20confidence','awsPolly','.mp3','awsLex','format','ispeechASR','model=%s','freeform=3','text','channelData','CustomAction','CustomActionData','AudioFromTts','Data','audiofile','dirName','apiai-promise','bluebird','dialogflow','http','https','md5','path','querystring','request-promise','randomstring','sox','google-tts-api','url','parse','util','./aws','./google','./tilde','agi','https://api.ispeech.org/api/rest','protocol','https:','WHAT_EVER','get','error','request\x20to\x20','statusCode','statusMessage','\x20failed,\x20status\x20code\x20=\x20','createWriteStream','finish','info','finish\x20download\x20file','close','unlink','download\x20error','pipe','end','host','data','error\x20convert','finish\x20to\x20convert','start','resolve','tmp','generate','.wav','writeFileSync','base64','then','chmodSync','split','toString','googleCloudTTS','https://texttospeech.googleapis.com/v1/','ssml','input','voice','audioConfig','POST','writeFile','777','googleCloudTTS\x20path','googleTTS','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','utf8','f.req=','stringify','jQ1olc','slice','length','lang\x20\x22','\x22\x20might\x20not\x20exist','parse\x20response\x20failed:\x0a','goggleTTS\x20path','googleASR','asr','uri','results','map','alternatives','transcript','join','confidence','googleASR\x20transcription','googleASR\x20confidence','catch','[%s]\x20%s:%s','name','message','googleDialogflow','textRequest','result','resolvedQuery','actionIncomplete','fulfillment','speech','status','code'];(function(_0x1d1779,_0x284147){var _0x2377e9=function(_0x299f6f){while(--_0x299f6f){_0x1d1779['push'](_0x1d1779['shift']());}};_0x2377e9(++_0x284147);}(_0x62f6,0x1c1));var _0x662f=function(_0x532bf7,_0x38e146){_0x532bf7=_0x532bf7-0x0;var _0x5ddf14=_0x62f6[_0x532bf7];return _0x5ddf14;};'use strict';var apiai=require(_0x662f('0x0'));var BPromise=require(_0x662f('0x1'));var dialogflow=require(_0x662f('0x2'));var fs=require('fs');var http=require(_0x662f('0x3'));var https=require(_0x662f('0x4'));var md5=require(_0x662f('0x5'));var path=require(_0x662f('0x6'));var querystring=require(_0x662f('0x7'));var rp=require(_0x662f('0x8'));var rs=require(_0x662f('0x9'));var sox=require(_0x662f('0xa'));var tts=require(_0x662f('0xb'));var urlParse=require(_0x662f('0xc'))[_0x662f('0xd')];var util=require(_0x662f('0xe'));var aws=require(_0x662f('0xf'));var google=require(_0x662f('0x10'));var sestek=require('./sestek');var tilde=require(_0x662f('0x11'));var logger=require('../../../config/logger')(_0x662f('0x12'));var ISPEECH_API=_0x662f('0x13');function downloadFile(_0x2725a8,_0x23beb4){return new BPromise(function(_0x4c5051,_0x51c834){var _0x27bd0c=urlParse(_0x2725a8);var _0xc6f7cf=_0x27bd0c[_0x662f('0x14')]===_0x662f('0x15')?https:http;var _0x47f8f8={'host':_0x27bd0c['host'],'path':_0x27bd0c['path'],'headers':{'user-agent':_0x662f('0x16')}};_0xc6f7cf[_0x662f('0x17')](_0x47f8f8,function(_0x5a5fff){if(_0x5a5fff['statusCode']!==0xc8){logger[_0x662f('0x18')](_0x662f('0x19')+_0x2725a8+'\x20failed,\x20status\x20code\x20=\x20'+_0x5a5fff[_0x662f('0x1a')]+'\x20('+_0x5a5fff[_0x662f('0x1b')]+')');_0x51c834(new Error(_0x662f('0x19')+_0x2725a8+_0x662f('0x1c')+_0x5a5fff[_0x662f('0x1a')]+'\x20('+_0x5a5fff['statusMessage']+')'));return;}var _0x2dce5e=fs[_0x662f('0x1d')](_0x23beb4);_0x2dce5e['on'](_0x662f('0x1e'),function(){logger[_0x662f('0x1f')](_0x662f('0x20'));_0x2dce5e[_0x662f('0x21')](_0x4c5051);});_0x2dce5e['on']('error',function(_0x33a197){fs[_0x662f('0x22')](_0x23beb4);logger[_0x662f('0x18')](_0x662f('0x23'),_0x33a197);_0x51c834(_0x33a197);});_0x5a5fff[_0x662f('0x24')](_0x2dce5e);})['on']('error',function(_0x4dd620){logger['error'](_0x4dd620);_0x51c834(_0x4dd620);})[_0x662f('0x25')]();});}function uploadFile(_0x53a943){return new BPromise(function(_0x4a8db5,_0x34e58c){var _0x358718=urlParse(_0x53a943);var _0x499a29=_0x358718['protocol']===_0x662f('0x15')?https:http;var _0xf726c8={'host':_0x358718[_0x662f('0x26')],'path':_0x358718[_0x662f('0x6')],'headers':{'user-agent':'WHAT_EVER'}};_0x499a29['get'](_0xf726c8,function(_0x5f1728){if(_0x5f1728[_0x662f('0x1a')]!==0xc8){_0x34e58c(new Error('request\x20to\x20'+_0x53a943+_0x662f('0x1c')+_0x5f1728[_0x662f('0x1a')]+'\x20('+_0x5f1728[_0x662f('0x1b')]+')'));return;}var _0x308e15='';_0x5f1728['on'](_0x662f('0x27'),function(_0x43ce70){_0x308e15+=_0x43ce70;});_0x5f1728['on']('end',function(){_0x4a8db5(_0x308e15);});})['on'](_0x662f('0x18'),function(_0x298caf){_0x34e58c(_0x298caf);})[_0x662f('0x25')]();});}function convertFile(_0xfa239b,_0x5d66b2){return new BPromise(function(_0x1a5ce1,_0x2bb469){var _0x37ef4e=sox['transcode'](_0xfa239b,_0x5d66b2,{'sampleRate':0x1f40,'format':'wav','channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x37ef4e['on'](_0x662f('0x18'),function(_0x4e1a6b){logger[_0x662f('0x18')](_0x662f('0x28'),_0x4e1a6b);_0x2bb469(_0x4e1a6b);});_0x37ef4e['on'](_0x662f('0x25'),function(){logger[_0x662f('0x1f')](_0x662f('0x29'));_0x1a5ce1();});_0x37ef4e[_0x662f('0x2a')]();});}function base64Decode(_0x98d76b,_0x5430d){var _0x5cd648=path[_0x662f('0x2b')](__dirname,_0x662f('0x2c'),rs[_0x662f('0x2d')](0x4)+_0x662f('0x2e'));fs[_0x662f('0x2f')](_0x5cd648,_0x98d76b,_0x662f('0x30'));return convertFile(_0x5cd648,_0x5430d)[_0x662f('0x31')](function(){try{fs[_0x662f('0x22')](_0x5cd648);fs[_0x662f('0x32')](_0x5430d,'777');}catch(_0x1547e6){logger[_0x662f('0x18')](_0x1547e6);}return _0x5430d[_0x662f('0x33')]('.')[0x0];});}function base64Encode(_0xcc3f9f){var _0x3ca915=fs['readFileSync'](_0xcc3f9f);return new Buffer(_0x3ca915)[_0x662f('0x34')](_0x662f('0x30'));}exports[_0x662f('0x35')]=function(_0x810593,_0x1a2ca8,_0x4c6c01,_0x489b03,_0x4bfa45,_0x4b5664){var _0x1754dc,_0x499d00;var _0x4c0f2d=_0x662f('0x36');var _0x22cd84='?key='+_0x810593;var _0x585669={};if(_0x1a2ca8===_0x662f('0x37')){_0x585669[_0x662f('0x38')]={'ssml':_0x4c6c01};}else{_0x585669['input']={'text':_0x4c6c01};};_0x585669[_0x662f('0x39')]={'languageCode':_0x489b03,'ssmlGender':_0x4bfa45};_0x585669[_0x662f('0x3a')]={'audioEncoding':'MP3','sampleRateHertz':0x1f40};var _0x1d7b89={'url':_0x4c0f2d+'text:synthesize'+_0x22cd84,'method':_0x662f('0x3b'),'json':!![],'body':_0x585669};return rp(_0x1d7b89)['then'](function(_0x18b6a1){return new BPromise(function(_0xd34259,_0x3de334){_0x1754dc=path[_0x662f('0x2b')](__dirname,'tmp',rs['generate'](0x4)+'.mp3');var _0x325a65=Buffer['from'](_0x18b6a1['audioContent'],_0x662f('0x30'));return fs[_0x662f('0x3c')](_0x1754dc,_0x325a65,function(_0x5f3c52){_0x3de334(_0x5f3c52);},function(_0x17b95f){fs['chmodSync'](_0x1754dc,'777');_0xd34259(_0x17b95f);});});})[_0x662f('0x31')](function(_0x41fa75){_0x499d00=path[_0x662f('0x2b')](__dirname,_0x662f('0x2c'),rs['generate'](0x4)+_0x662f('0x2e'));return convertFile(_0x1754dc,_0x499d00);})[_0x662f('0x31')](function(){try{fs['unlink'](_0x1754dc);fs['chmodSync'](_0x499d00,_0x662f('0x3d'));}catch(_0x50caf9){logger['error'](_0x50caf9);}logger[_0x662f('0x1f')](_0x662f('0x3e'),_0x499d00[_0x662f('0x33')]('.')[0x0]);return _0x499d00['split']('.')[0x0];});};exports[_0x662f('0x3f')]=function(_0x5e62ad,_0x3f261d){var _0x231ad0=_0x662f('0x40');var _0x5bf336,_0x1a2d77;var _0x31e2a9;var _0x5a25c0={'encoding':_0x662f('0x41'),'method':_0x662f('0x3b'),'timeout':0x2710,'url':_0x231ad0,'headers':{'Content-Type':'application/x-www-form-urlencoded'},'body':_0x662f('0x42')+encodeURIComponent(JSON[_0x662f('0x43')]([[[_0x662f('0x44'),JSON['stringify']([_0x5e62ad,_0x3f261d||'en',![],'null']),null,'generic']]]))};return rp(_0x5a25c0)[_0x662f('0x31')](function(_0x13e099){try{_0x31e2a9=eval(_0x13e099[_0x662f('0x45')](0x5))[0x0][0x2];}catch(_0x1708d4){throw new Error('parse\x20response\x20failed:\x0a'+_0x13e099[_0x662f('0x27')]);}if(!_0x31e2a9){if(_0x5e62ad[_0x662f('0x46')]>0xc8){throw new Error('text\x20length\x20limit\x20reached');}else{throw new Error(_0x662f('0x47')+_0x3f261d+_0x662f('0x48'));}}try{_0x31e2a9=eval(_0x31e2a9)[0x0];}catch(_0x1b1ddc){throw new Error(_0x662f('0x49')+res[_0x662f('0x27')]);}const _0x2c209d=_0x31e2a9;_0x5bf336=path['resolve'](__dirname,'tmp',rs[_0x662f('0x2d')](0x4)+'.mp3');fs[_0x662f('0x2f')](_0x5bf336,_0x31e2a9,{'encoding':_0x662f('0x30')});_0x1a2d77=path[_0x662f('0x2b')](__dirname,_0x662f('0x2c'),rs[_0x662f('0x2d')](0x4)+_0x662f('0x2e'));return convertFile(_0x5bf336,_0x1a2d77);})[_0x662f('0x31')](function(){try{fs[_0x662f('0x22')](_0x5bf336);fs[_0x662f('0x32')](_0x1a2d77,_0x662f('0x3d'));}catch(_0x28faec){logger['error'](_0x28faec);}logger[_0x662f('0x1f')](_0x662f('0x4a'),_0x1a2d77[_0x662f('0x33')]('.')[0x0]);return _0x1a2d77[_0x662f('0x33')]('.')[0x0];});};exports[_0x662f('0x4b')]=function(_0x49ba6d,_0x4ed688,_0x3ddedc){return google[_0x662f('0x4c')](_0x49ba6d,_0x4ed688,_0x3ddedc)['then'](function(_0x21c214){logger[_0x662f('0x1f')](_0x21c214[_0x662f('0x4d')]);return rp(_0x21c214);})[_0x662f('0x31')](function(_0x4826db){var _0x9270ef='';var _0x4d5773=0x0;try{fs['unlink'](_0x49ba6d);}catch(_0x3cf891){logger[_0x662f('0x18')](_0x3cf891);}if(_0x4826db&&_0x4826db[_0x662f('0x4e')]){_0x9270ef=_0x4826db['results'][_0x662f('0x4f')](function(_0x2fdab6){return _0x2fdab6&&_0x2fdab6['alternatives'][0x0]&&_0x2fdab6[_0x662f('0x50')][0x0][_0x662f('0x51')]?_0x2fdab6[_0x662f('0x50')][0x0][_0x662f('0x51')]:'';})[_0x662f('0x52')]('\x0a');_0x4d5773=_0x4826db[_0x662f('0x4e')]['map'](function(_0x19112c){return _0x19112c&&_0x19112c[_0x662f('0x50')][0x0]&&_0x19112c['alternatives'][0x0][_0x662f('0x53')]?_0x19112c['alternatives'][0x0][_0x662f('0x53')]:0x0;})[_0x662f('0x52')]('\x0a');}logger[_0x662f('0x1f')](_0x662f('0x54'),_0x9270ef);logger[_0x662f('0x1f')](_0x662f('0x55'),_0x4d5773);return{'transcript':_0x9270ef,'confidence':_0x4d5773};})[_0x662f('0x56')](function(_0x4ad44a){logger[_0x662f('0x18')](_0x662f('0x57'),_0x4ad44a[_0x662f('0x1a')],_0x4ad44a[_0x662f('0x58')],_0x4ad44a[_0x662f('0x59')]);});};exports[_0x662f('0x5a')]=function(_0x9b7773,_0x148285,_0x754d14,_0x1bdf44){var _0x1020da=apiai(_0x148285,{'language':_0x1bdf44||'en'});return _0x1020da[_0x662f('0x5b')](_0x754d14,{'sessionId':md5(_0x9b7773)})[_0x662f('0x31')](function(_0x4112ea){logger[_0x662f('0x1f')](JSON[_0x662f('0x43')](_0x4112ea));return{'source':_0x4112ea['result']['source'],'resolvedQuery':_0x4112ea[_0x662f('0x5c')][_0x662f('0x5d')],'action':_0x4112ea[_0x662f('0x5c')]['action'],'actionIncomplete':_0x4112ea[_0x662f('0x5c')][_0x662f('0x5e')],'speech':_0x4112ea[_0x662f('0x5c')][_0x662f('0x5f')][_0x662f('0x60')],'score':_0x4112ea['result']['score'],'statusCode':_0x4112ea[_0x662f('0x61')][_0x662f('0x62')],'endConversation':_0x4112ea['result'][_0x662f('0x63')][_0x662f('0x64')]||![],'isFallbackIntent':_0x4112ea[_0x662f('0x5c')][_0x662f('0x63')][_0x662f('0x65')]};});};exports[_0x662f('0x66')]=function(_0x57a251,_0x2938f7,_0x111e4c,_0x135e4b,_0xb2ddff,_0x1c7dca){var _0x616b5f=_0x135e4b[_0x662f('0x67')](/\\n/g,'\x0a');var _0x21f6df={'credentials':{'private_key':_0x616b5f,'client_email':_0x111e4c}};var _0x1a3e28=new dialogflow[(_0x662f('0x68'))](_0x21f6df);var _0x599564=_0x1a3e28[_0x662f('0x69')](_0x2938f7,md5(_0x57a251));var _0x2a715c={'session':_0x599564,'queryInput':{'text':{'text':_0xb2ddff,'languageCode':_0x1c7dca}}};return _0x1a3e28[_0x662f('0x6a')](_0x2a715c)[_0x662f('0x31')](function(_0x8ab30){if(_0x8ab30&&_0x8ab30[_0x662f('0x46')]){logger[_0x662f('0x1f')](_0x662f('0x6b'),JSON[_0x662f('0x43')](_0x8ab30));var _0x1130db=_0x8ab30[0x0];if(_0x1130db){var _0x5d0ccf={'action':_0x1130db[_0x662f('0x6c')][_0x662f('0x6d')],'allRequiredParamsPresent':_0x1130db[_0x662f('0x6c')]['allRequiredParamsPresent'],'endConversation':_0x1130db[_0x662f('0x6c')][_0x662f('0x6e')]&&_0x1130db[_0x662f('0x6c')]['diagnosticInfo'][_0x662f('0x6f')]?_0x1130db[_0x662f('0x6c')][_0x662f('0x6e')][_0x662f('0x6f')]['end_conversation'][_0x662f('0x70')]:![],'fulfillmentText':_0x1130db['queryResult'][_0x662f('0x71')],'intentName':_0x1130db[_0x662f('0x6c')][_0x662f('0x72')][_0x662f('0x58')],'intentDisplayName':_0x1130db[_0x662f('0x6c')][_0x662f('0x72')][_0x662f('0x73')],'isFallbackIntent':_0x1130db[_0x662f('0x6c')][_0x662f('0x72')]['isFallback'],'languageCode':_0x1130db['queryResult'][_0x662f('0x74')],'queryText':_0x1130db['queryResult'][_0x662f('0x75')],'responseId':_0x1130db[_0x662f('0x76')],'score':_0x1130db[_0x662f('0x6c')][_0x662f('0x77')],'speech':_0x1130db[_0x662f('0x6c')][_0x662f('0x71')],'providerResponse':JSON[_0x662f('0x43')](_0x8ab30)};return _0x5d0ccf;}}});};exports['tildeASR']=function(_0x3a913e,_0x429726,_0x21f76b,_0x3e014f){return tilde['asr'](_0x3a913e,_0x429726,_0x21f76b,_0x3e014f)[_0x662f('0x31')](function(_0x1c5a0e){try{fs[_0x662f('0x22')](_0x3a913e);}catch(_0x366fec){logger['error'](_0x366fec);}logger['info'](_0x662f('0x78'),_0x1c5a0e[_0x662f('0x51')]);logger[_0x662f('0x1f')](_0x662f('0x79'),_0x1c5a0e[_0x662f('0x53')]);return _0x1c5a0e;});};exports[_0x662f('0x7a')]=function(_0x45fc1d,_0x342c1a,_0x1e1e05,_0x5711d5,_0x271e7f,_0x1ac598){var _0x158707=path[_0x662f('0x2b')](__dirname,_0x662f('0x2c'),rs['generate'](0x4)+_0x662f('0x7b'));var _0x127cb6;return aws['polly'](_0x45fc1d,_0x342c1a,_0x1e1e05,_0x5711d5,_0x271e7f,_0x1ac598,_0x158707)[_0x662f('0x31')](function(){_0x127cb6=path[_0x662f('0x2b')](__dirname,'tmp',rs[_0x662f('0x2d')](0x4)+_0x662f('0x2e'));return convertFile(_0x158707,_0x127cb6);})['then'](function(){try{fs['unlink'](_0x158707);fs['chmodSync'](_0x127cb6,_0x662f('0x3d'));}catch(_0x46f310){logger[_0x662f('0x18')](_0x46f310);}return _0x127cb6[_0x662f('0x33')]('.')[0x0];});};exports[_0x662f('0x7c')]=function(_0x5da798,_0x4c4f53,_0xd71fc2,_0x43a595,_0x4508c7,_0x3b05be){return aws['lex'](_0x5da798,_0x4c4f53,_0xd71fc2,_0x43a595,_0x4508c7,_0x3b05be)[_0x662f('0x31')](function(_0xc2911a){logger['info'](JSON[_0x662f('0x43')](_0xc2911a));return _0xc2911a;});};exports['ispeechTTS']=function(_0x5c5307,_0xef7c8f,_0x3e988e,_0x4b0075){var _0x44acc1=util[_0x662f('0x7d')]('%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3',ISPEECH_API,_0x5c5307,encodeURIComponent(_0xef7c8f),_0x3e988e,_0x4b0075);var _0xe2bae8=path[_0x662f('0x2b')](__dirname,'tmp',rs['generate'](0x4)+_0x662f('0x7b'));var _0xd83a05;return downloadFile(_0x44acc1,_0xe2bae8)[_0x662f('0x31')](function(){_0xd83a05=path['resolve'](__dirname,_0x662f('0x2c'),rs[_0x662f('0x2d')](0x4)+'.wav');return convertFile(_0xe2bae8,_0xd83a05);})['then'](function(){try{fs['unlink'](_0xe2bae8);fs[_0x662f('0x32')](_0xd83a05,_0x662f('0x3d'));}catch(_0x16ac11){logger[_0x662f('0x18')](_0x16ac11);}return _0xd83a05['split']('.')[0x0];});};exports[_0x662f('0x7e')]=function(_0x3d4457,_0x5413ae,_0x1d37a7,_0x51bfc3){var _0x34930d=util[_0x662f('0x7d')]('%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s',ISPEECH_API,_0x5413ae,_0x1d37a7,base64Encode(_0x3d4457),_0x51bfc3?util[_0x662f('0x7d')](_0x662f('0x7f'),encodeURIComponent(_0x51bfc3)):_0x662f('0x80'));return uploadFile(_0x34930d)['then'](function(_0x39cff6){return querystring[_0x662f('0xd')](_0x39cff6);});};exports['sestekNDA']=function(_0x1e3007,_0x20be3b){return sestek['nda'](_0x1e3007,_0x20be3b)[_0x662f('0x31')](function(_0x4188ad){logger['info'](JSON[_0x662f('0x43')](_0x4188ad));var _0x37e764={'speech':_0x4188ad[_0x662f('0x81')],'action':_0x4188ad[_0x662f('0x82')]?_0x4188ad[_0x662f('0x82')][_0x662f('0x83')]:undefined,'actiondata':_0x4188ad[_0x662f('0x82')]?_0x4188ad[_0x662f('0x82')][_0x662f('0x84')]:undefined};if(_0x4188ad['channelData']&&_0x4188ad['channelData'][_0x662f('0x85')]){return base64Decode(_0x4188ad[_0x662f('0x82')][_0x662f('0x85')][_0x662f('0x86')],path[_0x662f('0x2b')](__dirname,_0x662f('0x2c'),rs[_0x662f('0x2d')](0x4)+_0x662f('0x2e')))[_0x662f('0x31')](function(_0x14aba6){_0x37e764[_0x662f('0x87')]=_0x14aba6;return _0x37e764;});}return _0x37e764;});};exports[_0x662f('0x88')]=function(){return __dirname;};