Built motion from commit 19a84241.|2.5.34
[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 _0x32d3=['./google','./sestek','./tilde','../../../config/logger','agi','https://api.ispeech.org/api/rest','https:','host','get','statusCode','error','request\x20to\x20','statusMessage','\x20failed,\x20status\x20code\x20=\x20','createWriteStream','finish','info','close','download\x20error','pipe','data','end','transcode','wav','resolve','tmp','generate','.wav','writeFileSync','base64','then','unlink','777','split','readFileSync','toString','googleCloudTTS','https://texttospeech.googleapis.com/v1/','ssml','input','voice','audioConfig','MP3','text:synthesize','POST','.mp3','from','audioContent','writeFile','chmodSync','googleCloudTTS\x20path','googleTTS','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','application/x-www-form-urlencoded','stringify','jQ1olc','null','slice','parse\x20response\x20failed:\x0a','lang\x20\x22','\x22\x20might\x20not\x20exist','goggleTTS\x20path','googleASR','asr','results','map','alternatives','transcript','join','confidence','googleASR\x20confidence','catch','[%s]\x20%s:%s','name','message','textRequest','result','source','resolvedQuery','action','fulfillment','speech','score','code','metadata','endConversation','isFallbackIntent','googleDialogflowV2','replace','SessionsClient','sessionPath','detectIntent','length','Dialogflow\x20V2\x20response:','queryResult','allRequiredParamsPresent','diagnosticInfo','fields','end_conversation','fulfillmentText','intent','displayName','isFallback','languageCode','responseId','intentDetectionConfidence','tildeASR','Tilde\x20ASR\x20transcription','Tilde\x20ASR\x20confidence','awsLex','lex','ispeechTTS','%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3','ispeechASR','format','%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s','model=%s','freeform=3','sestekNDA','nda','channelData','CustomActionData','AudioFromTts','audiofile','dirName','apiai-promise','bluebird','dialogflow','https','md5','path','request-promise','randomstring','google-tts-api','url','parse','util','./aws'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0x32d3,0x7d));var _0x332d=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x32d3[_0x3947c9];return _0x2e7871;};'use strict';var apiai=require(_0x332d('0x0'));var BPromise=require(_0x332d('0x1'));var dialogflow=require(_0x332d('0x2'));var fs=require('fs');var http=require('http');var https=require(_0x332d('0x3'));var md5=require(_0x332d('0x4'));var path=require(_0x332d('0x5'));var querystring=require('querystring');var rp=require(_0x332d('0x6'));var rs=require(_0x332d('0x7'));var sox=require('sox');var tts=require(_0x332d('0x8'));var urlParse=require(_0x332d('0x9'))[_0x332d('0xa')];var util=require(_0x332d('0xb'));var aws=require(_0x332d('0xc'));var google=require(_0x332d('0xd'));var sestek=require(_0x332d('0xe'));var tilde=require(_0x332d('0xf'));var logger=require(_0x332d('0x10'))(_0x332d('0x11'));var ISPEECH_API=_0x332d('0x12');function downloadFile(_0x285391,_0x4e52f3){return new BPromise(function(_0x5cb9f5,_0x165a12){var _0x437a4f=urlParse(_0x285391);var _0x211d72=_0x437a4f['protocol']===_0x332d('0x13')?https:http;var _0x8f162f={'host':_0x437a4f[_0x332d('0x14')],'path':_0x437a4f[_0x332d('0x5')],'headers':{'user-agent':'WHAT_EVER'}};_0x211d72[_0x332d('0x15')](_0x8f162f,function(_0x4ddcc8){if(_0x4ddcc8[_0x332d('0x16')]!==0xc8){logger[_0x332d('0x17')](_0x332d('0x18')+_0x285391+'\x20failed,\x20status\x20code\x20=\x20'+_0x4ddcc8[_0x332d('0x16')]+'\x20('+_0x4ddcc8[_0x332d('0x19')]+')');_0x165a12(new Error('request\x20to\x20'+_0x285391+_0x332d('0x1a')+_0x4ddcc8[_0x332d('0x16')]+'\x20('+_0x4ddcc8['statusMessage']+')'));return;}var _0x34f089=fs[_0x332d('0x1b')](_0x4e52f3);_0x34f089['on'](_0x332d('0x1c'),function(){logger[_0x332d('0x1d')]('finish\x20download\x20file');_0x34f089[_0x332d('0x1e')](_0x5cb9f5);});_0x34f089['on'](_0x332d('0x17'),function(_0x56aac2){fs['unlink'](_0x4e52f3);logger[_0x332d('0x17')](_0x332d('0x1f'),_0x56aac2);_0x165a12(_0x56aac2);});_0x4ddcc8[_0x332d('0x20')](_0x34f089);})['on']('error',function(_0x4ba6c8){logger['error'](_0x4ba6c8);_0x165a12(_0x4ba6c8);})['end']();});}function uploadFile(_0x4d9237){return new BPromise(function(_0x3980d4,_0x4daa24){var _0x28f87d=urlParse(_0x4d9237);var _0xe22ef7=_0x28f87d['protocol']===_0x332d('0x13')?https:http;var _0x284a91={'host':_0x28f87d[_0x332d('0x14')],'path':_0x28f87d[_0x332d('0x5')],'headers':{'user-agent':'WHAT_EVER'}};_0xe22ef7[_0x332d('0x15')](_0x284a91,function(_0x32feb6){if(_0x32feb6['statusCode']!==0xc8){_0x4daa24(new Error(_0x332d('0x18')+_0x4d9237+_0x332d('0x1a')+_0x32feb6[_0x332d('0x16')]+'\x20('+_0x32feb6['statusMessage']+')'));return;}var _0x5e52a8='';_0x32feb6['on'](_0x332d('0x21'),function(_0x410be5){_0x5e52a8+=_0x410be5;});_0x32feb6['on'](_0x332d('0x22'),function(){_0x3980d4(_0x5e52a8);});})['on'](_0x332d('0x17'),function(_0x25b1b7){_0x4daa24(_0x25b1b7);})[_0x332d('0x22')]();});}function convertFile(_0x2a118c,_0x21a772){return new BPromise(function(_0x290287,_0x38903b){var _0x349b01=sox[_0x332d('0x23')](_0x2a118c,_0x21a772,{'sampleRate':0x1f40,'format':_0x332d('0x24'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x349b01['on']('error',function(_0x5e407c){logger[_0x332d('0x17')]('error\x20convert',_0x5e407c);_0x38903b(_0x5e407c);});_0x349b01['on']('end',function(){logger[_0x332d('0x1d')]('finish\x20to\x20convert');_0x290287();});_0x349b01['start']();});}function base64Decode(_0x303290,_0xd077d9){var _0x2f0cd9=path[_0x332d('0x25')](__dirname,_0x332d('0x26'),rs[_0x332d('0x27')](0x4)+_0x332d('0x28'));fs[_0x332d('0x29')](_0x2f0cd9,_0x303290,_0x332d('0x2a'));return convertFile(_0x2f0cd9,_0xd077d9)[_0x332d('0x2b')](function(){try{fs[_0x332d('0x2c')](_0x2f0cd9);fs['chmodSync'](_0xd077d9,_0x332d('0x2d'));}catch(_0xede8d2){logger['error'](_0xede8d2);}return _0xd077d9[_0x332d('0x2e')]('.')[0x0];});}function base64Encode(_0x7931c8){var _0x2c1942=fs[_0x332d('0x2f')](_0x7931c8);return new Buffer(_0x2c1942)[_0x332d('0x30')]('base64');}exports[_0x332d('0x31')]=function(_0x1b3596,_0x3a0373,_0x1eb826,_0x34e0e7,_0x5580e4,_0x5559b6){var _0x45b0db,_0x5c54c1;var _0x359cc6=_0x332d('0x32');var _0x3401c4='?key='+_0x1b3596;var _0x2f2843={};if(_0x3a0373===_0x332d('0x33')){_0x2f2843[_0x332d('0x34')]={'ssml':_0x1eb826};}else{_0x2f2843[_0x332d('0x34')]={'text':_0x1eb826};};_0x2f2843[_0x332d('0x35')]={'languageCode':_0x34e0e7,'ssmlGender':_0x5580e4};_0x2f2843[_0x332d('0x36')]={'audioEncoding':_0x332d('0x37'),'sampleRateHertz':0x1f40};var _0x588688={'url':_0x359cc6+_0x332d('0x38')+_0x3401c4,'method':_0x332d('0x39'),'json':!![],'body':_0x2f2843};return rp(_0x588688)[_0x332d('0x2b')](function(_0x1ebfbe){return new BPromise(function(_0x4385d2,_0x5d2a24){_0x45b0db=path[_0x332d('0x25')](__dirname,'tmp',rs['generate'](0x4)+_0x332d('0x3a'));var _0x1c678e=Buffer[_0x332d('0x3b')](_0x1ebfbe[_0x332d('0x3c')],_0x332d('0x2a'));return fs[_0x332d('0x3d')](_0x45b0db,_0x1c678e,function(_0x306885){_0x5d2a24(_0x306885);},function(_0x5225e8){fs[_0x332d('0x3e')](_0x45b0db,_0x332d('0x2d'));_0x4385d2(_0x5225e8);});});})[_0x332d('0x2b')](function(_0x229791){_0x5c54c1=path[_0x332d('0x25')](__dirname,_0x332d('0x26'),rs[_0x332d('0x27')](0x4)+_0x332d('0x28'));return convertFile(_0x45b0db,_0x5c54c1);})[_0x332d('0x2b')](function(){try{fs['unlink'](_0x45b0db);fs['chmodSync'](_0x5c54c1,_0x332d('0x2d'));}catch(_0x54a013){logger[_0x332d('0x17')](_0x54a013);}logger['info'](_0x332d('0x3f'),_0x5c54c1['split']('.')[0x0]);return _0x5c54c1[_0x332d('0x2e')]('.')[0x0];});};exports[_0x332d('0x40')]=function(_0x5d7a53,_0x52b1e7){var _0x2f72d9=_0x332d('0x41');var _0x2476c6,_0x106302;var _0x4defdc;var _0x10fdb3={'encoding':'utf8','method':_0x332d('0x39'),'timeout':0x2710,'url':_0x2f72d9,'headers':{'Content-Type':_0x332d('0x42')},'body':'f.req='+encodeURIComponent(JSON[_0x332d('0x43')]([[[_0x332d('0x44'),JSON[_0x332d('0x43')]([_0x5d7a53,_0x52b1e7||'en',![],_0x332d('0x45')]),null,'generic']]]))};return rp(_0x10fdb3)['then'](function(_0x4b9ea4){try{_0x4defdc=eval(_0x4b9ea4[_0x332d('0x46')](0x5))[0x0][0x2];}catch(_0x2d0719){throw new Error(_0x332d('0x47')+_0x4b9ea4[_0x332d('0x21')]);}if(!_0x4defdc){if(_0x5d7a53['length']>0xc8){throw new Error('text\x20length\x20limit\x20reached');}else{throw new Error(_0x332d('0x48')+_0x52b1e7+_0x332d('0x49'));}}try{_0x4defdc=eval(_0x4defdc)[0x0];}catch(_0x3fd1fb){throw new Error(_0x332d('0x47')+res['data']);}const _0x12f3ae=_0x4defdc;_0x2476c6=path[_0x332d('0x25')](__dirname,_0x332d('0x26'),rs[_0x332d('0x27')](0x4)+_0x332d('0x3a'));fs[_0x332d('0x29')](_0x2476c6,_0x4defdc,{'encoding':'base64'});_0x106302=path[_0x332d('0x25')](__dirname,_0x332d('0x26'),rs[_0x332d('0x27')](0x4)+_0x332d('0x28'));return convertFile(_0x2476c6,_0x106302);})[_0x332d('0x2b')](function(){try{fs['unlink'](_0x2476c6);fs[_0x332d('0x3e')](_0x106302,'777');}catch(_0x4fe7f2){logger[_0x332d('0x17')](_0x4fe7f2);}logger[_0x332d('0x1d')](_0x332d('0x4a'),_0x106302[_0x332d('0x2e')]('.')[0x0]);return _0x106302[_0x332d('0x2e')]('.')[0x0];});};exports[_0x332d('0x4b')]=function(_0x2c6422,_0x232a57,_0x1cb90e){return google[_0x332d('0x4c')](_0x2c6422,_0x232a57,_0x1cb90e)[_0x332d('0x2b')](function(_0x3ed3f7){logger[_0x332d('0x1d')](_0x3ed3f7['uri']);return rp(_0x3ed3f7);})[_0x332d('0x2b')](function(_0x1c5fb7){var _0x4c7e9b='';var _0x401d6f=0x0;try{fs[_0x332d('0x2c')](_0x2c6422);}catch(_0x8320fe){logger[_0x332d('0x17')](_0x8320fe);}if(_0x1c5fb7&&_0x1c5fb7[_0x332d('0x4d')]){_0x4c7e9b=_0x1c5fb7[_0x332d('0x4d')][_0x332d('0x4e')](function(_0x34038e){return _0x34038e&&_0x34038e[_0x332d('0x4f')][0x0]&&_0x34038e[_0x332d('0x4f')][0x0][_0x332d('0x50')]?_0x34038e[_0x332d('0x4f')][0x0][_0x332d('0x50')]:'';})[_0x332d('0x51')]('\x0a');_0x401d6f=_0x1c5fb7[_0x332d('0x4d')][_0x332d('0x4e')](function(_0x5c1440){return _0x5c1440&&_0x5c1440[_0x332d('0x4f')][0x0]&&_0x5c1440[_0x332d('0x4f')][0x0][_0x332d('0x52')]?_0x5c1440[_0x332d('0x4f')][0x0][_0x332d('0x52')]:0x0;})[_0x332d('0x51')]('\x0a');}logger[_0x332d('0x1d')]('googleASR\x20transcription',_0x4c7e9b);logger['info'](_0x332d('0x53'),_0x401d6f);return{'transcript':_0x4c7e9b,'confidence':_0x401d6f};})[_0x332d('0x54')](function(_0x83adba){logger[_0x332d('0x17')](_0x332d('0x55'),_0x83adba[_0x332d('0x16')],_0x83adba[_0x332d('0x56')],_0x83adba[_0x332d('0x57')]);});};exports['googleDialogflow']=function(_0xbf09d5,_0x17cd92,_0x1a335e,_0x5426da){var _0x143475=apiai(_0x17cd92,{'language':_0x5426da||'en'});return _0x143475[_0x332d('0x58')](_0x1a335e,{'sessionId':md5(_0xbf09d5)})[_0x332d('0x2b')](function(_0x73e196){logger[_0x332d('0x1d')](JSON['stringify'](_0x73e196));return{'source':_0x73e196[_0x332d('0x59')][_0x332d('0x5a')],'resolvedQuery':_0x73e196['result'][_0x332d('0x5b')],'action':_0x73e196[_0x332d('0x59')][_0x332d('0x5c')],'actionIncomplete':_0x73e196[_0x332d('0x59')]['actionIncomplete'],'speech':_0x73e196[_0x332d('0x59')][_0x332d('0x5d')][_0x332d('0x5e')],'score':_0x73e196[_0x332d('0x59')][_0x332d('0x5f')],'statusCode':_0x73e196['status'][_0x332d('0x60')],'endConversation':_0x73e196['result'][_0x332d('0x61')][_0x332d('0x62')]||![],'isFallbackIntent':_0x73e196['result'][_0x332d('0x61')][_0x332d('0x63')]};});};exports[_0x332d('0x64')]=function(_0x395e5e,_0xbb543e,_0x14af3f,_0x3b87a1,_0x2c6c41,_0x250aca){var _0x543751=_0x3b87a1[_0x332d('0x65')](/\\n/g,'\x0a');var _0x2dd589={'credentials':{'private_key':_0x543751,'client_email':_0x14af3f}};var _0x41005d=new dialogflow[(_0x332d('0x66'))](_0x2dd589);var _0x32d8ff=_0x41005d[_0x332d('0x67')](_0xbb543e,md5(_0x395e5e));var _0x1dbcd4={'session':_0x32d8ff,'queryInput':{'text':{'text':_0x2c6c41,'languageCode':_0x250aca}}};return _0x41005d[_0x332d('0x68')](_0x1dbcd4)['then'](function(_0x583704){if(_0x583704&&_0x583704[_0x332d('0x69')]){logger[_0x332d('0x1d')](_0x332d('0x6a'),JSON[_0x332d('0x43')](_0x583704));var _0x378669=_0x583704[0x0];if(_0x378669){var _0x474fa6={'action':_0x378669[_0x332d('0x6b')][_0x332d('0x5c')],'allRequiredParamsPresent':_0x378669[_0x332d('0x6b')][_0x332d('0x6c')],'endConversation':_0x378669['queryResult'][_0x332d('0x6d')]&&_0x378669[_0x332d('0x6b')][_0x332d('0x6d')][_0x332d('0x6e')]?_0x378669[_0x332d('0x6b')][_0x332d('0x6d')][_0x332d('0x6e')][_0x332d('0x6f')]['boolValue']:![],'fulfillmentText':_0x378669['queryResult'][_0x332d('0x70')],'intentName':_0x378669['queryResult'][_0x332d('0x71')][_0x332d('0x56')],'intentDisplayName':_0x378669[_0x332d('0x6b')][_0x332d('0x71')][_0x332d('0x72')],'isFallbackIntent':_0x378669[_0x332d('0x6b')]['intent'][_0x332d('0x73')],'languageCode':_0x378669[_0x332d('0x6b')][_0x332d('0x74')],'queryText':_0x378669['queryResult']['queryText'],'responseId':_0x378669[_0x332d('0x75')],'score':_0x378669[_0x332d('0x6b')][_0x332d('0x76')],'speech':_0x378669['queryResult'][_0x332d('0x70')],'providerResponse':JSON['stringify'](_0x583704)};return _0x474fa6;}}});};exports[_0x332d('0x77')]=function(_0x977986,_0x5e5f8f,_0x2a09e2,_0xccf5d6){return tilde['asr'](_0x977986,_0x5e5f8f,_0x2a09e2,_0xccf5d6)[_0x332d('0x2b')](function(_0x3fac6e){try{fs[_0x332d('0x2c')](_0x977986);}catch(_0x2ff5bf){logger['error'](_0x2ff5bf);}logger['info'](_0x332d('0x78'),_0x3fac6e[_0x332d('0x50')]);logger[_0x332d('0x1d')](_0x332d('0x79'),_0x3fac6e[_0x332d('0x52')]);return _0x3fac6e;});};exports['awsPolly']=function(_0x2260fd,_0x175856,_0x1057f9,_0x555d6f,_0x15f64e,_0xd986d0){var _0x39367f=path[_0x332d('0x25')](__dirname,_0x332d('0x26'),rs[_0x332d('0x27')](0x4)+_0x332d('0x3a'));var _0x4d71c8;return aws['polly'](_0x2260fd,_0x175856,_0x1057f9,_0x555d6f,_0x15f64e,_0xd986d0,_0x39367f)['then'](function(){_0x4d71c8=path[_0x332d('0x25')](__dirname,_0x332d('0x26'),rs[_0x332d('0x27')](0x4)+'.wav');return convertFile(_0x39367f,_0x4d71c8);})[_0x332d('0x2b')](function(){try{fs['unlink'](_0x39367f);fs[_0x332d('0x3e')](_0x4d71c8,_0x332d('0x2d'));}catch(_0x302ab1){logger[_0x332d('0x17')](_0x302ab1);}return _0x4d71c8[_0x332d('0x2e')]('.')[0x0];});};exports[_0x332d('0x7a')]=function(_0xe9ee14,_0x2ed8d8,_0x3573fa,_0xe1edcc,_0x5a32f3,_0x276a29){return aws[_0x332d('0x7b')](_0xe9ee14,_0x2ed8d8,_0x3573fa,_0xe1edcc,_0x5a32f3,_0x276a29)[_0x332d('0x2b')](function(_0x289e8b){logger[_0x332d('0x1d')](JSON[_0x332d('0x43')](_0x289e8b));return _0x289e8b;});};exports[_0x332d('0x7c')]=function(_0x95683b,_0xf8d811,_0xe320b7,_0x188675){var _0x24ea8b=util['format'](_0x332d('0x7d'),ISPEECH_API,_0x95683b,encodeURIComponent(_0xf8d811),_0xe320b7,_0x188675);var _0x3e5f67=path[_0x332d('0x25')](__dirname,_0x332d('0x26'),rs['generate'](0x4)+_0x332d('0x3a'));var _0x87aaf8;return downloadFile(_0x24ea8b,_0x3e5f67)['then'](function(){_0x87aaf8=path[_0x332d('0x25')](__dirname,_0x332d('0x26'),rs['generate'](0x4)+_0x332d('0x28'));return convertFile(_0x3e5f67,_0x87aaf8);})[_0x332d('0x2b')](function(){try{fs[_0x332d('0x2c')](_0x3e5f67);fs[_0x332d('0x3e')](_0x87aaf8,_0x332d('0x2d'));}catch(_0x5f40c4){logger[_0x332d('0x17')](_0x5f40c4);}return _0x87aaf8['split']('.')[0x0];});};exports[_0x332d('0x7e')]=function(_0x330cc8,_0x1b4b13,_0x2472f1,_0x128da8){var _0x4682a8=util[_0x332d('0x7f')](_0x332d('0x80'),ISPEECH_API,_0x1b4b13,_0x2472f1,base64Encode(_0x330cc8),_0x128da8?util['format'](_0x332d('0x81'),encodeURIComponent(_0x128da8)):_0x332d('0x82'));return uploadFile(_0x4682a8)[_0x332d('0x2b')](function(_0x27e892){return querystring[_0x332d('0xa')](_0x27e892);});};exports[_0x332d('0x83')]=function(_0x8819dc,_0x570bd1){return sestek[_0x332d('0x84')](_0x8819dc,_0x570bd1)[_0x332d('0x2b')](function(_0x706004){logger[_0x332d('0x1d')](JSON[_0x332d('0x43')](_0x706004));var _0x886917={'speech':_0x706004['text'],'action':_0x706004[_0x332d('0x85')]?_0x706004['channelData']['CustomAction']:undefined,'actiondata':_0x706004[_0x332d('0x85')]?_0x706004[_0x332d('0x85')][_0x332d('0x86')]:undefined};if(_0x706004[_0x332d('0x85')]&&_0x706004['channelData'][_0x332d('0x87')]){return base64Decode(_0x706004[_0x332d('0x85')][_0x332d('0x87')]['Data'],path[_0x332d('0x25')](__dirname,'tmp',rs[_0x332d('0x27')](0x4)+_0x332d('0x28')))[_0x332d('0x2b')](function(_0x3a0520){_0x886917[_0x332d('0x88')]=_0x3a0520;return _0x886917;});}return _0x886917;});};exports[_0x332d('0x89')]=function(){return __dirname;};