Built motion from commit (unavailable).|2.5.29
[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 _0xe40a=['POST','.mp3','from','writeFile','googleCloudTTS\x20path','split','googleTTS','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','utf8','application/x-www-form-urlencoded','f.req=','jQ1olc','null','slice','parse\x20response\x20failed:\x0a','length','text\x20length\x20limit\x20reached','goggleTTS\x20path','googleASR','asr','results','map','transcript','alternatives','join','confidence','googleASR\x20transcription','catch','name','message','googleDialogflow','textRequest','source','result','resolvedQuery','action','fulfillment','speech','status','metadata','endConversation','isFallbackIntent','googleDialogflowV2','replace','SessionsClient','sessionPath','Dialogflow\x20V2\x20response:','stringify','queryResult','allRequiredParamsPresent','diagnosticInfo','fields','end_conversation','boolValue','fulfillmentText','intent','displayName','isFallback','languageCode','queryText','responseId','Tilde\x20ASR\x20transcription','lex','format','%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3','ispeechASR','%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s','model=%s','sestekNDA','nda','channelData','CustomActionData','AudioFromTts','Data','audiofile','dirName','apiai-promise','bluebird','dialogflow','http','https','md5','sox','google-tts-api','url','util','./aws','./sestek','../../../config/logger','agi','https://api.ispeech.org/api/rest','https:','host','WHAT_EVER','get','statusCode','request\x20to\x20','\x20failed,\x20status\x20code\x20=\x20','statusMessage','createWriteStream','finish','info','finish\x20download\x20file','close','unlink','error','download\x20error','pipe','end','path','data','wav','error\x20convert','finish\x20to\x20convert','resolve','tmp','generate','.wav','writeFileSync','base64','then','chmodSync','777','readFileSync','toString','googleCloudTTS','https://texttospeech.googleapis.com/v1/','?key=','ssml','input','voice','MP3','text:synthesize'];(function(_0x54a044,_0x15dc35){var _0x179792=function(_0x7e0e2c){while(--_0x7e0e2c){_0x54a044['push'](_0x54a044['shift']());}};_0x179792(++_0x15dc35);}(_0xe40a,0x1db));var _0xae40=function(_0x4c14f5,_0x2b6174){_0x4c14f5=_0x4c14f5-0x0;var _0x10098f=_0xe40a[_0x4c14f5];return _0x10098f;};'use strict';var apiai=require(_0xae40('0x0'));var BPromise=require(_0xae40('0x1'));var dialogflow=require(_0xae40('0x2'));var fs=require('fs');var http=require(_0xae40('0x3'));var https=require(_0xae40('0x4'));var md5=require(_0xae40('0x5'));var path=require('path');var querystring=require('querystring');var rp=require('request-promise');var rs=require('randomstring');var sox=require(_0xae40('0x6'));var tts=require(_0xae40('0x7'));var urlParse=require(_0xae40('0x8'))['parse'];var util=require(_0xae40('0x9'));var aws=require(_0xae40('0xa'));var google=require('./google');var sestek=require(_0xae40('0xb'));var tilde=require('./tilde');var logger=require(_0xae40('0xc'))(_0xae40('0xd'));var ISPEECH_API=_0xae40('0xe');function downloadFile(_0xd899dc,_0xd6b8d7){return new BPromise(function(_0x16a15d,_0x15db32){var _0xf33765=urlParse(_0xd899dc);var _0x453e12=_0xf33765['protocol']===_0xae40('0xf')?https:http;var _0xf1e1bb={'host':_0xf33765[_0xae40('0x10')],'path':_0xf33765['path'],'headers':{'user-agent':_0xae40('0x11')}};_0x453e12[_0xae40('0x12')](_0xf1e1bb,function(_0x17ba95){if(_0x17ba95[_0xae40('0x13')]!==0xc8){logger['error'](_0xae40('0x14')+_0xd899dc+_0xae40('0x15')+_0x17ba95[_0xae40('0x13')]+'\x20('+_0x17ba95[_0xae40('0x16')]+')');_0x15db32(new Error(_0xae40('0x14')+_0xd899dc+'\x20failed,\x20status\x20code\x20=\x20'+_0x17ba95[_0xae40('0x13')]+'\x20('+_0x17ba95[_0xae40('0x16')]+')'));return;}var _0x4e7ad9=fs[_0xae40('0x17')](_0xd6b8d7);_0x4e7ad9['on'](_0xae40('0x18'),function(){logger[_0xae40('0x19')](_0xae40('0x1a'));_0x4e7ad9[_0xae40('0x1b')](_0x16a15d);});_0x4e7ad9['on']('error',function(_0x332cec){fs[_0xae40('0x1c')](_0xd6b8d7);logger[_0xae40('0x1d')](_0xae40('0x1e'),_0x332cec);_0x15db32(_0x332cec);});_0x17ba95[_0xae40('0x1f')](_0x4e7ad9);})['on']('error',function(_0x45c8af){logger['error'](_0x45c8af);_0x15db32(_0x45c8af);})[_0xae40('0x20')]();});}function uploadFile(_0x3a3322){return new BPromise(function(_0x54c258,_0xb2f6c6){var _0x36bd31=urlParse(_0x3a3322);var _0x4a1307=_0x36bd31['protocol']===_0xae40('0xf')?https:http;var _0x3ee474={'host':_0x36bd31[_0xae40('0x10')],'path':_0x36bd31[_0xae40('0x21')],'headers':{'user-agent':'WHAT_EVER'}};_0x4a1307[_0xae40('0x12')](_0x3ee474,function(_0xd432b7){if(_0xd432b7[_0xae40('0x13')]!==0xc8){_0xb2f6c6(new Error(_0xae40('0x14')+_0x3a3322+_0xae40('0x15')+_0xd432b7[_0xae40('0x13')]+'\x20('+_0xd432b7[_0xae40('0x16')]+')'));return;}var _0x445874='';_0xd432b7['on'](_0xae40('0x22'),function(_0x173699){_0x445874+=_0x173699;});_0xd432b7['on'](_0xae40('0x20'),function(){_0x54c258(_0x445874);});})['on'](_0xae40('0x1d'),function(_0x3cfc8b){_0xb2f6c6(_0x3cfc8b);})['end']();});}function convertFile(_0x2ff0a3,_0x33e191){return new BPromise(function(_0x4054f3,_0x1f4746){var _0xc55c52=sox['transcode'](_0x2ff0a3,_0x33e191,{'sampleRate':0x1f40,'format':_0xae40('0x23'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0xc55c52['on'](_0xae40('0x1d'),function(_0x4ec407){logger[_0xae40('0x1d')](_0xae40('0x24'),_0x4ec407);_0x1f4746(_0x4ec407);});_0xc55c52['on'](_0xae40('0x20'),function(){logger[_0xae40('0x19')](_0xae40('0x25'));_0x4054f3();});_0xc55c52['start']();});}function base64Decode(_0x482753,_0x2b2af7){var _0xcbd74c=path[_0xae40('0x26')](__dirname,_0xae40('0x27'),rs[_0xae40('0x28')](0x4)+_0xae40('0x29'));fs[_0xae40('0x2a')](_0xcbd74c,_0x482753,_0xae40('0x2b'));return convertFile(_0xcbd74c,_0x2b2af7)[_0xae40('0x2c')](function(){try{fs['unlink'](_0xcbd74c);fs[_0xae40('0x2d')](_0x2b2af7,_0xae40('0x2e'));}catch(_0x7b4284){logger[_0xae40('0x1d')](_0x7b4284);}return _0x2b2af7['split']('.')[0x0];});}function base64Encode(_0x4daffa){var _0x52ab8d=fs[_0xae40('0x2f')](_0x4daffa);return new Buffer(_0x52ab8d)[_0xae40('0x30')](_0xae40('0x2b'));}exports[_0xae40('0x31')]=function(_0x36cb42,_0x1d5f22,_0x207022,_0x523855,_0x560226,_0x3ffabc){var _0x137187,_0x2dd6a7;var _0x881083=_0xae40('0x32');var _0x5a4d8b=_0xae40('0x33')+_0x36cb42;var _0x1ed36c={};if(_0x1d5f22===_0xae40('0x34')){_0x1ed36c['input']={'ssml':_0x207022};}else{_0x1ed36c[_0xae40('0x35')]={'text':_0x207022};};_0x1ed36c[_0xae40('0x36')]={'languageCode':_0x523855,'ssmlGender':_0x560226};_0x1ed36c['audioConfig']={'audioEncoding':_0xae40('0x37'),'sampleRateHertz':0x1f40};var _0x5265d6={'url':_0x881083+_0xae40('0x38')+_0x5a4d8b,'method':_0xae40('0x39'),'json':!![],'body':_0x1ed36c};return rp(_0x5265d6)['then'](function(_0x3cdc7e){return new BPromise(function(_0x26e1d4,_0x294ebe){_0x137187=path[_0xae40('0x26')](__dirname,'tmp',rs[_0xae40('0x28')](0x4)+_0xae40('0x3a'));var _0x1e3f0a=Buffer[_0xae40('0x3b')](_0x3cdc7e['audioContent'],'base64');return fs[_0xae40('0x3c')](_0x137187,_0x1e3f0a,function(_0x26e765){_0x294ebe(_0x26e765);},function(_0x431903){fs[_0xae40('0x2d')](_0x137187,_0xae40('0x2e'));_0x26e1d4(_0x431903);});});})[_0xae40('0x2c')](function(_0x1b6585){_0x2dd6a7=path[_0xae40('0x26')](__dirname,_0xae40('0x27'),rs[_0xae40('0x28')](0x4)+'.wav');return convertFile(_0x137187,_0x2dd6a7);})['then'](function(){try{fs[_0xae40('0x1c')](_0x137187);fs[_0xae40('0x2d')](_0x2dd6a7,_0xae40('0x2e'));}catch(_0x2fc14d){logger['error'](_0x2fc14d);}logger['info'](_0xae40('0x3d'),_0x2dd6a7[_0xae40('0x3e')]('.')[0x0]);return _0x2dd6a7['split']('.')[0x0];});};exports[_0xae40('0x3f')]=function(_0x3e9615,_0x414a74){var _0x3def6b=_0xae40('0x40');var _0xeef7eb,_0x22e842;var _0x1fc25b;var _0x13adf3={'encoding':_0xae40('0x41'),'method':'POST','timeout':0x2710,'url':_0x3def6b,'headers':{'Content-Type':_0xae40('0x42')},'body':_0xae40('0x43')+encodeURIComponent(JSON['stringify']([[[_0xae40('0x44'),JSON['stringify']([_0x3e9615,_0x414a74||'en',![],_0xae40('0x45')]),null,'generic']]]))};return rp(_0x13adf3)['then'](function(_0x15c9cb){try{_0x1fc25b=eval(_0x15c9cb[_0xae40('0x46')](0x5))[0x0][0x2];}catch(_0x15897f){throw new Error(_0xae40('0x47')+_0x15c9cb[_0xae40('0x22')]);}if(!_0x1fc25b){if(_0x3e9615[_0xae40('0x48')]>0xc8){throw new Error(_0xae40('0x49'));}else{throw new Error('lang\x20\x22'+_0x414a74+'\x22\x20might\x20not\x20exist');}}try{_0x1fc25b=eval(_0x1fc25b)[0x0];}catch(_0x38edd0){throw new Error(_0xae40('0x47')+res['data']);}const _0x51b866=_0x1fc25b;_0xeef7eb=path[_0xae40('0x26')](__dirname,_0xae40('0x27'),rs['generate'](0x4)+_0xae40('0x3a'));fs[_0xae40('0x2a')](_0xeef7eb,_0x1fc25b,{'encoding':_0xae40('0x2b')});_0x22e842=path[_0xae40('0x26')](__dirname,_0xae40('0x27'),rs[_0xae40('0x28')](0x4)+_0xae40('0x29'));return convertFile(_0xeef7eb,_0x22e842);})[_0xae40('0x2c')](function(){try{fs['unlink'](_0xeef7eb);fs[_0xae40('0x2d')](_0x22e842,_0xae40('0x2e'));}catch(_0x8ca903){logger[_0xae40('0x1d')](_0x8ca903);}logger[_0xae40('0x19')](_0xae40('0x4a'),_0x22e842[_0xae40('0x3e')]('.')[0x0]);return _0x22e842['split']('.')[0x0];});};exports[_0xae40('0x4b')]=function(_0x4cca1a,_0x23f4d4,_0x2e1014){return google[_0xae40('0x4c')](_0x4cca1a,_0x23f4d4,_0x2e1014)['then'](function(_0x57c131){logger[_0xae40('0x19')](_0x57c131['uri']);return rp(_0x57c131);})[_0xae40('0x2c')](function(_0x44c020){var _0x1320da='';var _0xf86d9e=0x0;try{fs[_0xae40('0x1c')](_0x4cca1a);}catch(_0x2398f5){logger[_0xae40('0x1d')](_0x2398f5);}if(_0x44c020&&_0x44c020[_0xae40('0x4d')]){_0x1320da=_0x44c020[_0xae40('0x4d')][_0xae40('0x4e')](function(_0x1c7ae2){return _0x1c7ae2&&_0x1c7ae2['alternatives'][0x0]&&_0x1c7ae2['alternatives'][0x0][_0xae40('0x4f')]?_0x1c7ae2[_0xae40('0x50')][0x0]['transcript']:'';})[_0xae40('0x51')]('\x0a');_0xf86d9e=_0x44c020['results']['map'](function(_0x21edff){return _0x21edff&&_0x21edff['alternatives'][0x0]&&_0x21edff[_0xae40('0x50')][0x0][_0xae40('0x52')]?_0x21edff[_0xae40('0x50')][0x0][_0xae40('0x52')]:0x0;})['join']('\x0a');}logger['info'](_0xae40('0x53'),_0x1320da);logger[_0xae40('0x19')]('googleASR\x20confidence',_0xf86d9e);return{'transcript':_0x1320da,'confidence':_0xf86d9e};})[_0xae40('0x54')](function(_0x158352){logger[_0xae40('0x1d')]('[%s]\x20%s:%s',_0x158352[_0xae40('0x13')],_0x158352[_0xae40('0x55')],_0x158352[_0xae40('0x56')]);});};exports[_0xae40('0x57')]=function(_0x3eb762,_0x55a6c8,_0x59a324,_0x5ab968){var _0x533a49=apiai(_0x55a6c8,{'language':_0x5ab968||'en'});return _0x533a49[_0xae40('0x58')](_0x59a324,{'sessionId':md5(_0x3eb762)})['then'](function(_0x4dc7cc){logger['info'](JSON['stringify'](_0x4dc7cc));return{'source':_0x4dc7cc['result'][_0xae40('0x59')],'resolvedQuery':_0x4dc7cc[_0xae40('0x5a')][_0xae40('0x5b')],'action':_0x4dc7cc[_0xae40('0x5a')][_0xae40('0x5c')],'actionIncomplete':_0x4dc7cc[_0xae40('0x5a')]['actionIncomplete'],'speech':_0x4dc7cc[_0xae40('0x5a')][_0xae40('0x5d')][_0xae40('0x5e')],'score':_0x4dc7cc[_0xae40('0x5a')]['score'],'statusCode':_0x4dc7cc[_0xae40('0x5f')]['code'],'endConversation':_0x4dc7cc[_0xae40('0x5a')][_0xae40('0x60')][_0xae40('0x61')]||![],'isFallbackIntent':_0x4dc7cc['result'][_0xae40('0x60')][_0xae40('0x62')]};});};exports[_0xae40('0x63')]=function(_0x3b96af,_0x146475,_0x2ee1b0,_0x36abd7,_0x1f1933,_0xd33116){var _0x3d9107=_0x36abd7[_0xae40('0x64')](/\\n/g,'\x0a');var _0x5ad314={'credentials':{'private_key':_0x3d9107,'client_email':_0x2ee1b0}};var _0x3344bb=new dialogflow[(_0xae40('0x65'))](_0x5ad314);var _0x56d56f=_0x3344bb[_0xae40('0x66')](_0x146475,md5(_0x3b96af));var _0x49f04b={'session':_0x56d56f,'queryInput':{'text':{'text':_0x1f1933,'languageCode':_0xd33116}}};return _0x3344bb['detectIntent'](_0x49f04b)[_0xae40('0x2c')](function(_0x2b7e6a){if(_0x2b7e6a&&_0x2b7e6a['length']){logger['info'](_0xae40('0x67'),JSON[_0xae40('0x68')](_0x2b7e6a));var _0x2679b3=_0x2b7e6a[0x0];if(_0x2679b3){var _0x5bd1fc={'action':_0x2679b3[_0xae40('0x69')][_0xae40('0x5c')],'allRequiredParamsPresent':_0x2679b3[_0xae40('0x69')][_0xae40('0x6a')],'endConversation':_0x2679b3[_0xae40('0x69')]['diagnosticInfo']&&_0x2679b3[_0xae40('0x69')][_0xae40('0x6b')][_0xae40('0x6c')]?_0x2679b3[_0xae40('0x69')][_0xae40('0x6b')][_0xae40('0x6c')][_0xae40('0x6d')][_0xae40('0x6e')]:![],'fulfillmentText':_0x2679b3[_0xae40('0x69')][_0xae40('0x6f')],'intentName':_0x2679b3[_0xae40('0x69')][_0xae40('0x70')]['name'],'intentDisplayName':_0x2679b3['queryResult'][_0xae40('0x70')][_0xae40('0x71')],'isFallbackIntent':_0x2679b3[_0xae40('0x69')][_0xae40('0x70')][_0xae40('0x72')],'languageCode':_0x2679b3[_0xae40('0x69')][_0xae40('0x73')],'queryText':_0x2679b3[_0xae40('0x69')][_0xae40('0x74')],'responseId':_0x2679b3[_0xae40('0x75')],'score':_0x2679b3[_0xae40('0x69')]['intentDetectionConfidence'],'speech':_0x2679b3[_0xae40('0x69')]['fulfillmentText'],'providerResponse':JSON[_0xae40('0x68')](_0x2b7e6a)};return _0x5bd1fc;}}});};exports['tildeASR']=function(_0x4a08b1,_0x3123b7,_0x75c504,_0x2f5349){return tilde[_0xae40('0x4c')](_0x4a08b1,_0x3123b7,_0x75c504,_0x2f5349)[_0xae40('0x2c')](function(_0x7f6486){try{fs['unlink'](_0x4a08b1);}catch(_0x10da68){logger[_0xae40('0x1d')](_0x10da68);}logger[_0xae40('0x19')](_0xae40('0x76'),_0x7f6486['transcript']);logger[_0xae40('0x19')]('Tilde\x20ASR\x20confidence',_0x7f6486[_0xae40('0x52')]);return _0x7f6486;});};exports['awsPolly']=function(_0x203f8,_0x27594f,_0x284209,_0x418fea,_0x5823be,_0x3c72cd){var _0x5e17ed=path[_0xae40('0x26')](__dirname,_0xae40('0x27'),rs[_0xae40('0x28')](0x4)+_0xae40('0x3a'));var _0x4d43df;return aws['polly'](_0x203f8,_0x27594f,_0x284209,_0x418fea,_0x5823be,_0x3c72cd,_0x5e17ed)['then'](function(){_0x4d43df=path[_0xae40('0x26')](__dirname,_0xae40('0x27'),rs[_0xae40('0x28')](0x4)+_0xae40('0x29'));return convertFile(_0x5e17ed,_0x4d43df);})['then'](function(){try{fs[_0xae40('0x1c')](_0x5e17ed);fs[_0xae40('0x2d')](_0x4d43df,_0xae40('0x2e'));}catch(_0x3b5572){logger[_0xae40('0x1d')](_0x3b5572);}return _0x4d43df[_0xae40('0x3e')]('.')[0x0];});};exports['awsLex']=function(_0x31451a,_0x2fe3f6,_0x4e562a,_0xe6a150,_0x1301f4,_0x5bdc1f){return aws[_0xae40('0x77')](_0x31451a,_0x2fe3f6,_0x4e562a,_0xe6a150,_0x1301f4,_0x5bdc1f)[_0xae40('0x2c')](function(_0x2a785a){logger[_0xae40('0x19')](JSON[_0xae40('0x68')](_0x2a785a));return _0x2a785a;});};exports['ispeechTTS']=function(_0x569f4b,_0x5996e2,_0x531ee9,_0x1eb369){var _0x4ca731=util[_0xae40('0x78')](_0xae40('0x79'),ISPEECH_API,_0x569f4b,encodeURIComponent(_0x5996e2),_0x531ee9,_0x1eb369);var _0x1bdc2a=path[_0xae40('0x26')](__dirname,_0xae40('0x27'),rs[_0xae40('0x28')](0x4)+_0xae40('0x3a'));var _0x14221b;return downloadFile(_0x4ca731,_0x1bdc2a)[_0xae40('0x2c')](function(){_0x14221b=path[_0xae40('0x26')](__dirname,_0xae40('0x27'),rs[_0xae40('0x28')](0x4)+_0xae40('0x29'));return convertFile(_0x1bdc2a,_0x14221b);})[_0xae40('0x2c')](function(){try{fs[_0xae40('0x1c')](_0x1bdc2a);fs[_0xae40('0x2d')](_0x14221b,_0xae40('0x2e'));}catch(_0x2d6292){logger[_0xae40('0x1d')](_0x2d6292);}return _0x14221b[_0xae40('0x3e')]('.')[0x0];});};exports[_0xae40('0x7a')]=function(_0x18d0c9,_0x30027c,_0x2c8536,_0x361f0e){var _0x149248=util['format'](_0xae40('0x7b'),ISPEECH_API,_0x30027c,_0x2c8536,base64Encode(_0x18d0c9),_0x361f0e?util[_0xae40('0x78')](_0xae40('0x7c'),encodeURIComponent(_0x361f0e)):'freeform=3');return uploadFile(_0x149248)[_0xae40('0x2c')](function(_0x382509){return querystring['parse'](_0x382509);});};exports[_0xae40('0x7d')]=function(_0x37ecf1,_0x2ec40d){return sestek[_0xae40('0x7e')](_0x37ecf1,_0x2ec40d)['then'](function(_0x56bacd){logger[_0xae40('0x19')](JSON[_0xae40('0x68')](_0x56bacd));var _0x5883e1={'speech':_0x56bacd['text'],'action':_0x56bacd[_0xae40('0x7f')]?_0x56bacd[_0xae40('0x7f')]['CustomAction']:undefined,'actiondata':_0x56bacd['channelData']?_0x56bacd['channelData'][_0xae40('0x80')]:undefined};if(_0x56bacd['channelData']&&_0x56bacd[_0xae40('0x7f')][_0xae40('0x81')]){return base64Decode(_0x56bacd[_0xae40('0x7f')][_0xae40('0x81')][_0xae40('0x82')],path[_0xae40('0x26')](__dirname,_0xae40('0x27'),rs[_0xae40('0x28')](0x4)+_0xae40('0x29')))[_0xae40('0x2c')](function(_0xbb5b14){_0x5883e1[_0xae40('0x83')]=_0xbb5b14;return _0x5883e1;});}return _0x5883e1;});};exports[_0xae40('0x84')]=function(){return __dirname;};