Built motion from commit 9e1399f3.|2.5.37
[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 _0x2668=['info','finish\x20download\x20file','error','unlink','download\x20error','pipe','end','https:','host','transcode','wav','error\x20convert','finish\x20to\x20convert','resolve','tmp','generate','writeFileSync','base64','then','chmodSync','777','readFileSync','googleCloudTTS','https://texttospeech.googleapis.com/v1/','ssml','input','voice','audioConfig','MP3','POST','from','writeFile','.wav','googleCloudTTS\x20path','split','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','application/x-www-form-urlencoded','f.req=','stringify','null','generic','slice','parse\x20response\x20failed:\x0a','data','length','lang\x20\x22','\x22\x20might\x20not\x20exist','.mp3','goggleTTS\x20path','googleASR','asr','results','map','alternatives','transcript','join','confidence','googleASR\x20confidence','catch','name','result','source','resolvedQuery','action','fulfillment','speech','score','code','metadata','endConversation','isFallbackIntent','googleDialogflowV2','replace','SessionsClient','sessionPath','detectIntent','queryResult','diagnosticInfo','fields','end_conversation','boolValue','intent','displayName','languageCode','queryText','responseId','fulfillmentText','Tilde\x20ASR\x20transcription','Tilde\x20ASR\x20confidence','awsPolly','lex','ispeechTTS','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','freeform=3','sestekNDA','nda','text','channelData','CustomAction','CustomActionData','AudioFromTts','Data','audiofile','apiai-promise','bluebird','http','https','md5','path','querystring','request-promise','randomstring','parse','./google','./sestek','./tilde','../../../config/logger','https://api.ispeech.org/api/rest','protocol','WHAT_EVER','get','statusCode','request\x20to\x20','\x20failed,\x20status\x20code\x20=\x20','statusMessage','createWriteStream','finish'];(function(_0x52f80b,_0xcf9bb7){var _0x175020=function(_0x100fe6){while(--_0x100fe6){_0x52f80b['push'](_0x52f80b['shift']());}};_0x175020(++_0xcf9bb7);}(_0x2668,0xee));var _0x8266=function(_0x34843e,_0x4c4224){_0x34843e=_0x34843e-0x0;var _0x598f7f=_0x2668[_0x34843e];return _0x598f7f;};'use strict';var apiai=require(_0x8266('0x0'));var BPromise=require(_0x8266('0x1'));var dialogflow=require('dialogflow');var fs=require('fs');var http=require(_0x8266('0x2'));var https=require(_0x8266('0x3'));var md5=require(_0x8266('0x4'));var path=require(_0x8266('0x5'));var querystring=require(_0x8266('0x6'));var rp=require(_0x8266('0x7'));var rs=require(_0x8266('0x8'));var sox=require('sox');var tts=require('google-tts-api');var urlParse=require('url')[_0x8266('0x9')];var util=require('util');var aws=require('./aws');var google=require(_0x8266('0xa'));var sestek=require(_0x8266('0xb'));var tilde=require(_0x8266('0xc'));var logger=require(_0x8266('0xd'))('agi');var ISPEECH_API=_0x8266('0xe');function downloadFile(_0x331a24,_0x365a90){return new BPromise(function(_0x412f43,_0x5dd609){var _0x232649=urlParse(_0x331a24);var _0x2a912f=_0x232649[_0x8266('0xf')]==='https:'?https:http;var _0x33122f={'host':_0x232649['host'],'path':_0x232649[_0x8266('0x5')],'headers':{'user-agent':_0x8266('0x10')}};_0x2a912f[_0x8266('0x11')](_0x33122f,function(_0x19e048){if(_0x19e048[_0x8266('0x12')]!==0xc8){logger['error'](_0x8266('0x13')+_0x331a24+_0x8266('0x14')+_0x19e048[_0x8266('0x12')]+'\x20('+_0x19e048[_0x8266('0x15')]+')');_0x5dd609(new Error(_0x8266('0x13')+_0x331a24+_0x8266('0x14')+_0x19e048[_0x8266('0x12')]+'\x20('+_0x19e048[_0x8266('0x15')]+')'));return;}var _0x297ec5=fs[_0x8266('0x16')](_0x365a90);_0x297ec5['on'](_0x8266('0x17'),function(){logger[_0x8266('0x18')](_0x8266('0x19'));_0x297ec5['close'](_0x412f43);});_0x297ec5['on'](_0x8266('0x1a'),function(_0xf2e508){fs[_0x8266('0x1b')](_0x365a90);logger[_0x8266('0x1a')](_0x8266('0x1c'),_0xf2e508);_0x5dd609(_0xf2e508);});_0x19e048[_0x8266('0x1d')](_0x297ec5);})['on']('error',function(_0x2a9f26){logger[_0x8266('0x1a')](_0x2a9f26);_0x5dd609(_0x2a9f26);})[_0x8266('0x1e')]();});}function uploadFile(_0x151fa8){return new BPromise(function(_0x582d81,_0x13be40){var _0x23dc28=urlParse(_0x151fa8);var _0x48b872=_0x23dc28[_0x8266('0xf')]===_0x8266('0x1f')?https:http;var _0x284f72={'host':_0x23dc28[_0x8266('0x20')],'path':_0x23dc28[_0x8266('0x5')],'headers':{'user-agent':_0x8266('0x10')}};_0x48b872[_0x8266('0x11')](_0x284f72,function(_0x4cb137){if(_0x4cb137[_0x8266('0x12')]!==0xc8){_0x13be40(new Error(_0x8266('0x13')+_0x151fa8+'\x20failed,\x20status\x20code\x20=\x20'+_0x4cb137[_0x8266('0x12')]+'\x20('+_0x4cb137['statusMessage']+')'));return;}var _0x15a6bb='';_0x4cb137['on']('data',function(_0x4e9c97){_0x15a6bb+=_0x4e9c97;});_0x4cb137['on'](_0x8266('0x1e'),function(){_0x582d81(_0x15a6bb);});})['on'](_0x8266('0x1a'),function(_0x415e2b){_0x13be40(_0x415e2b);})['end']();});}function convertFile(_0x2b2827,_0x161241){return new BPromise(function(_0x39d879,_0x536f39){var _0x44a5cf=sox[_0x8266('0x21')](_0x2b2827,_0x161241,{'sampleRate':0x1f40,'format':_0x8266('0x22'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x44a5cf['on'](_0x8266('0x1a'),function(_0x7ecdd5){logger['error'](_0x8266('0x23'),_0x7ecdd5);_0x536f39(_0x7ecdd5);});_0x44a5cf['on'](_0x8266('0x1e'),function(){logger[_0x8266('0x18')](_0x8266('0x24'));_0x39d879();});_0x44a5cf['start']();});}function base64Decode(_0x2870c1,_0x505d3b){var _0x3287c1=path[_0x8266('0x25')](__dirname,_0x8266('0x26'),rs[_0x8266('0x27')](0x4)+'.wav');fs[_0x8266('0x28')](_0x3287c1,_0x2870c1,_0x8266('0x29'));return convertFile(_0x3287c1,_0x505d3b)[_0x8266('0x2a')](function(){try{fs['unlink'](_0x3287c1);fs[_0x8266('0x2b')](_0x505d3b,_0x8266('0x2c'));}catch(_0x429e05){logger[_0x8266('0x1a')](_0x429e05);}return _0x505d3b['split']('.')[0x0];});}function base64Encode(_0xa83cb1){var _0x2e3338=fs[_0x8266('0x2d')](_0xa83cb1);return new Buffer(_0x2e3338)['toString']('base64');}exports[_0x8266('0x2e')]=function(_0x39ea31,_0x403b43,_0x55183f,_0xc75355,_0x332289,_0x105ba2){var _0x1ac56f,_0x678fed;var _0x3e2e10=_0x8266('0x2f');var _0x186282='?key='+_0x39ea31;var _0x391012={};if(_0x403b43===_0x8266('0x30')){_0x391012[_0x8266('0x31')]={'ssml':_0x55183f};}else{_0x391012['input']={'text':_0x55183f};};_0x391012[_0x8266('0x32')]={'languageCode':_0xc75355,'ssmlGender':_0x332289};_0x391012[_0x8266('0x33')]={'audioEncoding':_0x8266('0x34'),'sampleRateHertz':0x1f40};var _0xd86bea={'url':_0x3e2e10+'text:synthesize'+_0x186282,'method':_0x8266('0x35'),'json':!![],'body':_0x391012};return rp(_0xd86bea)[_0x8266('0x2a')](function(_0x565964){return new BPromise(function(_0x2b061a,_0x658495){_0x1ac56f=path[_0x8266('0x25')](__dirname,'tmp',rs['generate'](0x4)+'.mp3');var _0x359dd2=Buffer[_0x8266('0x36')](_0x565964['audioContent'],_0x8266('0x29'));return fs[_0x8266('0x37')](_0x1ac56f,_0x359dd2,function(_0x5f582a){_0x658495(_0x5f582a);},function(_0xa1f332){fs[_0x8266('0x2b')](_0x1ac56f,_0x8266('0x2c'));_0x2b061a(_0xa1f332);});});})['then'](function(_0x1178a9){_0x678fed=path[_0x8266('0x25')](__dirname,_0x8266('0x26'),rs[_0x8266('0x27')](0x4)+_0x8266('0x38'));return convertFile(_0x1ac56f,_0x678fed);})[_0x8266('0x2a')](function(){try{fs['unlink'](_0x1ac56f);fs['chmodSync'](_0x678fed,_0x8266('0x2c'));}catch(_0x440016){logger[_0x8266('0x1a')](_0x440016);}logger['info'](_0x8266('0x39'),_0x678fed['split']('.')[0x0]);return _0x678fed[_0x8266('0x3a')]('.')[0x0];});};exports['googleTTS']=function(_0x38f2e2,_0x2d03af){var _0x48263a=_0x8266('0x3b');var _0x29a6ed,_0x41da7d;var _0x159892;var _0x1f6c93={'encoding':'utf8','method':_0x8266('0x35'),'timeout':0x2710,'url':_0x48263a,'headers':{'Content-Type':_0x8266('0x3c')},'body':_0x8266('0x3d')+encodeURIComponent(JSON[_0x8266('0x3e')]([[['jQ1olc',JSON['stringify']([_0x38f2e2,_0x2d03af||'en',![],_0x8266('0x3f')]),null,_0x8266('0x40')]]]))};return rp(_0x1f6c93)[_0x8266('0x2a')](function(_0x11cf42){try{_0x159892=eval(_0x11cf42[_0x8266('0x41')](0x5))[0x0][0x2];}catch(_0x49292a){throw new Error(_0x8266('0x42')+_0x11cf42[_0x8266('0x43')]);}if(!_0x159892){if(_0x38f2e2[_0x8266('0x44')]>0xc8){throw new Error('text\x20length\x20limit\x20reached');}else{throw new Error(_0x8266('0x45')+_0x2d03af+_0x8266('0x46'));}}try{_0x159892=eval(_0x159892)[0x0];}catch(_0x21ae10){throw new Error('parse\x20response\x20failed:\x0a'+res[_0x8266('0x43')]);}const _0x511373=_0x159892;_0x29a6ed=path['resolve'](__dirname,_0x8266('0x26'),rs['generate'](0x4)+_0x8266('0x47'));fs[_0x8266('0x28')](_0x29a6ed,_0x159892,{'encoding':_0x8266('0x29')});_0x41da7d=path[_0x8266('0x25')](__dirname,_0x8266('0x26'),rs[_0x8266('0x27')](0x4)+_0x8266('0x38'));return convertFile(_0x29a6ed,_0x41da7d);})[_0x8266('0x2a')](function(){try{fs[_0x8266('0x1b')](_0x29a6ed);fs[_0x8266('0x2b')](_0x41da7d,_0x8266('0x2c'));}catch(_0x1b463e){logger['error'](_0x1b463e);}logger['info'](_0x8266('0x48'),_0x41da7d['split']('.')[0x0]);return _0x41da7d['split']('.')[0x0];});};exports[_0x8266('0x49')]=function(_0xdea293,_0x383a6b,_0x5ec7a5){return google[_0x8266('0x4a')](_0xdea293,_0x383a6b,_0x5ec7a5)[_0x8266('0x2a')](function(_0x54645d){logger[_0x8266('0x18')](_0x54645d['uri']);return rp(_0x54645d);})['then'](function(_0x2086b1){var _0x3e2ca5='';var _0x1f7db0=0x0;try{fs[_0x8266('0x1b')](_0xdea293);}catch(_0x18d972){logger[_0x8266('0x1a')](_0x18d972);}if(_0x2086b1&&_0x2086b1[_0x8266('0x4b')]){_0x3e2ca5=_0x2086b1[_0x8266('0x4b')][_0x8266('0x4c')](function(_0x11b2f8){return _0x11b2f8&&_0x11b2f8[_0x8266('0x4d')][0x0]&&_0x11b2f8[_0x8266('0x4d')][0x0][_0x8266('0x4e')]?_0x11b2f8[_0x8266('0x4d')][0x0][_0x8266('0x4e')]:'';})[_0x8266('0x4f')]('\x0a');_0x1f7db0=_0x2086b1[_0x8266('0x4b')]['map'](function(_0x576e1a){return _0x576e1a&&_0x576e1a[_0x8266('0x4d')][0x0]&&_0x576e1a[_0x8266('0x4d')][0x0]['confidence']?_0x576e1a['alternatives'][0x0][_0x8266('0x50')]:0x0;})[_0x8266('0x4f')]('\x0a');}logger[_0x8266('0x18')]('googleASR\x20transcription',_0x3e2ca5);logger[_0x8266('0x18')](_0x8266('0x51'),_0x1f7db0);return{'transcript':_0x3e2ca5,'confidence':_0x1f7db0};})[_0x8266('0x52')](function(_0x1fa03c){logger['error']('[%s]\x20%s:%s',_0x1fa03c[_0x8266('0x12')],_0x1fa03c[_0x8266('0x53')],_0x1fa03c['message']);});};exports['googleDialogflow']=function(_0x58df09,_0x35da43,_0x3f9e50,_0x51e628){var _0x515579=apiai(_0x35da43,{'language':_0x51e628||'en'});return _0x515579['textRequest'](_0x3f9e50,{'sessionId':md5(_0x58df09)})[_0x8266('0x2a')](function(_0x4a64c8){logger[_0x8266('0x18')](JSON[_0x8266('0x3e')](_0x4a64c8));return{'source':_0x4a64c8[_0x8266('0x54')][_0x8266('0x55')],'resolvedQuery':_0x4a64c8[_0x8266('0x54')][_0x8266('0x56')],'action':_0x4a64c8[_0x8266('0x54')][_0x8266('0x57')],'actionIncomplete':_0x4a64c8['result']['actionIncomplete'],'speech':_0x4a64c8[_0x8266('0x54')][_0x8266('0x58')][_0x8266('0x59')],'score':_0x4a64c8[_0x8266('0x54')][_0x8266('0x5a')],'statusCode':_0x4a64c8['status'][_0x8266('0x5b')],'endConversation':_0x4a64c8[_0x8266('0x54')][_0x8266('0x5c')][_0x8266('0x5d')]||![],'isFallbackIntent':_0x4a64c8[_0x8266('0x54')][_0x8266('0x5c')][_0x8266('0x5e')]};});};exports[_0x8266('0x5f')]=function(_0x56cc04,_0x103c41,_0x3b95f3,_0x4efe33,_0x539631,_0x15d804){var _0x94f360=_0x4efe33[_0x8266('0x60')](/\\n/g,'\x0a');var _0x468b25={'credentials':{'private_key':_0x94f360,'client_email':_0x3b95f3}};var _0x5c7ba2=new dialogflow[(_0x8266('0x61'))](_0x468b25);var _0x234280=_0x5c7ba2[_0x8266('0x62')](_0x103c41,md5(_0x56cc04));var _0x25b6bb={'session':_0x234280,'queryInput':{'text':{'text':_0x539631,'languageCode':_0x15d804}}};return _0x5c7ba2[_0x8266('0x63')](_0x25b6bb)[_0x8266('0x2a')](function(_0x253a26){if(_0x253a26&&_0x253a26[_0x8266('0x44')]){logger[_0x8266('0x18')]('Dialogflow\x20V2\x20response:',JSON[_0x8266('0x3e')](_0x253a26));var _0xdba3fa=_0x253a26[0x0];if(_0xdba3fa){var _0x1edac5={'action':_0xdba3fa[_0x8266('0x64')][_0x8266('0x57')],'allRequiredParamsPresent':_0xdba3fa[_0x8266('0x64')]['allRequiredParamsPresent'],'endConversation':_0xdba3fa[_0x8266('0x64')][_0x8266('0x65')]&&_0xdba3fa[_0x8266('0x64')][_0x8266('0x65')]['fields']?_0xdba3fa['queryResult'][_0x8266('0x65')][_0x8266('0x66')][_0x8266('0x67')][_0x8266('0x68')]:![],'fulfillmentText':_0xdba3fa['queryResult']['fulfillmentText'],'intentName':_0xdba3fa[_0x8266('0x64')][_0x8266('0x69')][_0x8266('0x53')],'intentDisplayName':_0xdba3fa['queryResult'][_0x8266('0x69')][_0x8266('0x6a')],'isFallbackIntent':_0xdba3fa[_0x8266('0x64')][_0x8266('0x69')]['isFallback'],'languageCode':_0xdba3fa[_0x8266('0x64')][_0x8266('0x6b')],'queryText':_0xdba3fa[_0x8266('0x64')][_0x8266('0x6c')],'responseId':_0xdba3fa[_0x8266('0x6d')],'score':_0xdba3fa[_0x8266('0x64')]['intentDetectionConfidence'],'speech':_0xdba3fa[_0x8266('0x64')][_0x8266('0x6e')],'providerResponse':JSON[_0x8266('0x3e')](_0x253a26)};return _0x1edac5;}}});};exports['tildeASR']=function(_0x256c2d,_0x2098aa,_0x1c319f,_0x3a0143){return tilde[_0x8266('0x4a')](_0x256c2d,_0x2098aa,_0x1c319f,_0x3a0143)[_0x8266('0x2a')](function(_0xe3f816){try{fs[_0x8266('0x1b')](_0x256c2d);}catch(_0x271a3e){logger['error'](_0x271a3e);}logger[_0x8266('0x18')](_0x8266('0x6f'),_0xe3f816[_0x8266('0x4e')]);logger[_0x8266('0x18')](_0x8266('0x70'),_0xe3f816[_0x8266('0x50')]);return _0xe3f816;});};exports[_0x8266('0x71')]=function(_0x1a66a3,_0x35dc93,_0x357feb,_0x346e07,_0x58f488,_0x356bc0){var _0x3c1f7d=path[_0x8266('0x25')](__dirname,_0x8266('0x26'),rs[_0x8266('0x27')](0x4)+'.mp3');var _0x56d1b4;return aws['polly'](_0x1a66a3,_0x35dc93,_0x357feb,_0x346e07,_0x58f488,_0x356bc0,_0x3c1f7d)[_0x8266('0x2a')](function(){_0x56d1b4=path[_0x8266('0x25')](__dirname,_0x8266('0x26'),rs['generate'](0x4)+_0x8266('0x38'));return convertFile(_0x3c1f7d,_0x56d1b4);})['then'](function(){try{fs[_0x8266('0x1b')](_0x3c1f7d);fs[_0x8266('0x2b')](_0x56d1b4,'777');}catch(_0x5148e7){logger[_0x8266('0x1a')](_0x5148e7);}return _0x56d1b4[_0x8266('0x3a')]('.')[0x0];});};exports['awsLex']=function(_0x8e3e22,_0x41e494,_0x499064,_0x5af314,_0x5b4eec,_0x13eefd){return aws[_0x8266('0x72')](_0x8e3e22,_0x41e494,_0x499064,_0x5af314,_0x5b4eec,_0x13eefd)['then'](function(_0x537658){logger[_0x8266('0x18')](JSON[_0x8266('0x3e')](_0x537658));return _0x537658;});};exports[_0x8266('0x73')]=function(_0x19dc7a,_0x30d64c,_0x419816,_0x4eea8a){var _0x2684f7=util[_0x8266('0x74')](_0x8266('0x75'),ISPEECH_API,_0x19dc7a,encodeURIComponent(_0x30d64c),_0x419816,_0x4eea8a);var _0x155e0b=path['resolve'](__dirname,_0x8266('0x26'),rs[_0x8266('0x27')](0x4)+_0x8266('0x47'));var _0x292d05;return downloadFile(_0x2684f7,_0x155e0b)[_0x8266('0x2a')](function(){_0x292d05=path[_0x8266('0x25')](__dirname,_0x8266('0x26'),rs[_0x8266('0x27')](0x4)+'.wav');return convertFile(_0x155e0b,_0x292d05);})['then'](function(){try{fs['unlink'](_0x155e0b);fs[_0x8266('0x2b')](_0x292d05,_0x8266('0x2c'));}catch(_0x3dbcfb){logger['error'](_0x3dbcfb);}return _0x292d05[_0x8266('0x3a')]('.')[0x0];});};exports[_0x8266('0x76')]=function(_0x25b582,_0x18db82,_0x357e90,_0x4e8b42){var _0x45ce60=util[_0x8266('0x74')](_0x8266('0x77'),ISPEECH_API,_0x18db82,_0x357e90,base64Encode(_0x25b582),_0x4e8b42?util[_0x8266('0x74')](_0x8266('0x78'),encodeURIComponent(_0x4e8b42)):_0x8266('0x79'));return uploadFile(_0x45ce60)[_0x8266('0x2a')](function(_0x239286){return querystring[_0x8266('0x9')](_0x239286);});};exports[_0x8266('0x7a')]=function(_0x4df8c2,_0x4d4a56){return sestek[_0x8266('0x7b')](_0x4df8c2,_0x4d4a56)[_0x8266('0x2a')](function(_0x1ad75f){logger['info'](JSON[_0x8266('0x3e')](_0x1ad75f));var _0x3f8c53={'speech':_0x1ad75f[_0x8266('0x7c')],'action':_0x1ad75f[_0x8266('0x7d')]?_0x1ad75f[_0x8266('0x7d')][_0x8266('0x7e')]:undefined,'actiondata':_0x1ad75f[_0x8266('0x7d')]?_0x1ad75f[_0x8266('0x7d')][_0x8266('0x7f')]:undefined};if(_0x1ad75f['channelData']&&_0x1ad75f[_0x8266('0x7d')]['AudioFromTts']){return base64Decode(_0x1ad75f[_0x8266('0x7d')][_0x8266('0x80')][_0x8266('0x81')],path[_0x8266('0x25')](__dirname,_0x8266('0x26'),rs['generate'](0x4)+_0x8266('0x38')))[_0x8266('0x2a')](function(_0x1174f9){_0x3f8c53[_0x8266('0x82')]=_0x1174f9;return _0x3f8c53;});}return _0x3f8c53;});};exports['dirName']=function(){return __dirname;};