8471ba0c811a395357a0ee842d4c9253e63e2a5b
[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 _0xcae5=['request\x20to\x20','\x20failed,\x20status\x20code\x20=\x20','statusMessage','createWriteStream','info','finish\x20download\x20file','close','unlink','download\x20error','pipe','end','transcode','error\x20convert','finish\x20to\x20convert','start','resolve','tmp','.wav','writeFileSync','base64','then','chmodSync','split','readFileSync','toString','googleCloudTTS','?key=','ssml','input','voice','audioConfig','MP3','text:synthesize','from','audioContent','writeFile','777','generate','googleCloudTTS\x20path','googleTTS','goggleTTS\x20path','googleASR','results','alternatives','transcript','join','map','confidence','googleASR\x20transcription','googleASR\x20confidence','catch','[%s]\x20%s:%s','name','message','textRequest','result','source','action','fulfillment','score','metadata','endConversation','isFallbackIntent','replace','SessionsClient','detectIntent','length','Dialogflow\x20V2\x20response:','queryResult','allRequiredParamsPresent','diagnosticInfo','fields','boolValue','fulfillmentText','intent','displayName','languageCode','queryText','intentDetectionConfidence','stringify','tildeASR','asr','Tilde\x20ASR\x20transcription','Tilde\x20ASR\x20confidence','awsPolly','.mp3','polly','awsLex','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','Data','apiai-promise','bluebird','dialogflow','https','path','request-promise','randomstring','sox','google-tts-api','url','parse','util','./google','./sestek','./tilde','../../../config/logger','https://api.ispeech.org/api/rest','protocol','https:','host','WHAT_EVER','get','statusCode','error'];(function(_0x435117,_0x2b9bad){var _0x585a63=function(_0x32c270){while(--_0x32c270){_0x435117['push'](_0x435117['shift']());}};_0x585a63(++_0x2b9bad);}(_0xcae5,0x67));var _0x5cae=function(_0x3d3198,_0x1777da){_0x3d3198=_0x3d3198-0x0;var _0x42882c=_0xcae5[_0x3d3198];return _0x42882c;};'use strict';var apiai=require(_0x5cae('0x0'));var BPromise=require(_0x5cae('0x1'));var dialogflow=require(_0x5cae('0x2'));var fs=require('fs');var http=require('http');var https=require(_0x5cae('0x3'));var md5=require('md5');var path=require(_0x5cae('0x4'));var querystring=require('querystring');var rp=require(_0x5cae('0x5'));var rs=require(_0x5cae('0x6'));var sox=require(_0x5cae('0x7'));var tts=require(_0x5cae('0x8'));var urlParse=require(_0x5cae('0x9'))[_0x5cae('0xa')];var util=require(_0x5cae('0xb'));var aws=require('./aws');var google=require(_0x5cae('0xc'));var sestek=require(_0x5cae('0xd'));var tilde=require(_0x5cae('0xe'));var logger=require(_0x5cae('0xf'))('agi');var ISPEECH_API=_0x5cae('0x10');function downloadFile(_0x3684c1,_0x2e2f2c){return new BPromise(function(_0x29bc6f,_0x55e1db){var _0x268699=urlParse(_0x3684c1);var _0x1cd408=_0x268699[_0x5cae('0x11')]===_0x5cae('0x12')?https:http;var _0x3ac660={'host':_0x268699[_0x5cae('0x13')],'path':_0x268699['path'],'headers':{'user-agent':_0x5cae('0x14')}};_0x1cd408[_0x5cae('0x15')](_0x3ac660,function(_0x19ccd4){if(_0x19ccd4[_0x5cae('0x16')]!==0xc8){logger[_0x5cae('0x17')](_0x5cae('0x18')+_0x3684c1+_0x5cae('0x19')+_0x19ccd4[_0x5cae('0x16')]+'\x20('+_0x19ccd4[_0x5cae('0x1a')]+')');_0x55e1db(new Error(_0x5cae('0x18')+_0x3684c1+'\x20failed,\x20status\x20code\x20=\x20'+_0x19ccd4['statusCode']+'\x20('+_0x19ccd4['statusMessage']+')'));return;}var _0x43f078=fs[_0x5cae('0x1b')](_0x2e2f2c);_0x43f078['on']('finish',function(){logger[_0x5cae('0x1c')](_0x5cae('0x1d'));_0x43f078[_0x5cae('0x1e')](_0x29bc6f);});_0x43f078['on'](_0x5cae('0x17'),function(_0x18f23c){fs[_0x5cae('0x1f')](_0x2e2f2c);logger['error'](_0x5cae('0x20'),_0x18f23c);_0x55e1db(_0x18f23c);});_0x19ccd4[_0x5cae('0x21')](_0x43f078);})['on'](_0x5cae('0x17'),function(_0x31a569){logger[_0x5cae('0x17')](_0x31a569);_0x55e1db(_0x31a569);})[_0x5cae('0x22')]();});}function uploadFile(_0x530277){return new BPromise(function(_0x207462,_0x54cbf5){var _0x5cd78e=urlParse(_0x530277);var _0x5ce34f=_0x5cd78e[_0x5cae('0x11')]===_0x5cae('0x12')?https:http;var _0x16760d={'host':_0x5cd78e[_0x5cae('0x13')],'path':_0x5cd78e[_0x5cae('0x4')],'headers':{'user-agent':_0x5cae('0x14')}};_0x5ce34f[_0x5cae('0x15')](_0x16760d,function(_0x596ba6){if(_0x596ba6[_0x5cae('0x16')]!==0xc8){_0x54cbf5(new Error(_0x5cae('0x18')+_0x530277+'\x20failed,\x20status\x20code\x20=\x20'+_0x596ba6[_0x5cae('0x16')]+'\x20('+_0x596ba6[_0x5cae('0x1a')]+')'));return;}var _0x3fa822='';_0x596ba6['on']('data',function(_0x411a3f){_0x3fa822+=_0x411a3f;});_0x596ba6['on'](_0x5cae('0x22'),function(){_0x207462(_0x3fa822);});})['on'](_0x5cae('0x17'),function(_0x422f44){_0x54cbf5(_0x422f44);})[_0x5cae('0x22')]();});}function convertFile(_0x542fa8,_0x53aec5){return new BPromise(function(_0x18e0bb,_0x4ecbac){var _0x196dfb=sox[_0x5cae('0x23')](_0x542fa8,_0x53aec5,{'sampleRate':0x1f40,'format':'wav','channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x196dfb['on'](_0x5cae('0x17'),function(_0x5af66b){logger[_0x5cae('0x17')](_0x5cae('0x24'),_0x5af66b);_0x4ecbac(_0x5af66b);});_0x196dfb['on'](_0x5cae('0x22'),function(){logger[_0x5cae('0x1c')](_0x5cae('0x25'));_0x18e0bb();});_0x196dfb[_0x5cae('0x26')]();});}function base64Decode(_0x144412,_0x42d9f5){var _0x4c8c1e=path[_0x5cae('0x27')](__dirname,_0x5cae('0x28'),rs['generate'](0x4)+_0x5cae('0x29'));fs[_0x5cae('0x2a')](_0x4c8c1e,_0x144412,_0x5cae('0x2b'));return convertFile(_0x4c8c1e,_0x42d9f5)[_0x5cae('0x2c')](function(){try{fs[_0x5cae('0x1f')](_0x4c8c1e);fs[_0x5cae('0x2d')](_0x42d9f5,'777');}catch(_0x18086e){logger[_0x5cae('0x17')](_0x18086e);}return _0x42d9f5[_0x5cae('0x2e')]('.')[0x0];});}function base64Encode(_0x462b09){var _0x5a9674=fs[_0x5cae('0x2f')](_0x462b09);return new Buffer(_0x5a9674)[_0x5cae('0x30')](_0x5cae('0x2b'));}exports[_0x5cae('0x31')]=function(_0x853699,_0x369edd,_0x236a0d,_0x263ac2,_0x119432,_0x33aa01){var _0x4d4b9d,_0x1e2b33;var _0x2940fc='https://texttospeech.googleapis.com/v1/';var _0x438068=_0x5cae('0x32')+_0x853699;var _0x19be29={};if(_0x369edd===_0x5cae('0x33')){_0x19be29[_0x5cae('0x34')]={'ssml':_0x236a0d};}else{_0x19be29['input']={'text':_0x236a0d};};_0x19be29[_0x5cae('0x35')]={'languageCode':_0x263ac2,'ssmlGender':_0x119432};_0x19be29[_0x5cae('0x36')]={'audioEncoding':_0x5cae('0x37'),'sampleRateHertz':0x1f40};var _0x124ac0={'url':_0x2940fc+_0x5cae('0x38')+_0x438068,'method':'POST','json':!![],'body':_0x19be29};return rp(_0x124ac0)[_0x5cae('0x2c')](function(_0x48dbdc){return new BPromise(function(_0x55824b,_0x1cae75){_0x4d4b9d=path[_0x5cae('0x27')](__dirname,_0x5cae('0x28'),rs['generate'](0x4)+'.mp3');var _0x293d95=Buffer[_0x5cae('0x39')](_0x48dbdc[_0x5cae('0x3a')],_0x5cae('0x2b'));return fs[_0x5cae('0x3b')](_0x4d4b9d,_0x293d95,function(_0x97f794){_0x1cae75(_0x97f794);},function(_0x2df237){fs['chmodSync'](_0x4d4b9d,_0x5cae('0x3c'));_0x55824b(_0x2df237);});});})['then'](function(_0x204cde){_0x1e2b33=path[_0x5cae('0x27')](__dirname,_0x5cae('0x28'),rs[_0x5cae('0x3d')](0x4)+_0x5cae('0x29'));return convertFile(_0x4d4b9d,_0x1e2b33);})['then'](function(){try{fs[_0x5cae('0x1f')](_0x4d4b9d);fs[_0x5cae('0x2d')](_0x1e2b33,_0x5cae('0x3c'));}catch(_0x2501a5){logger[_0x5cae('0x17')](_0x2501a5);}logger[_0x5cae('0x1c')](_0x5cae('0x3e'),_0x1e2b33[_0x5cae('0x2e')]('.')[0x0]);return _0x1e2b33[_0x5cae('0x2e')]('.')[0x0];});};exports[_0x5cae('0x3f')]=function(_0xa955dd,_0x4ee8f2){var _0x141e39,_0x5ef7fc;return tts(_0xa955dd,_0x4ee8f2||'en',0x1)['then'](function(_0x1b0631){logger[_0x5cae('0x1c')](_0x1b0631);_0x141e39=path['resolve'](__dirname,_0x5cae('0x28'),rs['generate'](0x4)+'.mp3');return downloadFile(_0x1b0631,_0x141e39);})[_0x5cae('0x2c')](function(){_0x5ef7fc=path[_0x5cae('0x27')](__dirname,_0x5cae('0x28'),rs[_0x5cae('0x3d')](0x4)+_0x5cae('0x29'));return convertFile(_0x141e39,_0x5ef7fc);})[_0x5cae('0x2c')](function(){try{fs[_0x5cae('0x1f')](_0x141e39);fs[_0x5cae('0x2d')](_0x5ef7fc,_0x5cae('0x3c'));}catch(_0x4d59ea){logger[_0x5cae('0x17')](_0x4d59ea);}logger[_0x5cae('0x1c')](_0x5cae('0x40'),_0x5ef7fc['split']('.')[0x0]);return _0x5ef7fc[_0x5cae('0x2e')]('.')[0x0];});};exports[_0x5cae('0x41')]=function(_0x29a62f,_0x342f66,_0x121ba4){return google['asr'](_0x29a62f,_0x342f66,_0x121ba4)[_0x5cae('0x2c')](function(_0x39524d){logger['info'](_0x39524d['uri']);return rp(_0x39524d);})[_0x5cae('0x2c')](function(_0x53e12a){var _0x506576='';var _0x269210=0x0;try{fs[_0x5cae('0x1f')](_0x29a62f);}catch(_0x51f7ea){logger[_0x5cae('0x17')](_0x51f7ea);}if(_0x53e12a&&_0x53e12a[_0x5cae('0x42')]){_0x506576=_0x53e12a[_0x5cae('0x42')]['map'](function(_0xbc25c7){return _0xbc25c7&&_0xbc25c7[_0x5cae('0x43')][0x0]&&_0xbc25c7[_0x5cae('0x43')][0x0][_0x5cae('0x44')]?_0xbc25c7[_0x5cae('0x43')][0x0]['transcript']:'';})[_0x5cae('0x45')]('\x0a');_0x269210=_0x53e12a['results'][_0x5cae('0x46')](function(_0x1f478c){return _0x1f478c&&_0x1f478c[_0x5cae('0x43')][0x0]&&_0x1f478c[_0x5cae('0x43')][0x0][_0x5cae('0x47')]?_0x1f478c[_0x5cae('0x43')][0x0][_0x5cae('0x47')]:0x0;})[_0x5cae('0x45')]('\x0a');}logger['info'](_0x5cae('0x48'),_0x506576);logger[_0x5cae('0x1c')](_0x5cae('0x49'),_0x269210);return{'transcript':_0x506576,'confidence':_0x269210};})[_0x5cae('0x4a')](function(_0x311b23){logger[_0x5cae('0x17')](_0x5cae('0x4b'),_0x311b23['statusCode'],_0x311b23[_0x5cae('0x4c')],_0x311b23[_0x5cae('0x4d')]);});};exports['googleDialogflow']=function(_0x368d7e,_0x16b898,_0x397836,_0x548b5f){var _0x1517f3=apiai(_0x16b898,{'language':_0x548b5f||'en'});return _0x1517f3[_0x5cae('0x4e')](_0x397836,{'sessionId':md5(_0x368d7e)})[_0x5cae('0x2c')](function(_0x3911f5){logger[_0x5cae('0x1c')](JSON['stringify'](_0x3911f5));return{'source':_0x3911f5[_0x5cae('0x4f')][_0x5cae('0x50')],'resolvedQuery':_0x3911f5[_0x5cae('0x4f')]['resolvedQuery'],'action':_0x3911f5[_0x5cae('0x4f')][_0x5cae('0x51')],'actionIncomplete':_0x3911f5[_0x5cae('0x4f')]['actionIncomplete'],'speech':_0x3911f5[_0x5cae('0x4f')][_0x5cae('0x52')]['speech'],'score':_0x3911f5['result'][_0x5cae('0x53')],'statusCode':_0x3911f5['status']['code'],'endConversation':_0x3911f5[_0x5cae('0x4f')][_0x5cae('0x54')][_0x5cae('0x55')]||![],'isFallbackIntent':_0x3911f5[_0x5cae('0x4f')]['metadata'][_0x5cae('0x56')]};});};exports['googleDialogflowV2']=function(_0x3b2c8c,_0x428eec,_0x3c29ad,_0x48cd82,_0x15d39d,_0x5a4f97){var _0x3e4627=_0x48cd82[_0x5cae('0x57')](/\\n/g,'\x0a');var _0x1f7aa5={'credentials':{'private_key':_0x3e4627,'client_email':_0x3c29ad}};var _0x553755=new dialogflow[(_0x5cae('0x58'))](_0x1f7aa5);var _0xd38e98=_0x553755['sessionPath'](_0x428eec,md5(_0x3b2c8c));var _0x394884={'session':_0xd38e98,'queryInput':{'text':{'text':_0x15d39d,'languageCode':_0x5a4f97}}};return _0x553755[_0x5cae('0x59')](_0x394884)[_0x5cae('0x2c')](function(_0x2d816d){if(_0x2d816d&&_0x2d816d[_0x5cae('0x5a')]){logger['info'](_0x5cae('0x5b'),JSON['stringify'](_0x2d816d));var _0x1d599f=_0x2d816d[0x0];if(_0x1d599f){var _0x1f96bc={'action':_0x1d599f['queryResult']['action'],'allRequiredParamsPresent':_0x1d599f[_0x5cae('0x5c')][_0x5cae('0x5d')],'endConversation':_0x1d599f[_0x5cae('0x5c')][_0x5cae('0x5e')]&&_0x1d599f[_0x5cae('0x5c')]['diagnosticInfo'][_0x5cae('0x5f')]?_0x1d599f[_0x5cae('0x5c')]['diagnosticInfo']['fields']['end_conversation'][_0x5cae('0x60')]:![],'fulfillmentText':_0x1d599f[_0x5cae('0x5c')][_0x5cae('0x61')],'intentName':_0x1d599f['queryResult'][_0x5cae('0x62')][_0x5cae('0x4c')],'intentDisplayName':_0x1d599f['queryResult']['intent'][_0x5cae('0x63')],'isFallbackIntent':_0x1d599f[_0x5cae('0x5c')][_0x5cae('0x62')]['isFallback'],'languageCode':_0x1d599f[_0x5cae('0x5c')][_0x5cae('0x64')],'queryText':_0x1d599f[_0x5cae('0x5c')][_0x5cae('0x65')],'responseId':_0x1d599f['responseId'],'score':_0x1d599f['queryResult'][_0x5cae('0x66')],'speech':_0x1d599f['queryResult'][_0x5cae('0x61')],'providerResponse':JSON[_0x5cae('0x67')](_0x2d816d)};return _0x1f96bc;}}});};exports[_0x5cae('0x68')]=function(_0x490c03,_0x700a56,_0xf9104a,_0x25edae){return tilde[_0x5cae('0x69')](_0x490c03,_0x700a56,_0xf9104a,_0x25edae)[_0x5cae('0x2c')](function(_0x54e24c){try{fs['unlink'](_0x490c03);}catch(_0x1e80f9){logger[_0x5cae('0x17')](_0x1e80f9);}logger[_0x5cae('0x1c')](_0x5cae('0x6a'),_0x54e24c[_0x5cae('0x44')]);logger[_0x5cae('0x1c')](_0x5cae('0x6b'),_0x54e24c['confidence']);return _0x54e24c;});};exports[_0x5cae('0x6c')]=function(_0x14b327,_0x2c93e8,_0x1635ed,_0x5db607,_0x48e8bf,_0x36e8f1){var _0x1f9eea=path['resolve'](__dirname,_0x5cae('0x28'),rs[_0x5cae('0x3d')](0x4)+_0x5cae('0x6d'));var _0xa4370d;return aws[_0x5cae('0x6e')](_0x14b327,_0x2c93e8,_0x1635ed,_0x5db607,_0x48e8bf,_0x36e8f1,_0x1f9eea)[_0x5cae('0x2c')](function(){_0xa4370d=path['resolve'](__dirname,_0x5cae('0x28'),rs[_0x5cae('0x3d')](0x4)+_0x5cae('0x29'));return convertFile(_0x1f9eea,_0xa4370d);})['then'](function(){try{fs[_0x5cae('0x1f')](_0x1f9eea);fs[_0x5cae('0x2d')](_0xa4370d,_0x5cae('0x3c'));}catch(_0xd9b806){logger[_0x5cae('0x17')](_0xd9b806);}return _0xa4370d[_0x5cae('0x2e')]('.')[0x0];});};exports[_0x5cae('0x6f')]=function(_0x517f58,_0x4c18c0,_0x5c61b9,_0x4aea67,_0x1c6c1e,_0x59929f){return aws[_0x5cae('0x70')](_0x517f58,_0x4c18c0,_0x5c61b9,_0x4aea67,_0x1c6c1e,_0x59929f)['then'](function(_0x2f110d){logger['info'](JSON['stringify'](_0x2f110d));return _0x2f110d;});};exports[_0x5cae('0x71')]=function(_0x3be792,_0x140787,_0x15d0a9,_0x4efe58){var _0x3ed8f3=util[_0x5cae('0x72')](_0x5cae('0x73'),ISPEECH_API,_0x3be792,encodeURIComponent(_0x140787),_0x15d0a9,_0x4efe58);var _0x57ab0c=path[_0x5cae('0x27')](__dirname,_0x5cae('0x28'),rs[_0x5cae('0x3d')](0x4)+_0x5cae('0x6d'));var _0x33b44d;return downloadFile(_0x3ed8f3,_0x57ab0c)['then'](function(){_0x33b44d=path[_0x5cae('0x27')](__dirname,_0x5cae('0x28'),rs[_0x5cae('0x3d')](0x4)+_0x5cae('0x29'));return convertFile(_0x57ab0c,_0x33b44d);})[_0x5cae('0x2c')](function(){try{fs[_0x5cae('0x1f')](_0x57ab0c);fs[_0x5cae('0x2d')](_0x33b44d,'777');}catch(_0x473532){logger['error'](_0x473532);}return _0x33b44d['split']('.')[0x0];});};exports[_0x5cae('0x74')]=function(_0x567378,_0x4c237b,_0x3b0a34,_0x5e4b5f){var _0x4bf636=util[_0x5cae('0x72')](_0x5cae('0x75'),ISPEECH_API,_0x4c237b,_0x3b0a34,base64Encode(_0x567378),_0x5e4b5f?util['format'](_0x5cae('0x76'),encodeURIComponent(_0x5e4b5f)):_0x5cae('0x77'));return uploadFile(_0x4bf636)['then'](function(_0x424d51){return querystring[_0x5cae('0xa')](_0x424d51);});};exports['sestekNDA']=function(_0x5b27bc,_0x59aeff){return sestek[_0x5cae('0x78')](_0x5b27bc,_0x59aeff)[_0x5cae('0x2c')](function(_0x6cb180){logger[_0x5cae('0x1c')](JSON['stringify'](_0x6cb180));var _0x1e0d76={'speech':_0x6cb180[_0x5cae('0x79')],'action':_0x6cb180['channelData']?_0x6cb180[_0x5cae('0x7a')][_0x5cae('0x7b')]:undefined,'actiondata':_0x6cb180[_0x5cae('0x7a')]?_0x6cb180[_0x5cae('0x7a')][_0x5cae('0x7c')]:undefined};if(_0x6cb180[_0x5cae('0x7a')]&&_0x6cb180[_0x5cae('0x7a')][_0x5cae('0x7d')]){return base64Decode(_0x6cb180[_0x5cae('0x7a')]['AudioFromTts'][_0x5cae('0x7e')],path[_0x5cae('0x27')](__dirname,_0x5cae('0x28'),rs[_0x5cae('0x3d')](0x4)+'.wav'))[_0x5cae('0x2c')](function(_0x524fcd){_0x1e0d76['audiofile']=_0x524fcd;return _0x1e0d76;});}return _0x1e0d76;});};exports['dirName']=function(){return __dirname;};