Built motion from commit (unavailable).|2.5.14
[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 _0xf310=['fields','boolValue','fulfillmentText','name','displayName','intent','languageCode','responseId','intentDetectionConfidence','Tilde\x20ASR\x20transcription','Tilde\x20ASR\x20confidence','awsPolly','polly','awsLex','lex','ispeechTTS','format','%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3','model=%s','text','channelData','CustomAction','CustomActionData','AudioFromTts','audiofile','dirName','apiai-promise','bluebird','http','https','md5','path','querystring','randomstring','google-tts-api','url','parse','./aws','./google','./sestek','../../../config/logger','agi','https:','host','WHAT_EVER','get','statusCode','error','request\x20to\x20','\x20failed,\x20status\x20code\x20=\x20','statusMessage','finish','info','finish\x20download\x20file','close','download\x20error','pipe','end','protocol','data','wav','error\x20convert','finish\x20to\x20convert','start','tmp','generate','.wav','base64','unlink','777','split','readFileSync','https://texttospeech.googleapis.com/v1/','?key=','ssml','voice','POST','then','.mp3','from','audioContent','writeFile','chmodSync','googleCloudTTS\x20path','googleTTS','resolve','goggleTTS\x20path','googleASR','uri','results','map','alternatives','transcript','join','confidence','googleASR\x20transcription','googleASR\x20confidence','catch','[%s]\x20%s:%s','message','textRequest','stringify','result','resolvedQuery','action','actionIncomplete','speech','score','status','code','metadata','endConversation','isFallbackIntent','googleDialogflowV2','SessionsClient','sessionPath','detectIntent','length','queryResult','allRequiredParamsPresent','diagnosticInfo'];(function(_0x590b63,_0x14debb){var _0x3c9380=function(_0x58fc67){while(--_0x58fc67){_0x590b63['push'](_0x590b63['shift']());}};_0x3c9380(++_0x14debb);}(_0xf310,0x10c));var _0x0f31=function(_0x1e9f4a,_0x5b2d28){_0x1e9f4a=_0x1e9f4a-0x0;var _0x1af2b1=_0xf310[_0x1e9f4a];return _0x1af2b1;};'use strict';var apiai=require(_0x0f31('0x0'));var BPromise=require(_0x0f31('0x1'));var dialogflow=require('dialogflow');var fs=require('fs');var http=require(_0x0f31('0x2'));var https=require(_0x0f31('0x3'));var md5=require(_0x0f31('0x4'));var path=require(_0x0f31('0x5'));var querystring=require(_0x0f31('0x6'));var rp=require('request-promise');var rs=require(_0x0f31('0x7'));var sox=require('sox');var tts=require(_0x0f31('0x8'));var urlParse=require(_0x0f31('0x9'))[_0x0f31('0xa')];var util=require('util');var aws=require(_0x0f31('0xb'));var google=require(_0x0f31('0xc'));var sestek=require(_0x0f31('0xd'));var tilde=require('./tilde');var logger=require(_0x0f31('0xe'))(_0x0f31('0xf'));var ISPEECH_API='https://api.ispeech.org/api/rest';function downloadFile(_0x15a41b,_0x56e493){return new BPromise(function(_0x44cb34,_0x5b7b3e){var _0xc7e604=urlParse(_0x15a41b);var _0x1f22f9=_0xc7e604['protocol']===_0x0f31('0x10')?https:http;var _0x3f5ec1={'host':_0xc7e604[_0x0f31('0x11')],'path':_0xc7e604[_0x0f31('0x5')],'headers':{'user-agent':_0x0f31('0x12')}};_0x1f22f9[_0x0f31('0x13')](_0x3f5ec1,function(_0x5d32d3){if(_0x5d32d3[_0x0f31('0x14')]!==0xc8){logger[_0x0f31('0x15')](_0x0f31('0x16')+_0x15a41b+_0x0f31('0x17')+_0x5d32d3['statusCode']+'\x20('+_0x5d32d3[_0x0f31('0x18')]+')');_0x5b7b3e(new Error('request\x20to\x20'+_0x15a41b+_0x0f31('0x17')+_0x5d32d3[_0x0f31('0x14')]+'\x20('+_0x5d32d3[_0x0f31('0x18')]+')'));return;}var _0x3194a5=fs['createWriteStream'](_0x56e493);_0x3194a5['on'](_0x0f31('0x19'),function(){logger[_0x0f31('0x1a')](_0x0f31('0x1b'));_0x3194a5[_0x0f31('0x1c')](_0x44cb34);});_0x3194a5['on'](_0x0f31('0x15'),function(_0x15b879){fs['unlink'](_0x56e493);logger[_0x0f31('0x15')](_0x0f31('0x1d'),_0x15b879);_0x5b7b3e(_0x15b879);});_0x5d32d3[_0x0f31('0x1e')](_0x3194a5);})['on'](_0x0f31('0x15'),function(_0x51d564){logger['error'](_0x51d564);_0x5b7b3e(_0x51d564);})[_0x0f31('0x1f')]();});}function uploadFile(_0x7567a1){return new BPromise(function(_0x2a661c,_0x58535){var _0x23eb7b=urlParse(_0x7567a1);var _0x5939d3=_0x23eb7b[_0x0f31('0x20')]===_0x0f31('0x10')?https:http;var _0x46937c={'host':_0x23eb7b[_0x0f31('0x11')],'path':_0x23eb7b[_0x0f31('0x5')],'headers':{'user-agent':_0x0f31('0x12')}};_0x5939d3[_0x0f31('0x13')](_0x46937c,function(_0xc93628){if(_0xc93628[_0x0f31('0x14')]!==0xc8){_0x58535(new Error(_0x0f31('0x16')+_0x7567a1+_0x0f31('0x17')+_0xc93628['statusCode']+'\x20('+_0xc93628[_0x0f31('0x18')]+')'));return;}var _0x515cbc='';_0xc93628['on'](_0x0f31('0x21'),function(_0x1cbb6d){_0x515cbc+=_0x1cbb6d;});_0xc93628['on'](_0x0f31('0x1f'),function(){_0x2a661c(_0x515cbc);});})['on'](_0x0f31('0x15'),function(_0x506d50){_0x58535(_0x506d50);})[_0x0f31('0x1f')]();});}function convertFile(_0x858fb,_0x321587){return new BPromise(function(_0x5e6801,_0x43b518){var _0x18eccf=sox['transcode'](_0x858fb,_0x321587,{'sampleRate':0x1f40,'format':_0x0f31('0x22'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x18eccf['on'](_0x0f31('0x15'),function(_0x4cdaa4){logger['error'](_0x0f31('0x23'),_0x4cdaa4);_0x43b518(_0x4cdaa4);});_0x18eccf['on'](_0x0f31('0x1f'),function(){logger['info'](_0x0f31('0x24'));_0x5e6801();});_0x18eccf[_0x0f31('0x25')]();});}function base64Decode(_0x3bfb3d,_0x1d86c2){var _0x245bc0=path['resolve'](__dirname,_0x0f31('0x26'),rs[_0x0f31('0x27')](0x4)+_0x0f31('0x28'));fs['writeFileSync'](_0x245bc0,_0x3bfb3d,_0x0f31('0x29'));return convertFile(_0x245bc0,_0x1d86c2)['then'](function(){try{fs[_0x0f31('0x2a')](_0x245bc0);fs['chmodSync'](_0x1d86c2,_0x0f31('0x2b'));}catch(_0x24f74d){logger[_0x0f31('0x15')](_0x24f74d);}return _0x1d86c2[_0x0f31('0x2c')]('.')[0x0];});}function base64Encode(_0x30bcd9){var _0xd3b650=fs[_0x0f31('0x2d')](_0x30bcd9);return new Buffer(_0xd3b650)['toString'](_0x0f31('0x29'));}exports['googleCloudTTS']=function(_0x5bbee4,_0x5a662b,_0x113015,_0xd1eee2,_0x300b91,_0x3cc4a4){var _0x4f6248,_0x2b062f;var _0x2550c2=_0x0f31('0x2e');var _0x1c0052=_0x0f31('0x2f')+_0x5bbee4;var _0x26f5ae={};if(_0x5a662b===_0x0f31('0x30')){_0x26f5ae['input']={'ssml':_0x113015};}else{_0x26f5ae['input']={'text':_0x113015};};_0x26f5ae[_0x0f31('0x31')]={'languageCode':_0xd1eee2,'ssmlGender':_0x300b91};_0x26f5ae['audioConfig']={'audioEncoding':'MP3','sampleRateHertz':0x1f40};var _0x3d91ea={'url':_0x2550c2+'text:synthesize'+_0x1c0052,'method':_0x0f31('0x32'),'json':!![],'body':_0x26f5ae};return rp(_0x3d91ea)[_0x0f31('0x33')](function(_0x10b8c9){return new BPromise(function(_0x20f87b,_0x91560a){_0x4f6248=path['resolve'](__dirname,_0x0f31('0x26'),rs[_0x0f31('0x27')](0x4)+_0x0f31('0x34'));var _0xc3cac9=Buffer[_0x0f31('0x35')](_0x10b8c9[_0x0f31('0x36')],'base64');return fs[_0x0f31('0x37')](_0x4f6248,_0xc3cac9,function(_0x250db4){_0x91560a(_0x250db4);},function(_0x162491){fs[_0x0f31('0x38')](_0x4f6248,_0x0f31('0x2b'));_0x20f87b(_0x162491);});});})[_0x0f31('0x33')](function(_0x36a38e){_0x2b062f=path['resolve'](__dirname,'tmp',rs[_0x0f31('0x27')](0x4)+'.wav');return convertFile(_0x4f6248,_0x2b062f);})[_0x0f31('0x33')](function(){try{fs[_0x0f31('0x2a')](_0x4f6248);fs[_0x0f31('0x38')](_0x2b062f,_0x0f31('0x2b'));}catch(_0x2a987f){logger['error'](_0x2a987f);}logger[_0x0f31('0x1a')](_0x0f31('0x39'),_0x2b062f[_0x0f31('0x2c')]('.')[0x0]);return _0x2b062f['split']('.')[0x0];});};exports[_0x0f31('0x3a')]=function(_0xfa27a3,_0x1e6ac3){var _0x15581b,_0x3c5b20;return tts(_0xfa27a3,_0x1e6ac3||'en',0x1)[_0x0f31('0x33')](function(_0x46e4cd){logger[_0x0f31('0x1a')](_0x46e4cd);_0x15581b=path['resolve'](__dirname,_0x0f31('0x26'),rs[_0x0f31('0x27')](0x4)+_0x0f31('0x34'));return downloadFile(_0x46e4cd,_0x15581b);})[_0x0f31('0x33')](function(){_0x3c5b20=path[_0x0f31('0x3b')](__dirname,'tmp',rs[_0x0f31('0x27')](0x4)+_0x0f31('0x28'));return convertFile(_0x15581b,_0x3c5b20);})[_0x0f31('0x33')](function(){try{fs['unlink'](_0x15581b);fs[_0x0f31('0x38')](_0x3c5b20,_0x0f31('0x2b'));}catch(_0x4e56e9){logger[_0x0f31('0x15')](_0x4e56e9);}logger[_0x0f31('0x1a')](_0x0f31('0x3c'),_0x3c5b20[_0x0f31('0x2c')]('.')[0x0]);return _0x3c5b20[_0x0f31('0x2c')]('.')[0x0];});};exports[_0x0f31('0x3d')]=function(_0x173b5f,_0xb14da2,_0x5ef4a0){return google['asr'](_0x173b5f,_0xb14da2,_0x5ef4a0)[_0x0f31('0x33')](function(_0x7e289d){logger[_0x0f31('0x1a')](_0x7e289d[_0x0f31('0x3e')]);return rp(_0x7e289d);})[_0x0f31('0x33')](function(_0x54a5eb){var _0x27a9de='';var _0x3fbf18=0x0;try{fs[_0x0f31('0x2a')](_0x173b5f);}catch(_0x26c4e5){logger[_0x0f31('0x15')](_0x26c4e5);}if(_0x54a5eb&&_0x54a5eb[_0x0f31('0x3f')]){_0x27a9de=_0x54a5eb[_0x0f31('0x3f')][_0x0f31('0x40')](function(_0xd9a03){return _0xd9a03&&_0xd9a03[_0x0f31('0x41')][0x0]&&_0xd9a03['alternatives'][0x0]['transcript']?_0xd9a03['alternatives'][0x0][_0x0f31('0x42')]:'';})[_0x0f31('0x43')]('\x0a');_0x3fbf18=_0x54a5eb['results'][_0x0f31('0x40')](function(_0x45cd20){return _0x45cd20&&_0x45cd20[_0x0f31('0x41')][0x0]&&_0x45cd20[_0x0f31('0x41')][0x0][_0x0f31('0x44')]?_0x45cd20[_0x0f31('0x41')][0x0][_0x0f31('0x44')]:0x0;})['join']('\x0a');}logger[_0x0f31('0x1a')](_0x0f31('0x45'),_0x27a9de);logger[_0x0f31('0x1a')](_0x0f31('0x46'),_0x3fbf18);return{'transcript':_0x27a9de,'confidence':_0x3fbf18};})[_0x0f31('0x47')](function(_0x1bd3ed){logger['error'](_0x0f31('0x48'),_0x1bd3ed[_0x0f31('0x14')],_0x1bd3ed['name'],_0x1bd3ed[_0x0f31('0x49')]);});};exports['googleDialogflow']=function(_0x36e413,_0x33851a,_0x969101,_0x18fe1e){var _0x215ec7=apiai(_0x33851a,{'language':_0x18fe1e||'en'});return _0x215ec7[_0x0f31('0x4a')](_0x969101,{'sessionId':md5(_0x36e413)})[_0x0f31('0x33')](function(_0x324725){logger[_0x0f31('0x1a')](JSON[_0x0f31('0x4b')](_0x324725));return{'source':_0x324725[_0x0f31('0x4c')]['source'],'resolvedQuery':_0x324725[_0x0f31('0x4c')][_0x0f31('0x4d')],'action':_0x324725[_0x0f31('0x4c')][_0x0f31('0x4e')],'actionIncomplete':_0x324725[_0x0f31('0x4c')][_0x0f31('0x4f')],'speech':_0x324725['result']['fulfillment'][_0x0f31('0x50')],'score':_0x324725[_0x0f31('0x4c')][_0x0f31('0x51')],'statusCode':_0x324725[_0x0f31('0x52')][_0x0f31('0x53')],'endConversation':_0x324725[_0x0f31('0x4c')][_0x0f31('0x54')][_0x0f31('0x55')]||![],'isFallbackIntent':_0x324725[_0x0f31('0x4c')][_0x0f31('0x54')][_0x0f31('0x56')]};});};exports[_0x0f31('0x57')]=function(_0x5e8fc6,_0x1a9674,_0x3278b7,_0xab4975,_0x227f17,_0x3b1135){var _0x4d448d=_0xab4975['replace'](/\\n/g,'\x0a');var _0x5d272c={'credentials':{'private_key':_0x4d448d,'client_email':_0x3278b7}};var _0x5af4ee=new dialogflow[(_0x0f31('0x58'))](_0x5d272c);var _0x486adb=_0x5af4ee[_0x0f31('0x59')](_0x1a9674,md5(_0x5e8fc6));var _0x1f7106={'session':_0x486adb,'queryInput':{'text':{'text':_0x227f17,'languageCode':_0x3b1135}}};return _0x5af4ee[_0x0f31('0x5a')](_0x1f7106)[_0x0f31('0x33')](function(_0x236dc1){if(_0x236dc1&&_0x236dc1[_0x0f31('0x5b')]){logger['info']('Dialogflow\x20V2\x20response:',JSON[_0x0f31('0x4b')](_0x236dc1));var _0x2f8bd3=_0x236dc1[0x0];if(_0x2f8bd3){var _0x330444={'action':_0x2f8bd3[_0x0f31('0x5c')][_0x0f31('0x4e')],'allRequiredParamsPresent':_0x2f8bd3[_0x0f31('0x5c')][_0x0f31('0x5d')],'endConversation':_0x2f8bd3[_0x0f31('0x5c')]['diagnosticInfo']&&_0x2f8bd3['queryResult'][_0x0f31('0x5e')][_0x0f31('0x5f')]?_0x2f8bd3[_0x0f31('0x5c')][_0x0f31('0x5e')][_0x0f31('0x5f')]['end_conversation'][_0x0f31('0x60')]:![],'fulfillmentText':_0x2f8bd3[_0x0f31('0x5c')][_0x0f31('0x61')],'intentName':_0x2f8bd3[_0x0f31('0x5c')]['intent'][_0x0f31('0x62')],'intentDisplayName':_0x2f8bd3[_0x0f31('0x5c')]['intent'][_0x0f31('0x63')],'isFallbackIntent':_0x2f8bd3[_0x0f31('0x5c')][_0x0f31('0x64')]['isFallback'],'languageCode':_0x2f8bd3[_0x0f31('0x5c')][_0x0f31('0x65')],'queryText':_0x2f8bd3[_0x0f31('0x5c')]['queryText'],'responseId':_0x2f8bd3[_0x0f31('0x66')],'score':_0x2f8bd3[_0x0f31('0x5c')][_0x0f31('0x67')],'speech':_0x2f8bd3[_0x0f31('0x5c')][_0x0f31('0x61')],'providerResponse':JSON[_0x0f31('0x4b')](_0x236dc1)};return _0x330444;}}});};exports['tildeASR']=function(_0x1ef55d,_0x38dd77,_0x2cc0b6,_0x37fe49){return tilde['asr'](_0x1ef55d,_0x38dd77,_0x2cc0b6,_0x37fe49)[_0x0f31('0x33')](function(_0x34047b){try{fs[_0x0f31('0x2a')](_0x1ef55d);}catch(_0x34b8ce){logger[_0x0f31('0x15')](_0x34b8ce);}logger[_0x0f31('0x1a')](_0x0f31('0x68'),_0x34047b[_0x0f31('0x42')]);logger[_0x0f31('0x1a')](_0x0f31('0x69'),_0x34047b['confidence']);return _0x34047b;});};exports[_0x0f31('0x6a')]=function(_0x4c21a1,_0x886b2,_0x5ce889,_0x380aa3,_0x354674,_0x3355ca){var _0x7cc262=path['resolve'](__dirname,'tmp',rs['generate'](0x4)+_0x0f31('0x34'));var _0x2c3195;return aws[_0x0f31('0x6b')](_0x4c21a1,_0x886b2,_0x5ce889,_0x380aa3,_0x354674,_0x3355ca,_0x7cc262)[_0x0f31('0x33')](function(){_0x2c3195=path['resolve'](__dirname,_0x0f31('0x26'),rs['generate'](0x4)+_0x0f31('0x28'));return convertFile(_0x7cc262,_0x2c3195);})[_0x0f31('0x33')](function(){try{fs['unlink'](_0x7cc262);fs[_0x0f31('0x38')](_0x2c3195,_0x0f31('0x2b'));}catch(_0xe5d4ae){logger[_0x0f31('0x15')](_0xe5d4ae);}return _0x2c3195[_0x0f31('0x2c')]('.')[0x0];});};exports[_0x0f31('0x6c')]=function(_0x3cf0a7,_0x3f562c,_0x41fd81,_0x7389e0,_0x39651b,_0x291f2d){return aws[_0x0f31('0x6d')](_0x3cf0a7,_0x3f562c,_0x41fd81,_0x7389e0,_0x39651b,_0x291f2d)[_0x0f31('0x33')](function(_0x1f7260){logger[_0x0f31('0x1a')](JSON[_0x0f31('0x4b')](_0x1f7260));return _0x1f7260;});};exports[_0x0f31('0x6e')]=function(_0x2cf3af,_0xa71236,_0x34c450,_0x1f23f9){var _0x56789c=util[_0x0f31('0x6f')](_0x0f31('0x70'),ISPEECH_API,_0x2cf3af,encodeURIComponent(_0xa71236),_0x34c450,_0x1f23f9);var _0x155a82=path['resolve'](__dirname,_0x0f31('0x26'),rs[_0x0f31('0x27')](0x4)+_0x0f31('0x34'));var _0x3a969c;return downloadFile(_0x56789c,_0x155a82)[_0x0f31('0x33')](function(){_0x3a969c=path['resolve'](__dirname,'tmp',rs[_0x0f31('0x27')](0x4)+_0x0f31('0x28'));return convertFile(_0x155a82,_0x3a969c);})[_0x0f31('0x33')](function(){try{fs['unlink'](_0x155a82);fs['chmodSync'](_0x3a969c,_0x0f31('0x2b'));}catch(_0x35e1aa){logger[_0x0f31('0x15')](_0x35e1aa);}return _0x3a969c[_0x0f31('0x2c')]('.')[0x0];});};exports['ispeechASR']=function(_0xbe3aa3,_0x2aae07,_0x50c31c,_0x543c0e){var _0x2400a6=util[_0x0f31('0x6f')]('%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s',ISPEECH_API,_0x2aae07,_0x50c31c,base64Encode(_0xbe3aa3),_0x543c0e?util[_0x0f31('0x6f')](_0x0f31('0x71'),encodeURIComponent(_0x543c0e)):'freeform=3');return uploadFile(_0x2400a6)[_0x0f31('0x33')](function(_0x2f7202){return querystring[_0x0f31('0xa')](_0x2f7202);});};exports['sestekNDA']=function(_0x155b70,_0x4558e2){return sestek['nda'](_0x155b70,_0x4558e2)['then'](function(_0x540ac5){logger['info'](JSON['stringify'](_0x540ac5));var _0x44bcab={'speech':_0x540ac5[_0x0f31('0x72')],'action':_0x540ac5[_0x0f31('0x73')]?_0x540ac5[_0x0f31('0x73')][_0x0f31('0x74')]:undefined,'actiondata':_0x540ac5[_0x0f31('0x73')]?_0x540ac5[_0x0f31('0x73')][_0x0f31('0x75')]:undefined};if(_0x540ac5[_0x0f31('0x73')]&&_0x540ac5[_0x0f31('0x73')][_0x0f31('0x76')]){return base64Decode(_0x540ac5[_0x0f31('0x73')][_0x0f31('0x76')]['Data'],path[_0x0f31('0x3b')](__dirname,_0x0f31('0x26'),rs['generate'](0x4)+'.wav'))[_0x0f31('0x33')](function(_0x296a4a){_0x44bcab[_0x0f31('0x77')]=_0x296a4a;return _0x44bcab;});}return _0x44bcab;});};exports[_0x0f31('0x78')]=function(){return __dirname;};