b629d3e4fda473e5adddce903022af42907402a4
[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 _0xb25c=['./aws','./tilde','./sestek','agi','protocol','https:','host','WHAT_EVER','get','statusCode','error','request\x20to\x20','\x20failed,\x20status\x20code\x20=\x20','statusMessage','createWriteStream','finish','finish\x20download\x20file','close','unlink','download\x20error','pipe','end','transcode','error\x20convert','start','tmp','generate','.wav','writeFileSync','base64','then','chmodSync','777','split','readFileSync','toString','https://texttospeech.googleapis.com/v1/','?key=','ssml','input','voice','audioConfig','MP3','text:synthesize','POST','resolve','from','info','googleCloudTTS\x20path','.mp3','goggleTTS\x20path','googleASR','asr','uri','results','map','alternatives','transcript','join','confidence','googleASR\x20transcription','googleASR\x20confidence','name','message','result','source','action','actionIncomplete','fulfillment','speech','score','status','code','metadata','endConversation','tildeASR','Tilde\x20ASR\x20transcription','Tilde\x20ASR\x20confidence','awsPolly','awsLex','lex','stringify','ispeechTTS','format','%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s','model=%s','freeform=3','parse','sestekNDA','nda','text','channelData','CustomAction','AudioFromTts','audiofile','path','http','https','url','randomstring','sox','request-promise','util','querystring','google-tts-api','apiai-promise','md5','./google'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xb25c,0x137));var _0xcb25=function(_0xef33ce,_0xcf290c){_0xef33ce=_0xef33ce-0x0;var _0x2bfe08=_0xb25c[_0xef33ce];return _0x2bfe08;};'use strict';var fs=require('fs');var path=require(_0xcb25('0x0'));var http=require(_0xcb25('0x1'));var https=require(_0xcb25('0x2'));var urlParse=require(_0xcb25('0x3'))['parse'];var BPromise=require('bluebird');var rs=require(_0xcb25('0x4'));var sox=require(_0xcb25('0x5'));var rp=require(_0xcb25('0x6'));var util=require(_0xcb25('0x7'));var querystring=require(_0xcb25('0x8'));var tts=require(_0xcb25('0x9'));var apiai=require(_0xcb25('0xa'));var md5=require(_0xcb25('0xb'));var google=require(_0xcb25('0xc'));var aws=require(_0xcb25('0xd'));var tilde=require(_0xcb25('0xe'));var sestek=require(_0xcb25('0xf'));var logger=require('../../../config/logger')(_0xcb25('0x10'));var ISPEECH_API='https://api.ispeech.org/api/rest';function downloadFile(_0x4ab728,_0x5542f3){return new BPromise(function(_0x445141,_0x396bce){var _0x7c2208=urlParse(_0x4ab728);var _0xc6ada3=_0x7c2208[_0xcb25('0x11')]===_0xcb25('0x12')?https:http;var _0x1f69d4={'host':_0x7c2208[_0xcb25('0x13')],'path':_0x7c2208[_0xcb25('0x0')],'headers':{'user-agent':_0xcb25('0x14')}};_0xc6ada3[_0xcb25('0x15')](_0x1f69d4,function(_0x9c8cca){if(_0x9c8cca[_0xcb25('0x16')]!==0xc8){logger[_0xcb25('0x17')](_0xcb25('0x18')+_0x4ab728+_0xcb25('0x19')+_0x9c8cca[_0xcb25('0x16')]+'\x20('+_0x9c8cca[_0xcb25('0x1a')]+')');_0x396bce(new Error(_0xcb25('0x18')+_0x4ab728+_0xcb25('0x19')+_0x9c8cca[_0xcb25('0x16')]+'\x20('+_0x9c8cca[_0xcb25('0x1a')]+')'));return;}var _0x40bce3=fs[_0xcb25('0x1b')](_0x5542f3);_0x40bce3['on'](_0xcb25('0x1c'),function(){logger['info'](_0xcb25('0x1d'));_0x40bce3[_0xcb25('0x1e')](_0x445141);});_0x40bce3['on'](_0xcb25('0x17'),function(_0x4392e7){fs[_0xcb25('0x1f')](_0x5542f3);logger[_0xcb25('0x17')](_0xcb25('0x20'),_0x4392e7);_0x396bce(_0x4392e7);});_0x9c8cca[_0xcb25('0x21')](_0x40bce3);})['on']('error',function(_0x4f566){logger[_0xcb25('0x17')](_0x4f566);_0x396bce(_0x4f566);})[_0xcb25('0x22')]();});}function uploadFile(_0x18426a){return new BPromise(function(_0x31552f,_0x59f9b9){var _0x47b236=urlParse(_0x18426a);var _0x569111=_0x47b236[_0xcb25('0x11')]===_0xcb25('0x12')?https:http;var _0x265953={'host':_0x47b236[_0xcb25('0x13')],'path':_0x47b236[_0xcb25('0x0')],'headers':{'user-agent':_0xcb25('0x14')}};_0x569111['get'](_0x265953,function(_0x13ba15){if(_0x13ba15[_0xcb25('0x16')]!==0xc8){_0x59f9b9(new Error(_0xcb25('0x18')+_0x18426a+_0xcb25('0x19')+_0x13ba15['statusCode']+'\x20('+_0x13ba15[_0xcb25('0x1a')]+')'));return;}var _0x3be234='';_0x13ba15['on']('data',function(_0x4e50f6){_0x3be234+=_0x4e50f6;});_0x13ba15['on'](_0xcb25('0x22'),function(){_0x31552f(_0x3be234);});})['on']('error',function(_0x326b69){_0x59f9b9(_0x326b69);})[_0xcb25('0x22')]();});}function convertFile(_0xb803e,_0x43c3cb){return new BPromise(function(_0x479880,_0x58b3e6){var _0x1c37b0=sox[_0xcb25('0x23')](_0xb803e,_0x43c3cb,{'sampleRate':0x1f40,'format':'wav','channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x1c37b0['on'](_0xcb25('0x17'),function(_0x5d617c){logger[_0xcb25('0x17')](_0xcb25('0x24'),_0x5d617c);_0x58b3e6(_0x5d617c);});_0x1c37b0['on']('end',function(){logger['info']('finish\x20to\x20convert');_0x479880();});_0x1c37b0[_0xcb25('0x25')]();});}function base64Decode(_0x26d79e,_0x75d921){var _0x2ce438=path['resolve'](__dirname,_0xcb25('0x26'),rs[_0xcb25('0x27')](0x4)+_0xcb25('0x28'));fs[_0xcb25('0x29')](_0x2ce438,_0x26d79e,_0xcb25('0x2a'));return convertFile(_0x2ce438,_0x75d921)[_0xcb25('0x2b')](function(){try{fs['unlink'](_0x2ce438);fs[_0xcb25('0x2c')](_0x75d921,_0xcb25('0x2d'));}catch(_0x27d473){logger['error'](_0x27d473);}return _0x75d921[_0xcb25('0x2e')]('.')[0x0];});}function base64Encode(_0x26cee4){var _0x216556=fs[_0xcb25('0x2f')](_0x26cee4);return new Buffer(_0x216556)[_0xcb25('0x30')](_0xcb25('0x2a'));}exports['googleCloudTTS']=function(_0x46aa11,_0x479fe7,_0x18ba83,_0x138c5e,_0x5f3a9f,_0x4f9bf0){var _0x13691f,_0x1e384d;var _0x2ddfe7=_0xcb25('0x31');var _0x470e77=_0xcb25('0x32')+_0x46aa11;var _0xd65a8c={};if(_0x479fe7===_0xcb25('0x33')){_0xd65a8c[_0xcb25('0x34')]={'ssml':_0x18ba83};}else{_0xd65a8c[_0xcb25('0x34')]={'text':_0x18ba83};};_0xd65a8c[_0xcb25('0x35')]={'languageCode':_0x138c5e,'ssmlGender':_0x5f3a9f};_0xd65a8c[_0xcb25('0x36')]={'audioEncoding':_0xcb25('0x37'),'sampleRateHertz':0x1f40};var _0x424a90={'url':_0x2ddfe7+_0xcb25('0x38')+_0x470e77,'method':_0xcb25('0x39'),'json':!![],'body':_0xd65a8c};return rp(_0x424a90)[_0xcb25('0x2b')](function(_0x137e3d){return new BPromise(function(_0x3608b3,_0x40bf6f){_0x13691f=path[_0xcb25('0x3a')](__dirname,_0xcb25('0x26'),rs['generate'](0x4)+'.mp3');var _0x52d0a1=Buffer[_0xcb25('0x3b')](_0x137e3d['audioContent'],_0xcb25('0x2a'));return fs['writeFile'](_0x13691f,_0x52d0a1,function(_0x264f7a){_0x40bf6f(_0x264f7a);},function(_0xd7dde2){fs['chmodSync'](_0x13691f,_0xcb25('0x2d'));_0x3608b3(_0xd7dde2);});});})[_0xcb25('0x2b')](function(_0x46098a){_0x1e384d=path[_0xcb25('0x3a')](__dirname,_0xcb25('0x26'),rs['generate'](0x4)+_0xcb25('0x28'));return convertFile(_0x13691f,_0x1e384d);})['then'](function(){try{fs['unlink'](_0x13691f);fs[_0xcb25('0x2c')](_0x1e384d,_0xcb25('0x2d'));}catch(_0x16f4e2){logger[_0xcb25('0x17')](_0x16f4e2);}logger[_0xcb25('0x3c')](_0xcb25('0x3d'),_0x1e384d[_0xcb25('0x2e')]('.')[0x0]);return _0x1e384d[_0xcb25('0x2e')]('.')[0x0];});};exports['googleTTS']=function(_0x4c16e1,_0x16cdf4){var _0x214217,_0x39a2f1;return tts(_0x4c16e1,_0x16cdf4||'en',0x1)['then'](function(_0x33bd65){logger[_0xcb25('0x3c')](_0x33bd65);_0x214217=path[_0xcb25('0x3a')](__dirname,_0xcb25('0x26'),rs['generate'](0x4)+_0xcb25('0x3e'));return downloadFile(_0x33bd65,_0x214217);})['then'](function(){_0x39a2f1=path['resolve'](__dirname,_0xcb25('0x26'),rs[_0xcb25('0x27')](0x4)+_0xcb25('0x28'));return convertFile(_0x214217,_0x39a2f1);})[_0xcb25('0x2b')](function(){try{fs[_0xcb25('0x1f')](_0x214217);fs['chmodSync'](_0x39a2f1,'777');}catch(_0x4ae057){logger[_0xcb25('0x17')](_0x4ae057);}logger[_0xcb25('0x3c')](_0xcb25('0x3f'),_0x39a2f1[_0xcb25('0x2e')]('.')[0x0]);return _0x39a2f1['split']('.')[0x0];});};exports[_0xcb25('0x40')]=function(_0x4681fe,_0x1d9c32,_0x44e179){return google[_0xcb25('0x41')](_0x4681fe,_0x1d9c32,_0x44e179)[_0xcb25('0x2b')](function(_0x2e307a){logger[_0xcb25('0x3c')](_0x2e307a[_0xcb25('0x42')]);return rp(_0x2e307a);})[_0xcb25('0x2b')](function(_0x2f3990){var _0x1dfc5a='';var _0x379ad6=0x0;try{fs[_0xcb25('0x1f')](_0x4681fe);}catch(_0x29f2d7){logger[_0xcb25('0x17')](_0x29f2d7);}if(_0x2f3990&&_0x2f3990['results']){_0x1dfc5a=_0x2f3990[_0xcb25('0x43')][_0xcb25('0x44')](function(_0xf1ad40){return _0xf1ad40&&_0xf1ad40[_0xcb25('0x45')][0x0]&&_0xf1ad40[_0xcb25('0x45')][0x0][_0xcb25('0x46')]?_0xf1ad40[_0xcb25('0x45')][0x0][_0xcb25('0x46')]:'';})[_0xcb25('0x47')]('\x0a');_0x379ad6=_0x2f3990[_0xcb25('0x43')][_0xcb25('0x44')](function(_0x1506d7){return _0x1506d7&&_0x1506d7[_0xcb25('0x45')][0x0]&&_0x1506d7['alternatives'][0x0][_0xcb25('0x48')]?_0x1506d7[_0xcb25('0x45')][0x0][_0xcb25('0x48')]:0x0;})[_0xcb25('0x47')]('\x0a');}logger['info'](_0xcb25('0x49'),_0x1dfc5a);logger[_0xcb25('0x3c')](_0xcb25('0x4a'),_0x379ad6);return{'transcript':_0x1dfc5a,'confidence':_0x379ad6};})['catch'](function(_0x200d45){logger[_0xcb25('0x17')]('[%s]\x20%s:%s',_0x200d45[_0xcb25('0x16')],_0x200d45[_0xcb25('0x4b')],_0x200d45[_0xcb25('0x4c')]);});};exports['googleDialogflow']=function(_0x21e175,_0x4a789c,_0x587354,_0x3eb1fa){var _0x5ab988=apiai(_0x4a789c,{'language':_0x3eb1fa||'en'});return _0x5ab988['textRequest'](_0x587354,{'sessionId':md5(_0x21e175)})[_0xcb25('0x2b')](function(_0x184fff){logger[_0xcb25('0x3c')](JSON['stringify'](_0x184fff));return{'source':_0x184fff[_0xcb25('0x4d')][_0xcb25('0x4e')],'resolvedQuery':_0x184fff[_0xcb25('0x4d')]['resolvedQuery'],'action':_0x184fff[_0xcb25('0x4d')][_0xcb25('0x4f')],'actionIncomplete':_0x184fff['result'][_0xcb25('0x50')],'speech':_0x184fff[_0xcb25('0x4d')][_0xcb25('0x51')][_0xcb25('0x52')],'score':_0x184fff[_0xcb25('0x4d')][_0xcb25('0x53')],'statusCode':_0x184fff[_0xcb25('0x54')][_0xcb25('0x55')],'endConversation':_0x184fff[_0xcb25('0x4d')][_0xcb25('0x56')][_0xcb25('0x57')]||![],'isFallbackIntent':_0x184fff['result'][_0xcb25('0x56')]['isFallbackIntent']};});};exports[_0xcb25('0x58')]=function(_0x1370ba,_0x276d44,_0x2f4a12,_0x64ea8d){return tilde['asr'](_0x1370ba,_0x276d44,_0x2f4a12,_0x64ea8d)[_0xcb25('0x2b')](function(_0x463635){try{fs['unlink'](_0x1370ba);}catch(_0x12130a){logger[_0xcb25('0x17')](_0x12130a);}logger[_0xcb25('0x3c')](_0xcb25('0x59'),_0x463635['transcript']);logger['info'](_0xcb25('0x5a'),_0x463635['confidence']);return _0x463635;});};exports[_0xcb25('0x5b')]=function(_0x3cdf28,_0x566ab3,_0x5de1b7,_0x5a3a3e,_0x14afdf,_0x12e79b){var _0x33d7a9=path[_0xcb25('0x3a')](__dirname,'tmp',rs[_0xcb25('0x27')](0x4)+'.mp3');var _0xe07e3f;return aws['polly'](_0x3cdf28,_0x566ab3,_0x5de1b7,_0x5a3a3e,_0x14afdf,_0x12e79b,_0x33d7a9)['then'](function(){_0xe07e3f=path['resolve'](__dirname,_0xcb25('0x26'),rs[_0xcb25('0x27')](0x4)+_0xcb25('0x28'));return convertFile(_0x33d7a9,_0xe07e3f);})['then'](function(){try{fs[_0xcb25('0x1f')](_0x33d7a9);fs['chmodSync'](_0xe07e3f,'777');}catch(_0x264d30){logger[_0xcb25('0x17')](_0x264d30);}return _0xe07e3f[_0xcb25('0x2e')]('.')[0x0];});};exports[_0xcb25('0x5c')]=function(_0xd39dc5,_0x1b1146,_0x537ebb,_0xea40a6,_0x36c813,_0x1ce663){return aws[_0xcb25('0x5d')](_0xd39dc5,_0x1b1146,_0x537ebb,_0xea40a6,_0x36c813,_0x1ce663)[_0xcb25('0x2b')](function(_0x59791e){logger[_0xcb25('0x3c')](JSON[_0xcb25('0x5e')](_0x59791e));return _0x59791e;});};exports[_0xcb25('0x5f')]=function(_0x739d22,_0x1027dc,_0x44c798,_0x40e23c){var _0x4624d4=util[_0xcb25('0x60')]('%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3',ISPEECH_API,_0x739d22,encodeURIComponent(_0x1027dc),_0x44c798,_0x40e23c);var _0x3f9179=path['resolve'](__dirname,_0xcb25('0x26'),rs['generate'](0x4)+_0xcb25('0x3e'));var _0x537029;return downloadFile(_0x4624d4,_0x3f9179)[_0xcb25('0x2b')](function(){_0x537029=path[_0xcb25('0x3a')](__dirname,_0xcb25('0x26'),rs[_0xcb25('0x27')](0x4)+'.wav');return convertFile(_0x3f9179,_0x537029);})[_0xcb25('0x2b')](function(){try{fs[_0xcb25('0x1f')](_0x3f9179);fs[_0xcb25('0x2c')](_0x537029,_0xcb25('0x2d'));}catch(_0x119e61){logger[_0xcb25('0x17')](_0x119e61);}return _0x537029['split']('.')[0x0];});};exports['ispeechASR']=function(_0x2240cb,_0x2785a0,_0x471d97,_0x4d79d8){var _0x27a0cf=util['format'](_0xcb25('0x61'),ISPEECH_API,_0x2785a0,_0x471d97,base64Encode(_0x2240cb),_0x4d79d8?util[_0xcb25('0x60')](_0xcb25('0x62'),encodeURIComponent(_0x4d79d8)):_0xcb25('0x63'));return uploadFile(_0x27a0cf)[_0xcb25('0x2b')](function(_0x439d74){return querystring[_0xcb25('0x64')](_0x439d74);});};exports[_0xcb25('0x65')]=function(_0x46a2b1,_0x266de3){return sestek[_0xcb25('0x66')](_0x46a2b1,_0x266de3)[_0xcb25('0x2b')](function(_0x1af032){logger[_0xcb25('0x3c')](JSON[_0xcb25('0x5e')](_0x1af032));var _0x421500={'speech':_0x1af032[_0xcb25('0x67')],'action':_0x1af032[_0xcb25('0x68')]?_0x1af032[_0xcb25('0x68')][_0xcb25('0x69')]:undefined,'actiondata':_0x1af032[_0xcb25('0x68')]?_0x1af032[_0xcb25('0x68')]['CustomActionData']:undefined};if(_0x1af032[_0xcb25('0x68')]&&_0x1af032[_0xcb25('0x68')][_0xcb25('0x6a')]){return base64Decode(_0x1af032[_0xcb25('0x68')][_0xcb25('0x6a')]['Data'],path[_0xcb25('0x3a')](__dirname,_0xcb25('0x26'),rs[_0xcb25('0x27')](0x4)+_0xcb25('0x28')))[_0xcb25('0x2b')](function(_0x379852){_0x421500[_0xcb25('0x6b')]=_0x379852;return _0x421500;});}return _0x421500;});};exports['dirName']=function(){return __dirname;};