97c89f5baf9da8d28af0b670d0052b69147665f0
[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 _0x2663=['catch','name','message','textRequest','result','resolvedQuery','action','actionIncomplete','status','code','metadata','endConversation','isFallbackIntent','googleDialogflowV2','replace','SessionsClient','sessionPath','detectIntent','Dialogflow\x20V2\x20response:','queryResult','allRequiredParamsPresent','fields','end_conversation','intent','displayName','isFallback','queryText','intentDetectionConfidence','fulfillmentText','tildeASR','Tilde\x20ASR\x20transcription','Tilde\x20ASR\x20confidence','awsPolly','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','model=%s','freeform=3','sestekNDA','nda','text','channelData','CustomAction','AudioFromTts','Data','audiofile','dirName','apiai-promise','bluebird','dialogflow','http','md5','path','querystring','request-promise','randomstring','google-tts-api','parse','./google','./sestek','./tilde','agi','https://api.ispeech.org/api/rest','protocol','get','statusCode','error','request\x20to\x20','\x20failed,\x20status\x20code\x20=\x20','statusMessage','finish','info','finish\x20download\x20file','unlink','download\x20error','pipe','end','https:','host','transcode','wav','error\x20convert','finish\x20to\x20convert','start','resolve','tmp','generate','.wav','writeFileSync','base64','then','chmodSync','777','readFileSync','toString','googleCloudTTS','https://texttospeech.googleapis.com/v1/','?key=','ssml','input','voice','audioConfig','MP3','POST','.mp3','from','audioContent','googleCloudTTS\x20path','split','googleTTS','utf8','application/x-www-form-urlencoded','stringify','jQ1olc','null','generic','parse\x20response\x20failed:\x0a','length','text\x20length\x20limit\x20reached','lang\x20\x22','\x22\x20might\x20not\x20exist','goggleTTS\x20path','asr','uri','results','map','alternatives','transcript','join','confidence','googleASR\x20transcription','googleASR\x20confidence'];(function(_0x13988c,_0x5bf95e){var _0x2617a2=function(_0x4b363f){while(--_0x4b363f){_0x13988c['push'](_0x13988c['shift']());}};_0x2617a2(++_0x5bf95e);}(_0x2663,0xb7));var _0x3266=function(_0x3f0c06,_0x3d0ecf){_0x3f0c06=_0x3f0c06-0x0;var _0x507d9f=_0x2663[_0x3f0c06];return _0x507d9f;};'use strict';var apiai=require(_0x3266('0x0'));var BPromise=require(_0x3266('0x1'));var dialogflow=require(_0x3266('0x2'));var fs=require('fs');var http=require(_0x3266('0x3'));var https=require('https');var md5=require(_0x3266('0x4'));var path=require(_0x3266('0x5'));var querystring=require(_0x3266('0x6'));var rp=require(_0x3266('0x7'));var rs=require(_0x3266('0x8'));var sox=require('sox');var tts=require(_0x3266('0x9'));var urlParse=require('url')[_0x3266('0xa')];var util=require('util');var aws=require('./aws');var google=require(_0x3266('0xb'));var sestek=require(_0x3266('0xc'));var tilde=require(_0x3266('0xd'));var logger=require('../../../config/logger')(_0x3266('0xe'));var ISPEECH_API=_0x3266('0xf');function downloadFile(_0x4f6d59,_0x1f8892){return new BPromise(function(_0x296cbf,_0x3bb0d8){var _0x5b1790=urlParse(_0x4f6d59);var _0x12c960=_0x5b1790[_0x3266('0x10')]==='https:'?https:http;var _0x23e9a3={'host':_0x5b1790['host'],'path':_0x5b1790[_0x3266('0x5')],'headers':{'user-agent':'WHAT_EVER'}};_0x12c960[_0x3266('0x11')](_0x23e9a3,function(_0x2c38e7){if(_0x2c38e7[_0x3266('0x12')]!==0xc8){logger[_0x3266('0x13')](_0x3266('0x14')+_0x4f6d59+_0x3266('0x15')+_0x2c38e7[_0x3266('0x12')]+'\x20('+_0x2c38e7[_0x3266('0x16')]+')');_0x3bb0d8(new Error(_0x3266('0x14')+_0x4f6d59+_0x3266('0x15')+_0x2c38e7[_0x3266('0x12')]+'\x20('+_0x2c38e7[_0x3266('0x16')]+')'));return;}var _0x2e09ce=fs['createWriteStream'](_0x1f8892);_0x2e09ce['on'](_0x3266('0x17'),function(){logger[_0x3266('0x18')](_0x3266('0x19'));_0x2e09ce['close'](_0x296cbf);});_0x2e09ce['on'](_0x3266('0x13'),function(_0x52e1dd){fs[_0x3266('0x1a')](_0x1f8892);logger['error'](_0x3266('0x1b'),_0x52e1dd);_0x3bb0d8(_0x52e1dd);});_0x2c38e7[_0x3266('0x1c')](_0x2e09ce);})['on'](_0x3266('0x13'),function(_0x56daf3){logger['error'](_0x56daf3);_0x3bb0d8(_0x56daf3);})[_0x3266('0x1d')]();});}function uploadFile(_0x583acc){return new BPromise(function(_0x4673d6,_0x5587c9){var _0x54af0f=urlParse(_0x583acc);var _0x83e8f3=_0x54af0f[_0x3266('0x10')]===_0x3266('0x1e')?https:http;var _0x392ffb={'host':_0x54af0f[_0x3266('0x1f')],'path':_0x54af0f[_0x3266('0x5')],'headers':{'user-agent':'WHAT_EVER'}};_0x83e8f3[_0x3266('0x11')](_0x392ffb,function(_0x372bbc){if(_0x372bbc['statusCode']!==0xc8){_0x5587c9(new Error(_0x3266('0x14')+_0x583acc+_0x3266('0x15')+_0x372bbc[_0x3266('0x12')]+'\x20('+_0x372bbc['statusMessage']+')'));return;}var _0x562f32='';_0x372bbc['on']('data',function(_0x39a204){_0x562f32+=_0x39a204;});_0x372bbc['on'](_0x3266('0x1d'),function(){_0x4673d6(_0x562f32);});})['on'](_0x3266('0x13'),function(_0x500fe3){_0x5587c9(_0x500fe3);})[_0x3266('0x1d')]();});}function convertFile(_0x2b23a4,_0x5d8adb){return new BPromise(function(_0x339f77,_0x301acd){var _0x8f5cf7=sox[_0x3266('0x20')](_0x2b23a4,_0x5d8adb,{'sampleRate':0x1f40,'format':_0x3266('0x21'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x8f5cf7['on'](_0x3266('0x13'),function(_0x59605f){logger[_0x3266('0x13')](_0x3266('0x22'),_0x59605f);_0x301acd(_0x59605f);});_0x8f5cf7['on'](_0x3266('0x1d'),function(){logger[_0x3266('0x18')](_0x3266('0x23'));_0x339f77();});_0x8f5cf7[_0x3266('0x24')]();});}function base64Decode(_0x366e7b,_0x3fb804){var _0x2d8fc0=path[_0x3266('0x25')](__dirname,_0x3266('0x26'),rs[_0x3266('0x27')](0x4)+_0x3266('0x28'));fs[_0x3266('0x29')](_0x2d8fc0,_0x366e7b,_0x3266('0x2a'));return convertFile(_0x2d8fc0,_0x3fb804)[_0x3266('0x2b')](function(){try{fs[_0x3266('0x1a')](_0x2d8fc0);fs[_0x3266('0x2c')](_0x3fb804,_0x3266('0x2d'));}catch(_0x1f34c7){logger[_0x3266('0x13')](_0x1f34c7);}return _0x3fb804['split']('.')[0x0];});}function base64Encode(_0xc4be9f){var _0xc3c882=fs[_0x3266('0x2e')](_0xc4be9f);return new Buffer(_0xc3c882)[_0x3266('0x2f')]('base64');}exports[_0x3266('0x30')]=function(_0x3fd865,_0x806e08,_0x5d7922,_0x3db332,_0xc1e96c,_0x158e5e){var _0x1dd819,_0x554178;var _0x510dbb=_0x3266('0x31');var _0x29deb7=_0x3266('0x32')+_0x3fd865;var _0x4d7df5={};if(_0x806e08===_0x3266('0x33')){_0x4d7df5[_0x3266('0x34')]={'ssml':_0x5d7922};}else{_0x4d7df5[_0x3266('0x34')]={'text':_0x5d7922};};_0x4d7df5[_0x3266('0x35')]={'languageCode':_0x3db332,'ssmlGender':_0xc1e96c};_0x4d7df5[_0x3266('0x36')]={'audioEncoding':_0x3266('0x37'),'sampleRateHertz':0x1f40};var _0x1ccfb5={'url':_0x510dbb+'text:synthesize'+_0x29deb7,'method':_0x3266('0x38'),'json':!![],'body':_0x4d7df5};return rp(_0x1ccfb5)[_0x3266('0x2b')](function(_0x1317ba){return new BPromise(function(_0x34d77a,_0x1d6689){_0x1dd819=path[_0x3266('0x25')](__dirname,_0x3266('0x26'),rs[_0x3266('0x27')](0x4)+_0x3266('0x39'));var _0x3e82ec=Buffer[_0x3266('0x3a')](_0x1317ba[_0x3266('0x3b')],_0x3266('0x2a'));return fs['writeFile'](_0x1dd819,_0x3e82ec,function(_0x5b3985){_0x1d6689(_0x5b3985);},function(_0x562247){fs['chmodSync'](_0x1dd819,_0x3266('0x2d'));_0x34d77a(_0x562247);});});})[_0x3266('0x2b')](function(_0x18a632){_0x554178=path[_0x3266('0x25')](__dirname,_0x3266('0x26'),rs[_0x3266('0x27')](0x4)+'.wav');return convertFile(_0x1dd819,_0x554178);})[_0x3266('0x2b')](function(){try{fs[_0x3266('0x1a')](_0x1dd819);fs['chmodSync'](_0x554178,_0x3266('0x2d'));}catch(_0x599f68){logger['error'](_0x599f68);}logger[_0x3266('0x18')](_0x3266('0x3c'),_0x554178[_0x3266('0x3d')]('.')[0x0]);return _0x554178[_0x3266('0x3d')]('.')[0x0];});};exports[_0x3266('0x3e')]=function(_0x37e29d,_0x186232){var _0x15f94a='https://translate.google.com/_/TranslateWebserverUi/data/batchexecute';var _0x403882,_0x2d12f7;var _0x2745ee;var _0x53a50f={'encoding':_0x3266('0x3f'),'method':_0x3266('0x38'),'timeout':0x2710,'url':_0x15f94a,'headers':{'Content-Type':_0x3266('0x40')},'body':'f.req='+encodeURIComponent(JSON[_0x3266('0x41')]([[[_0x3266('0x42'),JSON[_0x3266('0x41')]([_0x37e29d,_0x186232||'en',![],_0x3266('0x43')]),null,_0x3266('0x44')]]]))};return rp(_0x53a50f)[_0x3266('0x2b')](function(_0x4c7fe1){try{_0x2745ee=eval(_0x4c7fe1['slice'](0x5))[0x0][0x2];}catch(_0xc7a6fa){throw new Error(_0x3266('0x45')+_0x4c7fe1['data']);}if(!_0x2745ee){if(_0x37e29d[_0x3266('0x46')]>0xc8){throw new Error(_0x3266('0x47'));}else{throw new Error(_0x3266('0x48')+_0x186232+_0x3266('0x49'));}}try{_0x2745ee=eval(_0x2745ee)[0x0];}catch(_0x47863f){throw new Error('parse\x20response\x20failed:\x0a'+res['data']);}const _0x5394b4=_0x2745ee;_0x403882=path[_0x3266('0x25')](__dirname,_0x3266('0x26'),rs[_0x3266('0x27')](0x4)+_0x3266('0x39'));fs[_0x3266('0x29')](_0x403882,_0x2745ee,{'encoding':_0x3266('0x2a')});_0x2d12f7=path[_0x3266('0x25')](__dirname,_0x3266('0x26'),rs['generate'](0x4)+_0x3266('0x28'));return convertFile(_0x403882,_0x2d12f7);})[_0x3266('0x2b')](function(){try{fs[_0x3266('0x1a')](_0x403882);fs['chmodSync'](_0x2d12f7,_0x3266('0x2d'));}catch(_0x47e35d){logger[_0x3266('0x13')](_0x47e35d);}logger['info'](_0x3266('0x4a'),_0x2d12f7[_0x3266('0x3d')]('.')[0x0]);return _0x2d12f7['split']('.')[0x0];});};exports['googleASR']=function(_0x4bcb4f,_0x42c483,_0x19610c){return google[_0x3266('0x4b')](_0x4bcb4f,_0x42c483,_0x19610c)['then'](function(_0x2dae33){logger[_0x3266('0x18')](_0x2dae33[_0x3266('0x4c')]);return rp(_0x2dae33);})[_0x3266('0x2b')](function(_0x3119ad){var _0x1f2114='';var _0x3687d9=0x0;try{fs['unlink'](_0x4bcb4f);}catch(_0x469eb6){logger['error'](_0x469eb6);}if(_0x3119ad&&_0x3119ad[_0x3266('0x4d')]){_0x1f2114=_0x3119ad[_0x3266('0x4d')][_0x3266('0x4e')](function(_0x1eeeb9){return _0x1eeeb9&&_0x1eeeb9['alternatives'][0x0]&&_0x1eeeb9[_0x3266('0x4f')][0x0][_0x3266('0x50')]?_0x1eeeb9[_0x3266('0x4f')][0x0][_0x3266('0x50')]:'';})[_0x3266('0x51')]('\x0a');_0x3687d9=_0x3119ad[_0x3266('0x4d')]['map'](function(_0x5400e2){return _0x5400e2&&_0x5400e2[_0x3266('0x4f')][0x0]&&_0x5400e2[_0x3266('0x4f')][0x0][_0x3266('0x52')]?_0x5400e2['alternatives'][0x0][_0x3266('0x52')]:0x0;})[_0x3266('0x51')]('\x0a');}logger[_0x3266('0x18')](_0x3266('0x53'),_0x1f2114);logger[_0x3266('0x18')](_0x3266('0x54'),_0x3687d9);return{'transcript':_0x1f2114,'confidence':_0x3687d9};})[_0x3266('0x55')](function(_0x295837){logger[_0x3266('0x13')]('[%s]\x20%s:%s',_0x295837[_0x3266('0x12')],_0x295837[_0x3266('0x56')],_0x295837[_0x3266('0x57')]);});};exports['googleDialogflow']=function(_0x3e0e45,_0x3862dc,_0x36126d,_0x43cb35){var _0x2a4dfa=apiai(_0x3862dc,{'language':_0x43cb35||'en'});return _0x2a4dfa[_0x3266('0x58')](_0x36126d,{'sessionId':md5(_0x3e0e45)})[_0x3266('0x2b')](function(_0x4839bb){logger[_0x3266('0x18')](JSON['stringify'](_0x4839bb));return{'source':_0x4839bb['result']['source'],'resolvedQuery':_0x4839bb[_0x3266('0x59')][_0x3266('0x5a')],'action':_0x4839bb['result'][_0x3266('0x5b')],'actionIncomplete':_0x4839bb['result'][_0x3266('0x5c')],'speech':_0x4839bb['result']['fulfillment']['speech'],'score':_0x4839bb['result']['score'],'statusCode':_0x4839bb[_0x3266('0x5d')][_0x3266('0x5e')],'endConversation':_0x4839bb['result'][_0x3266('0x5f')][_0x3266('0x60')]||![],'isFallbackIntent':_0x4839bb[_0x3266('0x59')][_0x3266('0x5f')][_0x3266('0x61')]};});};exports[_0x3266('0x62')]=function(_0x26a469,_0x354dfa,_0x4108fa,_0x4c9b44,_0x342b65,_0x55a0f0){var _0x15b6d6=_0x4c9b44[_0x3266('0x63')](/\\n/g,'\x0a');var _0x2917ac={'credentials':{'private_key':_0x15b6d6,'client_email':_0x4108fa}};var _0x48140e=new dialogflow[(_0x3266('0x64'))](_0x2917ac);var _0x2dc80f=_0x48140e[_0x3266('0x65')](_0x354dfa,md5(_0x26a469));var _0x4435de={'session':_0x2dc80f,'queryInput':{'text':{'text':_0x342b65,'languageCode':_0x55a0f0}}};return _0x48140e[_0x3266('0x66')](_0x4435de)['then'](function(_0x105f68){if(_0x105f68&&_0x105f68[_0x3266('0x46')]){logger['info'](_0x3266('0x67'),JSON[_0x3266('0x41')](_0x105f68));var _0x1c61f7=_0x105f68[0x0];if(_0x1c61f7){var _0x1c95a0={'action':_0x1c61f7[_0x3266('0x68')]['action'],'allRequiredParamsPresent':_0x1c61f7[_0x3266('0x68')][_0x3266('0x69')],'endConversation':_0x1c61f7[_0x3266('0x68')]['diagnosticInfo']&&_0x1c61f7[_0x3266('0x68')]['diagnosticInfo']['fields']?_0x1c61f7[_0x3266('0x68')]['diagnosticInfo'][_0x3266('0x6a')][_0x3266('0x6b')]['boolValue']:![],'fulfillmentText':_0x1c61f7['queryResult']['fulfillmentText'],'intentName':_0x1c61f7['queryResult']['intent'][_0x3266('0x56')],'intentDisplayName':_0x1c61f7[_0x3266('0x68')][_0x3266('0x6c')][_0x3266('0x6d')],'isFallbackIntent':_0x1c61f7[_0x3266('0x68')][_0x3266('0x6c')][_0x3266('0x6e')],'languageCode':_0x1c61f7['queryResult']['languageCode'],'queryText':_0x1c61f7[_0x3266('0x68')][_0x3266('0x6f')],'responseId':_0x1c61f7['responseId'],'score':_0x1c61f7[_0x3266('0x68')][_0x3266('0x70')],'speech':_0x1c61f7['queryResult'][_0x3266('0x71')],'providerResponse':JSON[_0x3266('0x41')](_0x105f68)};return _0x1c95a0;}}});};exports[_0x3266('0x72')]=function(_0x2f1ed6,_0x487c82,_0x2f6e54,_0x216222){return tilde[_0x3266('0x4b')](_0x2f1ed6,_0x487c82,_0x2f6e54,_0x216222)[_0x3266('0x2b')](function(_0x2aaf4a){try{fs[_0x3266('0x1a')](_0x2f1ed6);}catch(_0x34654d){logger['error'](_0x34654d);}logger[_0x3266('0x18')](_0x3266('0x73'),_0x2aaf4a[_0x3266('0x50')]);logger[_0x3266('0x18')](_0x3266('0x74'),_0x2aaf4a[_0x3266('0x52')]);return _0x2aaf4a;});};exports[_0x3266('0x75')]=function(_0x39e6b7,_0x337b19,_0xb156e6,_0x2d0dee,_0x157e58,_0x8f35b0){var _0x3866aa=path[_0x3266('0x25')](__dirname,_0x3266('0x26'),rs[_0x3266('0x27')](0x4)+'.mp3');var _0x13b664;return aws['polly'](_0x39e6b7,_0x337b19,_0xb156e6,_0x2d0dee,_0x157e58,_0x8f35b0,_0x3866aa)[_0x3266('0x2b')](function(){_0x13b664=path['resolve'](__dirname,_0x3266('0x26'),rs[_0x3266('0x27')](0x4)+_0x3266('0x28'));return convertFile(_0x3866aa,_0x13b664);})[_0x3266('0x2b')](function(){try{fs[_0x3266('0x1a')](_0x3866aa);fs[_0x3266('0x2c')](_0x13b664,_0x3266('0x2d'));}catch(_0x126cb5){logger[_0x3266('0x13')](_0x126cb5);}return _0x13b664[_0x3266('0x3d')]('.')[0x0];});};exports['awsLex']=function(_0x19cad9,_0x2848c9,_0x221196,_0x9777d2,_0x26ec0c,_0x41380a){return aws[_0x3266('0x76')](_0x19cad9,_0x2848c9,_0x221196,_0x9777d2,_0x26ec0c,_0x41380a)[_0x3266('0x2b')](function(_0x5532ab){logger['info'](JSON[_0x3266('0x41')](_0x5532ab));return _0x5532ab;});};exports[_0x3266('0x77')]=function(_0x269b02,_0x29604c,_0x134cb3,_0xa570dd){var _0x141f1b=util[_0x3266('0x78')](_0x3266('0x79'),ISPEECH_API,_0x269b02,encodeURIComponent(_0x29604c),_0x134cb3,_0xa570dd);var _0x4427a7=path[_0x3266('0x25')](__dirname,'tmp',rs[_0x3266('0x27')](0x4)+_0x3266('0x39'));var _0x214c27;return downloadFile(_0x141f1b,_0x4427a7)[_0x3266('0x2b')](function(){_0x214c27=path[_0x3266('0x25')](__dirname,_0x3266('0x26'),rs[_0x3266('0x27')](0x4)+_0x3266('0x28'));return convertFile(_0x4427a7,_0x214c27);})['then'](function(){try{fs[_0x3266('0x1a')](_0x4427a7);fs[_0x3266('0x2c')](_0x214c27,_0x3266('0x2d'));}catch(_0x1b3d14){logger[_0x3266('0x13')](_0x1b3d14);}return _0x214c27[_0x3266('0x3d')]('.')[0x0];});};exports['ispeechASR']=function(_0x403671,_0x430ca5,_0x1f58ab,_0x168ad2){var _0x55ee55=util[_0x3266('0x78')](_0x3266('0x7a'),ISPEECH_API,_0x430ca5,_0x1f58ab,base64Encode(_0x403671),_0x168ad2?util[_0x3266('0x78')](_0x3266('0x7b'),encodeURIComponent(_0x168ad2)):_0x3266('0x7c'));return uploadFile(_0x55ee55)[_0x3266('0x2b')](function(_0x22cdcd){return querystring[_0x3266('0xa')](_0x22cdcd);});};exports[_0x3266('0x7d')]=function(_0x12b173,_0x33290e){return sestek[_0x3266('0x7e')](_0x12b173,_0x33290e)[_0x3266('0x2b')](function(_0x44bdbc){logger[_0x3266('0x18')](JSON[_0x3266('0x41')](_0x44bdbc));var _0x427da0={'speech':_0x44bdbc[_0x3266('0x7f')],'action':_0x44bdbc[_0x3266('0x80')]?_0x44bdbc[_0x3266('0x80')][_0x3266('0x81')]:undefined,'actiondata':_0x44bdbc['channelData']?_0x44bdbc['channelData']['CustomActionData']:undefined};if(_0x44bdbc['channelData']&&_0x44bdbc[_0x3266('0x80')][_0x3266('0x82')]){return base64Decode(_0x44bdbc[_0x3266('0x80')][_0x3266('0x82')][_0x3266('0x83')],path[_0x3266('0x25')](__dirname,'tmp',rs['generate'](0x4)+_0x3266('0x28')))['then'](function(_0x2d8864){_0x427da0[_0x3266('0x84')]=_0x2d8864;return _0x427da0;});}return _0x427da0;});};exports[_0x3266('0x85')]=function(){return __dirname;};