9c8ecde4563e0d1e06deb2526dca9c38a9519545
[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 _0x8614=['asr','uri','results','map','alternatives','transcript','join','confidence','googleASR\x20transcription','googleASR\x20confidence','catch','[%s]\x20%s:%s','name','googleDialogflow','textRequest','stringify','result','source','resolvedQuery','action','actionIncomplete','speech','score','status','code','metadata','endConversation','isFallbackIntent','tildeASR','Tilde\x20ASR\x20transcription','awsPolly','polly','awsLex','lex','format','%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3','.wav','ispeechASR','%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s','freeform=3','parse','sestekNDA','nda','text','CustomAction','channelData','CustomActionData','AudioFromTts','Data','dirName','path','https','url','bluebird','sox','request-promise','querystring','apiai-promise','./google','./aws','./tilde','./sestek','../../../config/logger','agi','protocol','https:','host','WHAT_EVER','get','request\x20to\x20','\x20failed,\x20status\x20code\x20=\x20','statusCode','statusMessage','info','finish\x20download\x20file','close','error','unlink','pipe','end','wav','finish\x20to\x20convert','tmp','writeFileSync','base64','then','chmodSync','777','split','readFileSync','toString','https://texttospeech.googleapis.com/v1/','?key=','input','voice','audioConfig','text:synthesize','POST','resolve','generate','.mp3','from','audioContent','writeFile','googleCloudTTS\x20path','googleASR'];(function(_0xdd2348,_0x5d3232){var _0x2e0a02=function(_0x38e687){while(--_0x38e687){_0xdd2348['push'](_0xdd2348['shift']());}};_0x2e0a02(++_0x5d3232);}(_0x8614,0x1da));var _0x4861=function(_0x4ddc67,_0x428ec0){_0x4ddc67=_0x4ddc67-0x0;var _0x277d37=_0x8614[_0x4ddc67];return _0x277d37;};'use strict';var fs=require('fs');var path=require(_0x4861('0x0'));var http=require('http');var https=require(_0x4861('0x1'));var urlParse=require(_0x4861('0x2'))['parse'];var BPromise=require(_0x4861('0x3'));var rs=require('randomstring');var sox=require(_0x4861('0x4'));var rp=require(_0x4861('0x5'));var util=require('util');var querystring=require(_0x4861('0x6'));var tts=require('google-tts-api');var apiai=require(_0x4861('0x7'));var md5=require('md5');var google=require(_0x4861('0x8'));var aws=require(_0x4861('0x9'));var tilde=require(_0x4861('0xa'));var sestek=require(_0x4861('0xb'));var logger=require(_0x4861('0xc'))(_0x4861('0xd'));var ISPEECH_API='https://api.ispeech.org/api/rest';function downloadFile(_0x26eecb,_0x2751e6){return new BPromise(function(_0x316ecc,_0x2edcfe){var _0x3af203=urlParse(_0x26eecb);var _0x5dae86=_0x3af203[_0x4861('0xe')]===_0x4861('0xf')?https:http;var _0x463a90={'host':_0x3af203[_0x4861('0x10')],'path':_0x3af203[_0x4861('0x0')],'headers':{'user-agent':_0x4861('0x11')}};_0x5dae86[_0x4861('0x12')](_0x463a90,function(_0x550781){if(_0x550781['statusCode']!==0xc8){logger['error'](_0x4861('0x13')+_0x26eecb+_0x4861('0x14')+_0x550781[_0x4861('0x15')]+'\x20('+_0x550781[_0x4861('0x16')]+')');_0x2edcfe(new Error(_0x4861('0x13')+_0x26eecb+'\x20failed,\x20status\x20code\x20=\x20'+_0x550781['statusCode']+'\x20('+_0x550781[_0x4861('0x16')]+')'));return;}var _0x263380=fs['createWriteStream'](_0x2751e6);_0x263380['on']('finish',function(){logger[_0x4861('0x17')](_0x4861('0x18'));_0x263380[_0x4861('0x19')](_0x316ecc);});_0x263380['on'](_0x4861('0x1a'),function(_0x4f4720){fs[_0x4861('0x1b')](_0x2751e6);logger[_0x4861('0x1a')]('download\x20error',_0x4f4720);_0x2edcfe(_0x4f4720);});_0x550781[_0x4861('0x1c')](_0x263380);})['on']('error',function(_0x44c8d9){logger[_0x4861('0x1a')](_0x44c8d9);_0x2edcfe(_0x44c8d9);})[_0x4861('0x1d')]();});}function uploadFile(_0x1abcec){return new BPromise(function(_0x21466d,_0x10749e){var _0x19390b=urlParse(_0x1abcec);var _0x239101=_0x19390b[_0x4861('0xe')]===_0x4861('0xf')?https:http;var _0x3e1ff0={'host':_0x19390b[_0x4861('0x10')],'path':_0x19390b[_0x4861('0x0')],'headers':{'user-agent':_0x4861('0x11')}};_0x239101[_0x4861('0x12')](_0x3e1ff0,function(_0x59ccf6){if(_0x59ccf6[_0x4861('0x15')]!==0xc8){_0x10749e(new Error(_0x4861('0x13')+_0x1abcec+_0x4861('0x14')+_0x59ccf6['statusCode']+'\x20('+_0x59ccf6[_0x4861('0x16')]+')'));return;}var _0x277e1f='';_0x59ccf6['on']('data',function(_0x1f9377){_0x277e1f+=_0x1f9377;});_0x59ccf6['on']('end',function(){_0x21466d(_0x277e1f);});})['on'](_0x4861('0x1a'),function(_0x207f55){_0x10749e(_0x207f55);})[_0x4861('0x1d')]();});}function convertFile(_0x21d924,_0x5a5fc7){return new BPromise(function(_0x31bfa8,_0x3868cc){var _0x3cdaa8=sox['transcode'](_0x21d924,_0x5a5fc7,{'sampleRate':0x1f40,'format':_0x4861('0x1e'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x3cdaa8['on'](_0x4861('0x1a'),function(_0x4dcfa8){logger[_0x4861('0x1a')]('error\x20convert',_0x4dcfa8);_0x3868cc(_0x4dcfa8);});_0x3cdaa8['on'](_0x4861('0x1d'),function(){logger[_0x4861('0x17')](_0x4861('0x1f'));_0x31bfa8();});_0x3cdaa8['start']();});}function base64Decode(_0x134b74,_0x508cc4){var _0x257cac=path['resolve'](__dirname,_0x4861('0x20'),rs['generate'](0x4)+'.wav');fs[_0x4861('0x21')](_0x257cac,_0x134b74,_0x4861('0x22'));return convertFile(_0x257cac,_0x508cc4)[_0x4861('0x23')](function(){try{fs[_0x4861('0x1b')](_0x257cac);fs[_0x4861('0x24')](_0x508cc4,_0x4861('0x25'));}catch(_0x13dfca){logger['error'](_0x13dfca);}return _0x508cc4[_0x4861('0x26')]('.')[0x0];});}function base64Encode(_0x32a9d1){var _0x4a3a67=fs[_0x4861('0x27')](_0x32a9d1);return new Buffer(_0x4a3a67)[_0x4861('0x28')](_0x4861('0x22'));}exports['googleCloudTTS']=function(_0x241cf7,_0x549605,_0x3284c9,_0x2d280b,_0x31c2c8,_0x4dc59c){var _0x2c5cb3,_0x47ef9e;var _0x32dede=_0x4861('0x29');var _0x35baf5=_0x4861('0x2a')+_0x241cf7;var _0x10337d={};if(_0x549605==='ssml'){_0x10337d[_0x4861('0x2b')]={'ssml':_0x3284c9};}else{_0x10337d[_0x4861('0x2b')]={'text':_0x3284c9};};_0x10337d[_0x4861('0x2c')]={'languageCode':_0x2d280b,'ssmlGender':_0x31c2c8};_0x10337d[_0x4861('0x2d')]={'audioEncoding':'MP3','sampleRateHertz':0x1f40};var _0x1c14b9={'url':_0x32dede+_0x4861('0x2e')+_0x35baf5,'method':_0x4861('0x2f'),'json':!![],'body':_0x10337d};return rp(_0x1c14b9)[_0x4861('0x23')](function(_0x40cb5f){return new BPromise(function(_0x87483d,_0x175080){_0x2c5cb3=path[_0x4861('0x30')](__dirname,_0x4861('0x20'),rs[_0x4861('0x31')](0x4)+_0x4861('0x32'));var _0x2dbd8f=Buffer[_0x4861('0x33')](_0x40cb5f[_0x4861('0x34')],_0x4861('0x22'));return fs[_0x4861('0x35')](_0x2c5cb3,_0x2dbd8f,function(_0x47fd5f){_0x175080(_0x47fd5f);},function(_0x227b83){fs[_0x4861('0x24')](_0x2c5cb3,'777');_0x87483d(_0x227b83);});});})[_0x4861('0x23')](function(_0x63f592){_0x47ef9e=path[_0x4861('0x30')](__dirname,_0x4861('0x20'),rs[_0x4861('0x31')](0x4)+'.wav');return convertFile(_0x2c5cb3,_0x47ef9e);})['then'](function(){try{fs[_0x4861('0x1b')](_0x2c5cb3);fs[_0x4861('0x24')](_0x47ef9e,_0x4861('0x25'));}catch(_0x1551fd){logger[_0x4861('0x1a')](_0x1551fd);}logger[_0x4861('0x17')](_0x4861('0x36'),_0x47ef9e[_0x4861('0x26')]('.')[0x0]);return _0x47ef9e[_0x4861('0x26')]('.')[0x0];});};exports['googleTTS']=function(_0x1de8ae,_0x1f6b43){var _0x386827,_0x52910c;return tts(_0x1de8ae,_0x1f6b43||'en',0x1)['then'](function(_0x13edc7){logger['info'](_0x13edc7);_0x386827=path[_0x4861('0x30')](__dirname,_0x4861('0x20'),rs['generate'](0x4)+'.mp3');return downloadFile(_0x13edc7,_0x386827);})['then'](function(){_0x52910c=path['resolve'](__dirname,_0x4861('0x20'),rs[_0x4861('0x31')](0x4)+'.wav');return convertFile(_0x386827,_0x52910c);})[_0x4861('0x23')](function(){try{fs['unlink'](_0x386827);fs['chmodSync'](_0x52910c,_0x4861('0x25'));}catch(_0x7c83a5){logger[_0x4861('0x1a')](_0x7c83a5);}logger[_0x4861('0x17')]('goggleTTS\x20path',_0x52910c[_0x4861('0x26')]('.')[0x0]);return _0x52910c[_0x4861('0x26')]('.')[0x0];});};exports[_0x4861('0x37')]=function(_0x876da7,_0x3f74d5,_0x502bad){return google[_0x4861('0x38')](_0x876da7,_0x3f74d5,_0x502bad)[_0x4861('0x23')](function(_0x179379){logger[_0x4861('0x17')](_0x179379[_0x4861('0x39')]);return rp(_0x179379);})['then'](function(_0xf61416){var _0x574ce6='';var _0x27e8fb=0x0;try{fs[_0x4861('0x1b')](_0x876da7);}catch(_0x123293){logger[_0x4861('0x1a')](_0x123293);}if(_0xf61416&&_0xf61416[_0x4861('0x3a')]){_0x574ce6=_0xf61416[_0x4861('0x3a')][_0x4861('0x3b')](function(_0x5ab5fd){return _0x5ab5fd&&_0x5ab5fd[_0x4861('0x3c')][0x0]&&_0x5ab5fd[_0x4861('0x3c')][0x0][_0x4861('0x3d')]?_0x5ab5fd[_0x4861('0x3c')][0x0][_0x4861('0x3d')]:'';})[_0x4861('0x3e')]('\x0a');_0x27e8fb=_0xf61416[_0x4861('0x3a')]['map'](function(_0xe04c98){return _0xe04c98&&_0xe04c98[_0x4861('0x3c')][0x0]&&_0xe04c98['alternatives'][0x0][_0x4861('0x3f')]?_0xe04c98[_0x4861('0x3c')][0x0][_0x4861('0x3f')]:0x0;})[_0x4861('0x3e')]('\x0a');}logger[_0x4861('0x17')](_0x4861('0x40'),_0x574ce6);logger[_0x4861('0x17')](_0x4861('0x41'),_0x27e8fb);return{'transcript':_0x574ce6,'confidence':_0x27e8fb};})[_0x4861('0x42')](function(_0x184cc8){logger[_0x4861('0x1a')](_0x4861('0x43'),_0x184cc8[_0x4861('0x15')],_0x184cc8[_0x4861('0x44')],_0x184cc8['message']);});};exports[_0x4861('0x45')]=function(_0x15d15b,_0x1ccb4a,_0x5ae1af,_0x312614){var _0x33d49a=apiai(_0x1ccb4a,{'language':_0x312614||'en'});return _0x33d49a[_0x4861('0x46')](_0x5ae1af,{'sessionId':md5(_0x15d15b)})[_0x4861('0x23')](function(_0x28a3f3){logger[_0x4861('0x17')](JSON[_0x4861('0x47')](_0x28a3f3));return{'source':_0x28a3f3[_0x4861('0x48')][_0x4861('0x49')],'resolvedQuery':_0x28a3f3[_0x4861('0x48')][_0x4861('0x4a')],'action':_0x28a3f3['result'][_0x4861('0x4b')],'actionIncomplete':_0x28a3f3[_0x4861('0x48')][_0x4861('0x4c')],'speech':_0x28a3f3[_0x4861('0x48')]['fulfillment'][_0x4861('0x4d')],'score':_0x28a3f3[_0x4861('0x48')][_0x4861('0x4e')],'statusCode':_0x28a3f3[_0x4861('0x4f')][_0x4861('0x50')],'endConversation':_0x28a3f3[_0x4861('0x48')][_0x4861('0x51')][_0x4861('0x52')]||![],'isFallbackIntent':_0x28a3f3[_0x4861('0x48')]['metadata'][_0x4861('0x53')]};});};exports[_0x4861('0x54')]=function(_0x302c6c,_0x252246,_0x1998a1,_0x4b2741){return tilde['asr'](_0x302c6c,_0x252246,_0x1998a1,_0x4b2741)['then'](function(_0x587684){try{fs[_0x4861('0x1b')](_0x302c6c);}catch(_0x2682e8){logger[_0x4861('0x1a')](_0x2682e8);}logger[_0x4861('0x17')](_0x4861('0x55'),_0x587684[_0x4861('0x3d')]);logger['info']('Tilde\x20ASR\x20confidence',_0x587684[_0x4861('0x3f')]);return _0x587684;});};exports[_0x4861('0x56')]=function(_0x33a043,_0x515bb4,_0x24b565,_0x142dbe,_0x353246,_0x300b77){var _0x294e67=path[_0x4861('0x30')](__dirname,_0x4861('0x20'),rs[_0x4861('0x31')](0x4)+'.mp3');var _0x5ccb0a;return aws[_0x4861('0x57')](_0x33a043,_0x515bb4,_0x24b565,_0x142dbe,_0x353246,_0x300b77,_0x294e67)['then'](function(){_0x5ccb0a=path['resolve'](__dirname,_0x4861('0x20'),rs[_0x4861('0x31')](0x4)+'.wav');return convertFile(_0x294e67,_0x5ccb0a);})[_0x4861('0x23')](function(){try{fs[_0x4861('0x1b')](_0x294e67);fs[_0x4861('0x24')](_0x5ccb0a,_0x4861('0x25'));}catch(_0x46332a){logger[_0x4861('0x1a')](_0x46332a);}return _0x5ccb0a[_0x4861('0x26')]('.')[0x0];});};exports[_0x4861('0x58')]=function(_0x5ec3c3,_0x50fb05,_0x45383b,_0x13a0c8,_0x4295e0,_0x15cbe2){return aws[_0x4861('0x59')](_0x5ec3c3,_0x50fb05,_0x45383b,_0x13a0c8,_0x4295e0,_0x15cbe2)[_0x4861('0x23')](function(_0x5402c5){logger['info'](JSON[_0x4861('0x47')](_0x5402c5));return _0x5402c5;});};exports['ispeechTTS']=function(_0x3cd21b,_0xb2e90f,_0xad9c4f,_0x57a930){var _0x137f9a=util[_0x4861('0x5a')](_0x4861('0x5b'),ISPEECH_API,_0x3cd21b,encodeURIComponent(_0xb2e90f),_0xad9c4f,_0x57a930);var _0x49a6f2=path[_0x4861('0x30')](__dirname,_0x4861('0x20'),rs[_0x4861('0x31')](0x4)+_0x4861('0x32'));var _0x260143;return downloadFile(_0x137f9a,_0x49a6f2)[_0x4861('0x23')](function(){_0x260143=path[_0x4861('0x30')](__dirname,_0x4861('0x20'),rs[_0x4861('0x31')](0x4)+_0x4861('0x5c'));return convertFile(_0x49a6f2,_0x260143);})['then'](function(){try{fs[_0x4861('0x1b')](_0x49a6f2);fs[_0x4861('0x24')](_0x260143,_0x4861('0x25'));}catch(_0x9fa955){logger['error'](_0x9fa955);}return _0x260143[_0x4861('0x26')]('.')[0x0];});};exports[_0x4861('0x5d')]=function(_0x30a479,_0x5bbf19,_0x2811e3,_0x3a5d31){var _0x3b4f3b=util[_0x4861('0x5a')](_0x4861('0x5e'),ISPEECH_API,_0x5bbf19,_0x2811e3,base64Encode(_0x30a479),_0x3a5d31?util[_0x4861('0x5a')]('model=%s',encodeURIComponent(_0x3a5d31)):_0x4861('0x5f'));return uploadFile(_0x3b4f3b)[_0x4861('0x23')](function(_0x3c8c42){return querystring[_0x4861('0x60')](_0x3c8c42);});};exports[_0x4861('0x61')]=function(_0x939dd4,_0x4c732d){return sestek[_0x4861('0x62')](_0x939dd4,_0x4c732d)[_0x4861('0x23')](function(_0x33d0ac){logger[_0x4861('0x17')](JSON['stringify'](_0x33d0ac));var _0x358d0a={'speech':_0x33d0ac[_0x4861('0x63')],'action':_0x33d0ac['channelData']?_0x33d0ac['channelData'][_0x4861('0x64')]:undefined,'actiondata':_0x33d0ac['channelData']?_0x33d0ac[_0x4861('0x65')][_0x4861('0x66')]:undefined};if(_0x33d0ac[_0x4861('0x65')]&&_0x33d0ac[_0x4861('0x65')][_0x4861('0x67')]){return base64Decode(_0x33d0ac[_0x4861('0x65')][_0x4861('0x67')][_0x4861('0x68')],path[_0x4861('0x30')](__dirname,_0x4861('0x20'),rs['generate'](0x4)+'.wav'))[_0x4861('0x23')](function(_0x20cbf2){_0x358d0a['audiofile']=_0x20cbf2;return _0x358d0a;});}return _0x358d0a;});};exports[_0x4861('0x69')]=function(){return __dirname;};