Built motion from commit 994c64e1.|2.6.1
[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 _0x7106=['error\x20convert','info','finish\x20to\x20convert','start','resolve','generate','.wav','writeFileSync','base64','then','chmodSync','777','split','readFileSync','toString','googleCloudTTS','https://texttospeech.googleapis.com/v1/','?key=','ssml','input','audioConfig','MP3','text:synthesize','POST','tmp','.mp3','from','writeFile','googleCloudTTS\x20path','googleTTS','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','utf8','application/x-www-form-urlencoded','f.req=','stringify','jQ1olc','generic','slice','parse\x20response\x20failed:\x0a','length','text\x20length\x20limit\x20reached','\x22\x20might\x20not\x20exist','googleASR','asr','uri','results','alternatives','transcript','map','confidence','join','googleASR\x20transcription','googleASR\x20confidence','catch','message','googleDialogflow','textRequest','result','source','action','fulfillment','speech','score','code','metadata','endConversation','isFallbackIntent','replace','SessionsClient','sessionPath','detectIntent','Dialogflow\x20V2\x20response:','queryResult','allRequiredParamsPresent','diagnosticInfo','fields','end_conversation','boolValue','fulfillmentText','intent','name','displayName','isFallback','languageCode','intentDetectionConfidence','tildeASR','Tilde\x20ASR\x20transcription','awsPolly','polly','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','nda','text','channelData','CustomAction','CustomActionData','AudioFromTts','audiofile','dirName','bluebird','http','md5','querystring','request-promise','randomstring','google-tts-api','url','parse','util','./aws','./google','./sestek','../../../config/logger','agi','https://api.ispeech.org/api/rest','protocol','https:','host','path','WHAT_EVER','get','statusCode','error','request\x20to\x20','\x20failed,\x20status\x20code\x20=\x20','statusMessage','createWriteStream','finish','close','unlink','pipe','end','data','transcode','wav'];(function(_0x460adc,_0x14ecf2){var _0x378c0a=function(_0x29c1f3){while(--_0x29c1f3){_0x460adc['push'](_0x460adc['shift']());}};_0x378c0a(++_0x14ecf2);}(_0x7106,0x69));var _0x6710=function(_0x5464a3,_0x97136d){_0x5464a3=_0x5464a3-0x0;var _0x381989=_0x7106[_0x5464a3];return _0x381989;};'use strict';var apiai=require('apiai-promise');var BPromise=require(_0x6710('0x0'));var dialogflow=require('dialogflow');var fs=require('fs');var http=require(_0x6710('0x1'));var https=require('https');var md5=require(_0x6710('0x2'));var path=require('path');var querystring=require(_0x6710('0x3'));var rp=require(_0x6710('0x4'));var rs=require(_0x6710('0x5'));var sox=require('sox');var tts=require(_0x6710('0x6'));var urlParse=require(_0x6710('0x7'))[_0x6710('0x8')];var util=require(_0x6710('0x9'));var aws=require(_0x6710('0xa'));var google=require(_0x6710('0xb'));var sestek=require(_0x6710('0xc'));var tilde=require('./tilde');var logger=require(_0x6710('0xd'))(_0x6710('0xe'));var ISPEECH_API=_0x6710('0xf');function downloadFile(_0x47c757,_0x34159f){return new BPromise(function(_0x113676,_0x5d1359){var _0x5f3dc9=urlParse(_0x47c757);var _0x1c05e6=_0x5f3dc9[_0x6710('0x10')]===_0x6710('0x11')?https:http;var _0x76bfe5={'host':_0x5f3dc9[_0x6710('0x12')],'path':_0x5f3dc9[_0x6710('0x13')],'headers':{'user-agent':_0x6710('0x14')}};_0x1c05e6[_0x6710('0x15')](_0x76bfe5,function(_0x258096){if(_0x258096[_0x6710('0x16')]!==0xc8){logger[_0x6710('0x17')](_0x6710('0x18')+_0x47c757+_0x6710('0x19')+_0x258096[_0x6710('0x16')]+'\x20('+_0x258096[_0x6710('0x1a')]+')');_0x5d1359(new Error(_0x6710('0x18')+_0x47c757+_0x6710('0x19')+_0x258096[_0x6710('0x16')]+'\x20('+_0x258096['statusMessage']+')'));return;}var _0x11cad6=fs[_0x6710('0x1b')](_0x34159f);_0x11cad6['on'](_0x6710('0x1c'),function(){logger['info']('finish\x20download\x20file');_0x11cad6[_0x6710('0x1d')](_0x113676);});_0x11cad6['on'](_0x6710('0x17'),function(_0x701cb0){fs[_0x6710('0x1e')](_0x34159f);logger['error']('download\x20error',_0x701cb0);_0x5d1359(_0x701cb0);});_0x258096[_0x6710('0x1f')](_0x11cad6);})['on'](_0x6710('0x17'),function(_0x43356c){logger[_0x6710('0x17')](_0x43356c);_0x5d1359(_0x43356c);})[_0x6710('0x20')]();});}function uploadFile(_0x1d034f){return new BPromise(function(_0x59bff4,_0x4494e8){var _0x532a07=urlParse(_0x1d034f);var _0x5b49a2=_0x532a07['protocol']==='https:'?https:http;var _0x511508={'host':_0x532a07['host'],'path':_0x532a07[_0x6710('0x13')],'headers':{'user-agent':_0x6710('0x14')}};_0x5b49a2[_0x6710('0x15')](_0x511508,function(_0x439a66){if(_0x439a66['statusCode']!==0xc8){_0x4494e8(new Error(_0x6710('0x18')+_0x1d034f+_0x6710('0x19')+_0x439a66[_0x6710('0x16')]+'\x20('+_0x439a66[_0x6710('0x1a')]+')'));return;}var _0xe9c4a2='';_0x439a66['on'](_0x6710('0x21'),function(_0x46ef9f){_0xe9c4a2+=_0x46ef9f;});_0x439a66['on']('end',function(){_0x59bff4(_0xe9c4a2);});})['on'](_0x6710('0x17'),function(_0x48d582){_0x4494e8(_0x48d582);})[_0x6710('0x20')]();});}function convertFile(_0x35f3a6,_0x11af91){return new BPromise(function(_0x24e27d,_0x3d078b){var _0x14212f=sox[_0x6710('0x22')](_0x35f3a6,_0x11af91,{'sampleRate':0x1f40,'format':_0x6710('0x23'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x14212f['on'](_0x6710('0x17'),function(_0x286875){logger[_0x6710('0x17')](_0x6710('0x24'),_0x286875);_0x3d078b(_0x286875);});_0x14212f['on'](_0x6710('0x20'),function(){logger[_0x6710('0x25')](_0x6710('0x26'));_0x24e27d();});_0x14212f[_0x6710('0x27')]();});}function base64Decode(_0x11b201,_0x389366){var _0x4a8182=path[_0x6710('0x28')](__dirname,'tmp',rs[_0x6710('0x29')](0x4)+_0x6710('0x2a'));fs[_0x6710('0x2b')](_0x4a8182,_0x11b201,_0x6710('0x2c'));return convertFile(_0x4a8182,_0x389366)[_0x6710('0x2d')](function(){try{fs['unlink'](_0x4a8182);fs[_0x6710('0x2e')](_0x389366,_0x6710('0x2f'));}catch(_0x32921e){logger[_0x6710('0x17')](_0x32921e);}return _0x389366[_0x6710('0x30')]('.')[0x0];});}function base64Encode(_0x18267b){var _0x3952bf=fs[_0x6710('0x31')](_0x18267b);return new Buffer(_0x3952bf)[_0x6710('0x32')](_0x6710('0x2c'));}exports[_0x6710('0x33')]=function(_0x8268ae,_0xa3e9e0,_0x1133c9,_0x2d2426,_0x14ab43,_0x165b2d){var _0x2b1125,_0x32d399;var _0x29f2ee=_0x6710('0x34');var _0x4a87be=_0x6710('0x35')+_0x8268ae;var _0xbc923f={};if(_0xa3e9e0===_0x6710('0x36')){_0xbc923f[_0x6710('0x37')]={'ssml':_0x1133c9};}else{_0xbc923f[_0x6710('0x37')]={'text':_0x1133c9};};_0xbc923f['voice']={'languageCode':_0x2d2426,'ssmlGender':_0x14ab43};_0xbc923f[_0x6710('0x38')]={'audioEncoding':_0x6710('0x39'),'sampleRateHertz':0x1f40};var _0x10ee7f={'url':_0x29f2ee+_0x6710('0x3a')+_0x4a87be,'method':_0x6710('0x3b'),'json':!![],'body':_0xbc923f};return rp(_0x10ee7f)[_0x6710('0x2d')](function(_0x5c4205){return new BPromise(function(_0x2eb2eb,_0x2cd126){_0x2b1125=path[_0x6710('0x28')](__dirname,_0x6710('0x3c'),rs[_0x6710('0x29')](0x4)+_0x6710('0x3d'));var _0x4a6eb1=Buffer[_0x6710('0x3e')](_0x5c4205['audioContent'],_0x6710('0x2c'));return fs[_0x6710('0x3f')](_0x2b1125,_0x4a6eb1,function(_0x322536){_0x2cd126(_0x322536);},function(_0x375446){fs[_0x6710('0x2e')](_0x2b1125,_0x6710('0x2f'));_0x2eb2eb(_0x375446);});});})[_0x6710('0x2d')](function(_0x4df3f0){_0x32d399=path[_0x6710('0x28')](__dirname,_0x6710('0x3c'),rs['generate'](0x4)+_0x6710('0x2a'));return convertFile(_0x2b1125,_0x32d399);})[_0x6710('0x2d')](function(){try{fs[_0x6710('0x1e')](_0x2b1125);fs[_0x6710('0x2e')](_0x32d399,_0x6710('0x2f'));}catch(_0x4e7994){logger[_0x6710('0x17')](_0x4e7994);}logger[_0x6710('0x25')](_0x6710('0x40'),_0x32d399[_0x6710('0x30')]('.')[0x0]);return _0x32d399['split']('.')[0x0];});};exports[_0x6710('0x41')]=function(_0x4eb7fb,_0xa93e95){var _0x53ce32=_0x6710('0x42');var _0x25a726,_0x20d7e4;var _0xe06acd;var _0x29e430={'encoding':_0x6710('0x43'),'method':_0x6710('0x3b'),'timeout':0x2710,'url':_0x53ce32,'headers':{'Content-Type':_0x6710('0x44')},'body':_0x6710('0x45')+encodeURIComponent(JSON[_0x6710('0x46')]([[[_0x6710('0x47'),JSON['stringify']([_0x4eb7fb,_0xa93e95||'en',![],'null']),null,_0x6710('0x48')]]]))};return rp(_0x29e430)[_0x6710('0x2d')](function(_0x4289f3){try{_0xe06acd=eval(_0x4289f3[_0x6710('0x49')](0x5))[0x0][0x2];}catch(_0x224396){throw new Error(_0x6710('0x4a')+_0x4289f3['data']);}if(!_0xe06acd){if(_0x4eb7fb[_0x6710('0x4b')]>0xc8){throw new Error(_0x6710('0x4c'));}else{throw new Error('lang\x20\x22'+_0xa93e95+_0x6710('0x4d'));}}try{_0xe06acd=eval(_0xe06acd)[0x0];}catch(_0x142c56){throw new Error(_0x6710('0x4a')+res[_0x6710('0x21')]);}const _0x321c76=_0xe06acd;_0x25a726=path['resolve'](__dirname,'tmp',rs[_0x6710('0x29')](0x4)+_0x6710('0x3d'));fs[_0x6710('0x2b')](_0x25a726,_0xe06acd,{'encoding':'base64'});_0x20d7e4=path[_0x6710('0x28')](__dirname,_0x6710('0x3c'),rs[_0x6710('0x29')](0x4)+'.wav');return convertFile(_0x25a726,_0x20d7e4);})[_0x6710('0x2d')](function(){try{fs[_0x6710('0x1e')](_0x25a726);fs[_0x6710('0x2e')](_0x20d7e4,'777');}catch(_0x21d40f){logger[_0x6710('0x17')](_0x21d40f);}logger[_0x6710('0x25')]('goggleTTS\x20path',_0x20d7e4[_0x6710('0x30')]('.')[0x0]);return _0x20d7e4[_0x6710('0x30')]('.')[0x0];});};exports[_0x6710('0x4e')]=function(_0x262783,_0x1f64a2,_0xf2e696){return google[_0x6710('0x4f')](_0x262783,_0x1f64a2,_0xf2e696)['then'](function(_0x2d9906){logger[_0x6710('0x25')](_0x2d9906[_0x6710('0x50')]);return rp(_0x2d9906);})[_0x6710('0x2d')](function(_0x3272c0){var _0xbcf5b='';var _0x21937d=0x0;try{fs[_0x6710('0x1e')](_0x262783);}catch(_0x278b42){logger[_0x6710('0x17')](_0x278b42);}if(_0x3272c0&&_0x3272c0[_0x6710('0x51')]){_0xbcf5b=_0x3272c0[_0x6710('0x51')]['map'](function(_0x55338e){return _0x55338e&&_0x55338e[_0x6710('0x52')][0x0]&&_0x55338e['alternatives'][0x0][_0x6710('0x53')]?_0x55338e[_0x6710('0x52')][0x0][_0x6710('0x53')]:'';})['join']('\x0a');_0x21937d=_0x3272c0[_0x6710('0x51')][_0x6710('0x54')](function(_0x3e7a52){return _0x3e7a52&&_0x3e7a52['alternatives'][0x0]&&_0x3e7a52[_0x6710('0x52')][0x0][_0x6710('0x55')]?_0x3e7a52['alternatives'][0x0][_0x6710('0x55')]:0x0;})[_0x6710('0x56')]('\x0a');}logger['info'](_0x6710('0x57'),_0xbcf5b);logger['info'](_0x6710('0x58'),_0x21937d);return{'transcript':_0xbcf5b,'confidence':_0x21937d};})[_0x6710('0x59')](function(_0x548111){logger[_0x6710('0x17')]('[%s]\x20%s:%s',_0x548111[_0x6710('0x16')],_0x548111['name'],_0x548111[_0x6710('0x5a')]);});};exports[_0x6710('0x5b')]=function(_0x4ce9c3,_0x272967,_0x3e67b8,_0x359292){var _0x35657d=apiai(_0x272967,{'language':_0x359292||'en'});return _0x35657d[_0x6710('0x5c')](_0x3e67b8,{'sessionId':md5(_0x4ce9c3)})[_0x6710('0x2d')](function(_0x36346a){logger[_0x6710('0x25')](JSON['stringify'](_0x36346a));return{'source':_0x36346a[_0x6710('0x5d')][_0x6710('0x5e')],'resolvedQuery':_0x36346a[_0x6710('0x5d')]['resolvedQuery'],'action':_0x36346a[_0x6710('0x5d')][_0x6710('0x5f')],'actionIncomplete':_0x36346a[_0x6710('0x5d')]['actionIncomplete'],'speech':_0x36346a[_0x6710('0x5d')][_0x6710('0x60')][_0x6710('0x61')],'score':_0x36346a[_0x6710('0x5d')][_0x6710('0x62')],'statusCode':_0x36346a['status'][_0x6710('0x63')],'endConversation':_0x36346a[_0x6710('0x5d')][_0x6710('0x64')][_0x6710('0x65')]||![],'isFallbackIntent':_0x36346a[_0x6710('0x5d')]['metadata'][_0x6710('0x66')]};});};exports['googleDialogflowV2']=function(_0x4688e3,_0x4f4ed4,_0x215c28,_0x454a00,_0x1607ad,_0x29d299){var _0x54331d=_0x454a00[_0x6710('0x67')](/\\n/g,'\x0a');var _0x2ec24f={'credentials':{'private_key':_0x54331d,'client_email':_0x215c28}};var _0xce5af9=new dialogflow[(_0x6710('0x68'))](_0x2ec24f);var _0x5dae60=_0xce5af9[_0x6710('0x69')](_0x4f4ed4,md5(_0x4688e3));var _0x542604={'session':_0x5dae60,'queryInput':{'text':{'text':_0x1607ad,'languageCode':_0x29d299}}};return _0xce5af9[_0x6710('0x6a')](_0x542604)['then'](function(_0x13b243){if(_0x13b243&&_0x13b243[_0x6710('0x4b')]){logger['info'](_0x6710('0x6b'),JSON['stringify'](_0x13b243));var _0x207ff3=_0x13b243[0x0];if(_0x207ff3){var _0x4edc6a={'action':_0x207ff3['queryResult'][_0x6710('0x5f')],'allRequiredParamsPresent':_0x207ff3[_0x6710('0x6c')][_0x6710('0x6d')],'endConversation':_0x207ff3['queryResult']['diagnosticInfo']&&_0x207ff3['queryResult'][_0x6710('0x6e')][_0x6710('0x6f')]?_0x207ff3[_0x6710('0x6c')][_0x6710('0x6e')][_0x6710('0x6f')][_0x6710('0x70')][_0x6710('0x71')]:![],'fulfillmentText':_0x207ff3[_0x6710('0x6c')][_0x6710('0x72')],'intentName':_0x207ff3['queryResult'][_0x6710('0x73')][_0x6710('0x74')],'intentDisplayName':_0x207ff3[_0x6710('0x6c')]['intent'][_0x6710('0x75')],'isFallbackIntent':_0x207ff3[_0x6710('0x6c')][_0x6710('0x73')][_0x6710('0x76')],'languageCode':_0x207ff3[_0x6710('0x6c')][_0x6710('0x77')],'queryText':_0x207ff3['queryResult']['queryText'],'responseId':_0x207ff3['responseId'],'score':_0x207ff3[_0x6710('0x6c')][_0x6710('0x78')],'speech':_0x207ff3[_0x6710('0x6c')][_0x6710('0x72')],'providerResponse':JSON['stringify'](_0x13b243)};return _0x4edc6a;}}});};exports[_0x6710('0x79')]=function(_0x514c7c,_0x1a0b07,_0x3c701e,_0x5a51e3){return tilde[_0x6710('0x4f')](_0x514c7c,_0x1a0b07,_0x3c701e,_0x5a51e3)[_0x6710('0x2d')](function(_0x4411c3){try{fs[_0x6710('0x1e')](_0x514c7c);}catch(_0x13ba23){logger[_0x6710('0x17')](_0x13ba23);}logger['info'](_0x6710('0x7a'),_0x4411c3[_0x6710('0x53')]);logger[_0x6710('0x25')]('Tilde\x20ASR\x20confidence',_0x4411c3[_0x6710('0x55')]);return _0x4411c3;});};exports[_0x6710('0x7b')]=function(_0x36fee5,_0x4f2dd,_0x4e667c,_0x4c295a,_0x1ed992,_0x25fa39){var _0x251d67=path[_0x6710('0x28')](__dirname,'tmp',rs[_0x6710('0x29')](0x4)+_0x6710('0x3d'));var _0x124d36;return aws[_0x6710('0x7c')](_0x36fee5,_0x4f2dd,_0x4e667c,_0x4c295a,_0x1ed992,_0x25fa39,_0x251d67)[_0x6710('0x2d')](function(){_0x124d36=path[_0x6710('0x28')](__dirname,'tmp',rs[_0x6710('0x29')](0x4)+_0x6710('0x2a'));return convertFile(_0x251d67,_0x124d36);})[_0x6710('0x2d')](function(){try{fs[_0x6710('0x1e')](_0x251d67);fs[_0x6710('0x2e')](_0x124d36,'777');}catch(_0x47da52){logger[_0x6710('0x17')](_0x47da52);}return _0x124d36['split']('.')[0x0];});};exports['awsLex']=function(_0x1d5538,_0x40a42e,_0x6022ed,_0x37c6b6,_0x2d02cd,_0x39957b){return aws[_0x6710('0x7d')](_0x1d5538,_0x40a42e,_0x6022ed,_0x37c6b6,_0x2d02cd,_0x39957b)[_0x6710('0x2d')](function(_0x566e67){logger['info'](JSON[_0x6710('0x46')](_0x566e67));return _0x566e67;});};exports[_0x6710('0x7e')]=function(_0x469429,_0x8c26de,_0x45777a,_0x3e3417){var _0x1d0ed9=util[_0x6710('0x7f')](_0x6710('0x80'),ISPEECH_API,_0x469429,encodeURIComponent(_0x8c26de),_0x45777a,_0x3e3417);var _0x1c6c7f=path[_0x6710('0x28')](__dirname,_0x6710('0x3c'),rs['generate'](0x4)+_0x6710('0x3d'));var _0x412cf1;return downloadFile(_0x1d0ed9,_0x1c6c7f)[_0x6710('0x2d')](function(){_0x412cf1=path['resolve'](__dirname,_0x6710('0x3c'),rs[_0x6710('0x29')](0x4)+'.wav');return convertFile(_0x1c6c7f,_0x412cf1);})[_0x6710('0x2d')](function(){try{fs[_0x6710('0x1e')](_0x1c6c7f);fs['chmodSync'](_0x412cf1,_0x6710('0x2f'));}catch(_0x31314f){logger[_0x6710('0x17')](_0x31314f);}return _0x412cf1[_0x6710('0x30')]('.')[0x0];});};exports[_0x6710('0x81')]=function(_0x2b146f,_0x43770c,_0x4827af,_0x18f42f){var _0xca5449=util[_0x6710('0x7f')](_0x6710('0x82'),ISPEECH_API,_0x43770c,_0x4827af,base64Encode(_0x2b146f),_0x18f42f?util[_0x6710('0x7f')](_0x6710('0x83'),encodeURIComponent(_0x18f42f)):_0x6710('0x84'));return uploadFile(_0xca5449)[_0x6710('0x2d')](function(_0x529c63){return querystring['parse'](_0x529c63);});};exports['sestekNDA']=function(_0x37b8f0,_0x9fde29){return sestek[_0x6710('0x85')](_0x37b8f0,_0x9fde29)[_0x6710('0x2d')](function(_0x2d6314){logger['info'](JSON[_0x6710('0x46')](_0x2d6314));var _0x286cfe={'speech':_0x2d6314[_0x6710('0x86')],'action':_0x2d6314[_0x6710('0x87')]?_0x2d6314[_0x6710('0x87')][_0x6710('0x88')]:undefined,'actiondata':_0x2d6314[_0x6710('0x87')]?_0x2d6314[_0x6710('0x87')][_0x6710('0x89')]:undefined};if(_0x2d6314['channelData']&&_0x2d6314[_0x6710('0x87')][_0x6710('0x8a')]){return base64Decode(_0x2d6314[_0x6710('0x87')]['AudioFromTts']['Data'],path[_0x6710('0x28')](__dirname,_0x6710('0x3c'),rs[_0x6710('0x29')](0x4)+'.wav'))[_0x6710('0x2d')](function(_0x3824fb){_0x286cfe[_0x6710('0x8b')]=_0x3824fb;return _0x286cfe;});}return _0x286cfe;});};exports[_0x6710('0x8c')]=function(){return __dirname;};