Built motion from commit e1760111.|2.6.18
[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 _0x29f4=['channelData','CustomAction','CustomActionData','AudioFromTts','audiofile','dirName','apiai-promise','bluebird','dialogflow','https','md5','path','querystring','randomstring','sox','google-tts-api','parse','util','./google','./tilde','../../../config/logger','agi','https://api.ispeech.org/api/rest','https:','host','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','protocol','end','finish\x20to\x20convert','start','resolve','generate','.wav','base64','then','chmodSync','split','toString','googleCloudTTS','https://texttospeech.googleapis.com/v1/','?key=','voice','audioConfig','MP3','text:synthesize','POST','.mp3','audioContent','writeFile','777','tmp','googleCloudTTS\x20path','googleTTS','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','utf8','jQ1olc','stringify','null','generic','slice','data','length','text\x20length\x20limit\x20reached','\x22\x20might\x20not\x20exist','parse\x20response\x20failed:\x0a','goggleTTS\x20path','asr','uri','results','alternatives','transcript','map','confidence','join','googleASR\x20transcription','googleASR\x20confidence','catch','[%s]\x20%s:%s','name','message','googleDialogflow','textRequest','result','resolvedQuery','action','actionIncomplete','fulfillment','score','status','code','metadata','endConversation','isFallbackIntent','replace','SessionsClient','detectIntent','Dialogflow\x20V2\x20response:','queryResult','allRequiredParamsPresent','diagnosticInfo','fields','end_conversation','fulfillmentText','intent','displayName','queryText','intentDetectionConfidence','Tilde\x20ASR\x20confidence','awsPolly','awsLex','lex','ispeechTTS','ispeechASR','format','%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s','model=%s','freeform=3','sestekNDA','nda'];(function(_0x5f3203,_0x2120ac){var _0x1eb7cb=function(_0x4e184a){while(--_0x4e184a){_0x5f3203['push'](_0x5f3203['shift']());}};_0x1eb7cb(++_0x2120ac);}(_0x29f4,0x8b));var _0x429f=function(_0x11924e,_0xaf4daa){_0x11924e=_0x11924e-0x0;var _0x1a0f7e=_0x29f4[_0x11924e];return _0x1a0f7e;};'use strict';var apiai=require(_0x429f('0x0'));var BPromise=require(_0x429f('0x1'));var dialogflow=require(_0x429f('0x2'));var fs=require('fs');var http=require('http');var https=require(_0x429f('0x3'));var md5=require(_0x429f('0x4'));var path=require(_0x429f('0x5'));var querystring=require(_0x429f('0x6'));var rp=require('request-promise');var rs=require(_0x429f('0x7'));var sox=require(_0x429f('0x8'));var tts=require(_0x429f('0x9'));var urlParse=require('url')[_0x429f('0xa')];var util=require(_0x429f('0xb'));var aws=require('./aws');var google=require(_0x429f('0xc'));var sestek=require('./sestek');var tilde=require(_0x429f('0xd'));var logger=require(_0x429f('0xe'))(_0x429f('0xf'));var ISPEECH_API=_0x429f('0x10');function downloadFile(_0xeed053,_0x579c38){return new BPromise(function(_0x267136,_0x3ea5de){var _0x29c0cf=urlParse(_0xeed053);var _0x435ab2=_0x29c0cf['protocol']===_0x429f('0x11')?https:http;var _0x5062d1={'host':_0x29c0cf[_0x429f('0x12')],'path':_0x29c0cf['path'],'headers':{'user-agent':_0x429f('0x13')}};_0x435ab2[_0x429f('0x14')](_0x5062d1,function(_0x5ef0e7){if(_0x5ef0e7['statusCode']!==0xc8){logger[_0x429f('0x15')](_0x429f('0x16')+_0xeed053+'\x20failed,\x20status\x20code\x20=\x20'+_0x5ef0e7[_0x429f('0x17')]+'\x20('+_0x5ef0e7[_0x429f('0x18')]+')');_0x3ea5de(new Error(_0x429f('0x16')+_0xeed053+_0x429f('0x19')+_0x5ef0e7[_0x429f('0x17')]+'\x20('+_0x5ef0e7[_0x429f('0x18')]+')'));return;}var _0x1e79ae=fs[_0x429f('0x1a')](_0x579c38);_0x1e79ae['on'](_0x429f('0x1b'),function(){logger[_0x429f('0x1c')](_0x429f('0x1d'));_0x1e79ae[_0x429f('0x1e')](_0x267136);});_0x1e79ae['on'](_0x429f('0x15'),function(_0x1ac214){fs[_0x429f('0x1f')](_0x579c38);logger[_0x429f('0x15')](_0x429f('0x20'),_0x1ac214);_0x3ea5de(_0x1ac214);});_0x5ef0e7[_0x429f('0x21')](_0x1e79ae);})['on'](_0x429f('0x15'),function(_0x4165ea){logger['error'](_0x4165ea);_0x3ea5de(_0x4165ea);})['end']();});}function uploadFile(_0x180ab0){return new BPromise(function(_0x309ff3,_0x3c6a8c){var _0xe20972=urlParse(_0x180ab0);var _0x411ad5=_0xe20972[_0x429f('0x22')]===_0x429f('0x11')?https:http;var _0x15c404={'host':_0xe20972[_0x429f('0x12')],'path':_0xe20972[_0x429f('0x5')],'headers':{'user-agent':_0x429f('0x13')}};_0x411ad5[_0x429f('0x14')](_0x15c404,function(_0x3c8cc8){if(_0x3c8cc8[_0x429f('0x17')]!==0xc8){_0x3c6a8c(new Error(_0x429f('0x16')+_0x180ab0+_0x429f('0x19')+_0x3c8cc8[_0x429f('0x17')]+'\x20('+_0x3c8cc8[_0x429f('0x18')]+')'));return;}var _0x4a4252='';_0x3c8cc8['on']('data',function(_0x103552){_0x4a4252+=_0x103552;});_0x3c8cc8['on'](_0x429f('0x23'),function(){_0x309ff3(_0x4a4252);});})['on'](_0x429f('0x15'),function(_0x265cc9){_0x3c6a8c(_0x265cc9);})['end']();});}function convertFile(_0x3e6092,_0x31e412){return new BPromise(function(_0x5da409,_0x2f3d37){var _0x2513bb=sox['transcode'](_0x3e6092,_0x31e412,{'sampleRate':0x1f40,'format':'wav','channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x2513bb['on'](_0x429f('0x15'),function(_0x1a9d32){logger[_0x429f('0x15')]('error\x20convert',_0x1a9d32);_0x2f3d37(_0x1a9d32);});_0x2513bb['on'](_0x429f('0x23'),function(){logger['info'](_0x429f('0x24'));_0x5da409();});_0x2513bb[_0x429f('0x25')]();});}function base64Decode(_0x2bd4c3,_0x1b1326){var _0x4206f0=path[_0x429f('0x26')](__dirname,'tmp',rs[_0x429f('0x27')](0x4)+_0x429f('0x28'));fs['writeFileSync'](_0x4206f0,_0x2bd4c3,_0x429f('0x29'));return convertFile(_0x4206f0,_0x1b1326)[_0x429f('0x2a')](function(){try{fs['unlink'](_0x4206f0);fs[_0x429f('0x2b')](_0x1b1326,'777');}catch(_0x3016ac){logger[_0x429f('0x15')](_0x3016ac);}return _0x1b1326[_0x429f('0x2c')]('.')[0x0];});}function base64Encode(_0x3ce2d5){var _0x29defa=fs['readFileSync'](_0x3ce2d5);return new Buffer(_0x29defa)[_0x429f('0x2d')](_0x429f('0x29'));}exports[_0x429f('0x2e')]=function(_0x4c829b,_0xcbba87,_0x36c12c,_0x10df3c,_0xaf2a13,_0x450449){var _0x24c452,_0x2d24a8;var _0x124075=_0x429f('0x2f');var _0x3212c9=_0x429f('0x30')+_0x4c829b;var _0x153f81={};if(_0xcbba87==='ssml'){_0x153f81['input']={'ssml':_0x36c12c};}else{_0x153f81['input']={'text':_0x36c12c};};_0x153f81[_0x429f('0x31')]={'languageCode':_0x10df3c,'ssmlGender':_0xaf2a13};_0x153f81[_0x429f('0x32')]={'audioEncoding':_0x429f('0x33'),'sampleRateHertz':0x1f40};var _0x337c6f={'url':_0x124075+_0x429f('0x34')+_0x3212c9,'method':_0x429f('0x35'),'json':!![],'body':_0x153f81};return rp(_0x337c6f)[_0x429f('0x2a')](function(_0x24602f){return new BPromise(function(_0x4aaf02,_0x1b37ef){_0x24c452=path['resolve'](__dirname,'tmp',rs['generate'](0x4)+_0x429f('0x36'));var _0x62b1b6=Buffer['from'](_0x24602f[_0x429f('0x37')],_0x429f('0x29'));return fs[_0x429f('0x38')](_0x24c452,_0x62b1b6,function(_0x1ab376){_0x1b37ef(_0x1ab376);},function(_0x150f70){fs['chmodSync'](_0x24c452,_0x429f('0x39'));_0x4aaf02(_0x150f70);});});})[_0x429f('0x2a')](function(_0x4d59e5){_0x2d24a8=path['resolve'](__dirname,_0x429f('0x3a'),rs[_0x429f('0x27')](0x4)+_0x429f('0x28'));return convertFile(_0x24c452,_0x2d24a8);})[_0x429f('0x2a')](function(){try{fs['unlink'](_0x24c452);fs[_0x429f('0x2b')](_0x2d24a8,'777');}catch(_0x1bcce2){logger['error'](_0x1bcce2);}logger[_0x429f('0x1c')](_0x429f('0x3b'),_0x2d24a8[_0x429f('0x2c')]('.')[0x0]);return _0x2d24a8['split']('.')[0x0];});};exports[_0x429f('0x3c')]=function(_0x2e11fa,_0x461dea){var _0x37f26a=_0x429f('0x3d');var _0x19fd7a,_0x49ca43;var _0x277d34;var _0x1d7df9={'encoding':_0x429f('0x3e'),'method':_0x429f('0x35'),'timeout':0x2710,'url':_0x37f26a,'headers':{'Content-Type':'application/x-www-form-urlencoded'},'body':'f.req='+encodeURIComponent(JSON['stringify']([[[_0x429f('0x3f'),JSON[_0x429f('0x40')]([_0x2e11fa,_0x461dea||'en',![],_0x429f('0x41')]),null,_0x429f('0x42')]]]))};return rp(_0x1d7df9)[_0x429f('0x2a')](function(_0x53c146){try{_0x277d34=eval(_0x53c146[_0x429f('0x43')](0x5))[0x0][0x2];}catch(_0x1bab21){throw new Error('parse\x20response\x20failed:\x0a'+_0x53c146[_0x429f('0x44')]);}if(!_0x277d34){if(_0x2e11fa[_0x429f('0x45')]>0xc8){throw new Error(_0x429f('0x46'));}else{throw new Error('lang\x20\x22'+_0x461dea+_0x429f('0x47'));}}try{_0x277d34=eval(_0x277d34)[0x0];}catch(_0x46f72a){throw new Error(_0x429f('0x48')+res[_0x429f('0x44')]);}const _0x197758=_0x277d34;_0x19fd7a=path[_0x429f('0x26')](__dirname,_0x429f('0x3a'),rs[_0x429f('0x27')](0x4)+_0x429f('0x36'));fs['writeFileSync'](_0x19fd7a,_0x277d34,{'encoding':_0x429f('0x29')});_0x49ca43=path['resolve'](__dirname,'tmp',rs['generate'](0x4)+_0x429f('0x28'));return convertFile(_0x19fd7a,_0x49ca43);})[_0x429f('0x2a')](function(){try{fs['unlink'](_0x19fd7a);fs[_0x429f('0x2b')](_0x49ca43,_0x429f('0x39'));}catch(_0x32b811){logger[_0x429f('0x15')](_0x32b811);}logger['info'](_0x429f('0x49'),_0x49ca43[_0x429f('0x2c')]('.')[0x0]);return _0x49ca43[_0x429f('0x2c')]('.')[0x0];});};exports['googleASR']=function(_0x119e72,_0x1b98dd,_0x5e9d1c){return google[_0x429f('0x4a')](_0x119e72,_0x1b98dd,_0x5e9d1c)[_0x429f('0x2a')](function(_0x2d588a){logger['info'](_0x2d588a[_0x429f('0x4b')]);return rp(_0x2d588a);})[_0x429f('0x2a')](function(_0x9f0311){var _0x25da53='';var _0x36853e=0x0;try{fs[_0x429f('0x1f')](_0x119e72);}catch(_0x1479da){logger[_0x429f('0x15')](_0x1479da);}if(_0x9f0311&&_0x9f0311[_0x429f('0x4c')]){_0x25da53=_0x9f0311[_0x429f('0x4c')]['map'](function(_0x144c02){return _0x144c02&&_0x144c02[_0x429f('0x4d')][0x0]&&_0x144c02[_0x429f('0x4d')][0x0][_0x429f('0x4e')]?_0x144c02[_0x429f('0x4d')][0x0][_0x429f('0x4e')]:'';})['join']('\x0a');_0x36853e=_0x9f0311[_0x429f('0x4c')][_0x429f('0x4f')](function(_0x1c54e6){return _0x1c54e6&&_0x1c54e6['alternatives'][0x0]&&_0x1c54e6[_0x429f('0x4d')][0x0][_0x429f('0x50')]?_0x1c54e6[_0x429f('0x4d')][0x0][_0x429f('0x50')]:0x0;})[_0x429f('0x51')]('\x0a');}logger[_0x429f('0x1c')](_0x429f('0x52'),_0x25da53);logger['info'](_0x429f('0x53'),_0x36853e);return{'transcript':_0x25da53,'confidence':_0x36853e};})[_0x429f('0x54')](function(_0x4481a3){logger[_0x429f('0x15')](_0x429f('0x55'),_0x4481a3[_0x429f('0x17')],_0x4481a3[_0x429f('0x56')],_0x4481a3[_0x429f('0x57')]);});};exports[_0x429f('0x58')]=function(_0x3aad76,_0x4f2019,_0x221bce,_0x551812){var _0x1fd042=apiai(_0x4f2019,{'language':_0x551812||'en'});return _0x1fd042[_0x429f('0x59')](_0x221bce,{'sessionId':md5(_0x3aad76)})[_0x429f('0x2a')](function(_0x2c5ab7){logger[_0x429f('0x1c')](JSON[_0x429f('0x40')](_0x2c5ab7));return{'source':_0x2c5ab7[_0x429f('0x5a')]['source'],'resolvedQuery':_0x2c5ab7['result'][_0x429f('0x5b')],'action':_0x2c5ab7[_0x429f('0x5a')][_0x429f('0x5c')],'actionIncomplete':_0x2c5ab7[_0x429f('0x5a')][_0x429f('0x5d')],'speech':_0x2c5ab7[_0x429f('0x5a')][_0x429f('0x5e')]['speech'],'score':_0x2c5ab7[_0x429f('0x5a')][_0x429f('0x5f')],'statusCode':_0x2c5ab7[_0x429f('0x60')][_0x429f('0x61')],'endConversation':_0x2c5ab7[_0x429f('0x5a')][_0x429f('0x62')][_0x429f('0x63')]||![],'isFallbackIntent':_0x2c5ab7[_0x429f('0x5a')][_0x429f('0x62')][_0x429f('0x64')]};});};exports['googleDialogflowV2']=function(_0x1c1b5c,_0x387c68,_0x273086,_0x60dfe7,_0x5a6637,_0x57d0fd){var _0x9be9e=_0x60dfe7[_0x429f('0x65')](/\\n/g,'\x0a');var _0x2039e5={'credentials':{'private_key':_0x9be9e,'client_email':_0x273086}};var _0x4d75ea=new dialogflow[(_0x429f('0x66'))](_0x2039e5);var _0x43ec8a=_0x4d75ea['sessionPath'](_0x387c68,md5(_0x1c1b5c));var _0x1826cb={'session':_0x43ec8a,'queryInput':{'text':{'text':_0x5a6637,'languageCode':_0x57d0fd}}};return _0x4d75ea[_0x429f('0x67')](_0x1826cb)[_0x429f('0x2a')](function(_0x491dc2){if(_0x491dc2&&_0x491dc2[_0x429f('0x45')]){logger['info'](_0x429f('0x68'),JSON[_0x429f('0x40')](_0x491dc2));var _0x50a1f5=_0x491dc2[0x0];if(_0x50a1f5){var _0xb7f7f1={'action':_0x50a1f5[_0x429f('0x69')][_0x429f('0x5c')],'allRequiredParamsPresent':_0x50a1f5[_0x429f('0x69')][_0x429f('0x6a')],'endConversation':_0x50a1f5['queryResult']['diagnosticInfo']&&_0x50a1f5['queryResult'][_0x429f('0x6b')]['fields']?_0x50a1f5[_0x429f('0x69')][_0x429f('0x6b')][_0x429f('0x6c')][_0x429f('0x6d')]['boolValue']:![],'fulfillmentText':_0x50a1f5['queryResult'][_0x429f('0x6e')],'intentName':_0x50a1f5[_0x429f('0x69')]['intent'][_0x429f('0x56')],'intentDisplayName':_0x50a1f5[_0x429f('0x69')][_0x429f('0x6f')][_0x429f('0x70')],'isFallbackIntent':_0x50a1f5[_0x429f('0x69')][_0x429f('0x6f')]['isFallback'],'languageCode':_0x50a1f5['queryResult']['languageCode'],'queryText':_0x50a1f5[_0x429f('0x69')][_0x429f('0x71')],'responseId':_0x50a1f5['responseId'],'score':_0x50a1f5[_0x429f('0x69')][_0x429f('0x72')],'speech':_0x50a1f5[_0x429f('0x69')]['fulfillmentText'],'providerResponse':JSON[_0x429f('0x40')](_0x491dc2)};return _0xb7f7f1;}}});};exports['tildeASR']=function(_0x5308e3,_0x2931c7,_0x2090b7,_0x28846f){return tilde[_0x429f('0x4a')](_0x5308e3,_0x2931c7,_0x2090b7,_0x28846f)[_0x429f('0x2a')](function(_0x166fce){try{fs[_0x429f('0x1f')](_0x5308e3);}catch(_0x3d6120){logger['error'](_0x3d6120);}logger[_0x429f('0x1c')]('Tilde\x20ASR\x20transcription',_0x166fce['transcript']);logger[_0x429f('0x1c')](_0x429f('0x73'),_0x166fce[_0x429f('0x50')]);return _0x166fce;});};exports[_0x429f('0x74')]=function(_0x68bfa7,_0x20eda5,_0x535793,_0x2adaf1,_0x3eb4d0,_0x4ae31e){var _0x448e11=path['resolve'](__dirname,_0x429f('0x3a'),rs[_0x429f('0x27')](0x4)+'.mp3');var _0x38ba36;return aws['polly'](_0x68bfa7,_0x20eda5,_0x535793,_0x2adaf1,_0x3eb4d0,_0x4ae31e,_0x448e11)[_0x429f('0x2a')](function(){_0x38ba36=path[_0x429f('0x26')](__dirname,_0x429f('0x3a'),rs['generate'](0x4)+_0x429f('0x28'));return convertFile(_0x448e11,_0x38ba36);})[_0x429f('0x2a')](function(){try{fs[_0x429f('0x1f')](_0x448e11);fs[_0x429f('0x2b')](_0x38ba36,_0x429f('0x39'));}catch(_0x205c74){logger[_0x429f('0x15')](_0x205c74);}return _0x38ba36[_0x429f('0x2c')]('.')[0x0];});};exports[_0x429f('0x75')]=function(_0x2e3cb4,_0x11b222,_0x5a2fc6,_0x341408,_0x80b9f2,_0x3b3307){return aws[_0x429f('0x76')](_0x2e3cb4,_0x11b222,_0x5a2fc6,_0x341408,_0x80b9f2,_0x3b3307)[_0x429f('0x2a')](function(_0x32db90){logger[_0x429f('0x1c')](JSON['stringify'](_0x32db90));return _0x32db90;});};exports[_0x429f('0x77')]=function(_0x2e3425,_0xed2488,_0x20d0b0,_0x1bd694){var _0x1a29a0=util['format']('%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3',ISPEECH_API,_0x2e3425,encodeURIComponent(_0xed2488),_0x20d0b0,_0x1bd694);var _0x55c38f=path[_0x429f('0x26')](__dirname,'tmp',rs['generate'](0x4)+_0x429f('0x36'));var _0x12f554;return downloadFile(_0x1a29a0,_0x55c38f)[_0x429f('0x2a')](function(){_0x12f554=path['resolve'](__dirname,_0x429f('0x3a'),rs['generate'](0x4)+_0x429f('0x28'));return convertFile(_0x55c38f,_0x12f554);})['then'](function(){try{fs[_0x429f('0x1f')](_0x55c38f);fs['chmodSync'](_0x12f554,'777');}catch(_0x4f47a3){logger[_0x429f('0x15')](_0x4f47a3);}return _0x12f554[_0x429f('0x2c')]('.')[0x0];});};exports[_0x429f('0x78')]=function(_0x15cda1,_0x2cf11d,_0x4904de,_0x22e54b){var _0x584c60=util[_0x429f('0x79')](_0x429f('0x7a'),ISPEECH_API,_0x2cf11d,_0x4904de,base64Encode(_0x15cda1),_0x22e54b?util['format'](_0x429f('0x7b'),encodeURIComponent(_0x22e54b)):_0x429f('0x7c'));return uploadFile(_0x584c60)[_0x429f('0x2a')](function(_0x2aec9b){return querystring[_0x429f('0xa')](_0x2aec9b);});};exports[_0x429f('0x7d')]=function(_0x8e3f97,_0x1659c1){return sestek[_0x429f('0x7e')](_0x8e3f97,_0x1659c1)[_0x429f('0x2a')](function(_0x366d5e){logger[_0x429f('0x1c')](JSON[_0x429f('0x40')](_0x366d5e));var _0x53b0cc={'speech':_0x366d5e['text'],'action':_0x366d5e[_0x429f('0x7f')]?_0x366d5e[_0x429f('0x7f')][_0x429f('0x80')]:undefined,'actiondata':_0x366d5e[_0x429f('0x7f')]?_0x366d5e[_0x429f('0x7f')][_0x429f('0x81')]:undefined};if(_0x366d5e[_0x429f('0x7f')]&&_0x366d5e[_0x429f('0x7f')][_0x429f('0x82')]){return base64Decode(_0x366d5e[_0x429f('0x7f')][_0x429f('0x82')]['Data'],path[_0x429f('0x26')](__dirname,_0x429f('0x3a'),rs['generate'](0x4)+'.wav'))['then'](function(_0x315b1b){_0x53b0cc[_0x429f('0x83')]=_0x315b1b;return _0x53b0cc;});}return _0x53b0cc;});};exports[_0x429f('0x84')]=function(){return __dirname;};