Built motion from commit 497d3d92.|2.5.43
[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 _0x7388=['end_conversation','fulfillmentText','intent','languageCode','queryText','responseId','intentDetectionConfidence','tildeASR','Tilde\x20ASR\x20transcription','Tilde\x20ASR\x20confidence','awsPolly','polly','awsLex','format','%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s','model=%s','freeform=3','sestekNDA','nda','channelData','CustomAction','CustomActionData','AudioFromTts','Data','audiofile','dirName','apiai-promise','bluebird','md5','path','querystring','randomstring','google-tts-api','url','parse','util','./google','./sestek','../../../config/logger','agi','https://api.ispeech.org/api/rest','protocol','https:','host','WHAT_EVER','get','error','request\x20to\x20','statusCode','statusMessage','createWriteStream','finish','info','finish\x20download\x20file','close','unlink','download\x20error','pipe','end','\x20failed,\x20status\x20code\x20=\x20','data','transcode','wav','error\x20convert','start','resolve','writeFileSync','base64','chmodSync','777','split','readFileSync','googleCloudTTS','https://texttospeech.googleapis.com/v1/','?key=','ssml','input','MP3','text:synthesize','then','tmp','generate','.mp3','from','audioContent','.wav','utf8','application/x-www-form-urlencoded','f.req=','stringify','null','generic','slice','parse\x20response\x20failed:\x0a','text\x20length\x20limit\x20reached','lang\x20\x22','\x22\x20might\x20not\x20exist','asr','uri','results','map','alternatives','transcript','join','confidence','catch','[%s]\x20%s:%s','name','message','textRequest','result','action','actionIncomplete','speech','score','code','metadata','isFallbackIntent','googleDialogflowV2','replace','SessionsClient','sessionPath','detectIntent','Dialogflow\x20V2\x20response:','queryResult','allRequiredParamsPresent','diagnosticInfo','fields'];(function(_0x320acd,_0x465d0f){var _0x303a72=function(_0x44516e){while(--_0x44516e){_0x320acd['push'](_0x320acd['shift']());}};_0x303a72(++_0x465d0f);}(_0x7388,0x9a));var _0x8738=function(_0x520701,_0x3b4a94){_0x520701=_0x520701-0x0;var _0x458579=_0x7388[_0x520701];return _0x458579;};'use strict';var apiai=require(_0x8738('0x0'));var BPromise=require(_0x8738('0x1'));var dialogflow=require('dialogflow');var fs=require('fs');var http=require('http');var https=require('https');var md5=require(_0x8738('0x2'));var path=require(_0x8738('0x3'));var querystring=require(_0x8738('0x4'));var rp=require('request-promise');var rs=require(_0x8738('0x5'));var sox=require('sox');var tts=require(_0x8738('0x6'));var urlParse=require(_0x8738('0x7'))[_0x8738('0x8')];var util=require(_0x8738('0x9'));var aws=require('./aws');var google=require(_0x8738('0xa'));var sestek=require(_0x8738('0xb'));var tilde=require('./tilde');var logger=require(_0x8738('0xc'))(_0x8738('0xd'));var ISPEECH_API=_0x8738('0xe');function downloadFile(_0x18501f,_0x359cc5){return new BPromise(function(_0x308f28,_0x155109){var _0x4dc213=urlParse(_0x18501f);var _0x5c8fa3=_0x4dc213[_0x8738('0xf')]===_0x8738('0x10')?https:http;var _0x4b9184={'host':_0x4dc213[_0x8738('0x11')],'path':_0x4dc213[_0x8738('0x3')],'headers':{'user-agent':_0x8738('0x12')}};_0x5c8fa3[_0x8738('0x13')](_0x4b9184,function(_0x26409e){if(_0x26409e['statusCode']!==0xc8){logger[_0x8738('0x14')](_0x8738('0x15')+_0x18501f+'\x20failed,\x20status\x20code\x20=\x20'+_0x26409e[_0x8738('0x16')]+'\x20('+_0x26409e['statusMessage']+')');_0x155109(new Error(_0x8738('0x15')+_0x18501f+'\x20failed,\x20status\x20code\x20=\x20'+_0x26409e[_0x8738('0x16')]+'\x20('+_0x26409e[_0x8738('0x17')]+')'));return;}var _0x54a601=fs[_0x8738('0x18')](_0x359cc5);_0x54a601['on'](_0x8738('0x19'),function(){logger[_0x8738('0x1a')](_0x8738('0x1b'));_0x54a601[_0x8738('0x1c')](_0x308f28);});_0x54a601['on'](_0x8738('0x14'),function(_0x119c3f){fs[_0x8738('0x1d')](_0x359cc5);logger[_0x8738('0x14')](_0x8738('0x1e'),_0x119c3f);_0x155109(_0x119c3f);});_0x26409e[_0x8738('0x1f')](_0x54a601);})['on'](_0x8738('0x14'),function(_0xf85dbb){logger[_0x8738('0x14')](_0xf85dbb);_0x155109(_0xf85dbb);})[_0x8738('0x20')]();});}function uploadFile(_0x3511db){return new BPromise(function(_0x414a10,_0x2c1814){var _0x213b46=urlParse(_0x3511db);var _0x13eb18=_0x213b46[_0x8738('0xf')]===_0x8738('0x10')?https:http;var _0x4c9a91={'host':_0x213b46['host'],'path':_0x213b46[_0x8738('0x3')],'headers':{'user-agent':_0x8738('0x12')}};_0x13eb18[_0x8738('0x13')](_0x4c9a91,function(_0x3e9b42){if(_0x3e9b42[_0x8738('0x16')]!==0xc8){_0x2c1814(new Error(_0x8738('0x15')+_0x3511db+_0x8738('0x21')+_0x3e9b42[_0x8738('0x16')]+'\x20('+_0x3e9b42[_0x8738('0x17')]+')'));return;}var _0x3b4f45='';_0x3e9b42['on'](_0x8738('0x22'),function(_0x188c5a){_0x3b4f45+=_0x188c5a;});_0x3e9b42['on']('end',function(){_0x414a10(_0x3b4f45);});})['on'](_0x8738('0x14'),function(_0xae40c9){_0x2c1814(_0xae40c9);})[_0x8738('0x20')]();});}function convertFile(_0x3ff789,_0x2d533e){return new BPromise(function(_0x589ce4,_0x2cb6c8){var _0x4b8fa9=sox[_0x8738('0x23')](_0x3ff789,_0x2d533e,{'sampleRate':0x1f40,'format':_0x8738('0x24'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x4b8fa9['on'](_0x8738('0x14'),function(_0x1d83de){logger[_0x8738('0x14')](_0x8738('0x25'),_0x1d83de);_0x2cb6c8(_0x1d83de);});_0x4b8fa9['on'](_0x8738('0x20'),function(){logger[_0x8738('0x1a')]('finish\x20to\x20convert');_0x589ce4();});_0x4b8fa9[_0x8738('0x26')]();});}function base64Decode(_0x4774b2,_0x4e0524){var _0x4f829c=path[_0x8738('0x27')](__dirname,'tmp',rs['generate'](0x4)+'.wav');fs[_0x8738('0x28')](_0x4f829c,_0x4774b2,_0x8738('0x29'));return convertFile(_0x4f829c,_0x4e0524)['then'](function(){try{fs[_0x8738('0x1d')](_0x4f829c);fs[_0x8738('0x2a')](_0x4e0524,_0x8738('0x2b'));}catch(_0x25930a){logger['error'](_0x25930a);}return _0x4e0524[_0x8738('0x2c')]('.')[0x0];});}function base64Encode(_0x247700){var _0x159570=fs[_0x8738('0x2d')](_0x247700);return new Buffer(_0x159570)['toString']('base64');}exports[_0x8738('0x2e')]=function(_0x241bd8,_0x17f2f2,_0x38d30b,_0x158f8f,_0x4248f8,_0x227007){var _0x5cde37,_0xa3f560;var _0x5edf4a=_0x8738('0x2f');var _0x160289=_0x8738('0x30')+_0x241bd8;var _0x10ef0e={};if(_0x17f2f2===_0x8738('0x31')){_0x10ef0e[_0x8738('0x32')]={'ssml':_0x38d30b};}else{_0x10ef0e['input']={'text':_0x38d30b};};_0x10ef0e['voice']={'languageCode':_0x158f8f,'ssmlGender':_0x4248f8};_0x10ef0e['audioConfig']={'audioEncoding':_0x8738('0x33'),'sampleRateHertz':0x1f40};var _0x5323c9={'url':_0x5edf4a+_0x8738('0x34')+_0x160289,'method':'POST','json':!![],'body':_0x10ef0e};return rp(_0x5323c9)[_0x8738('0x35')](function(_0x2deeaa){return new BPromise(function(_0x1b8cf8,_0x226393){_0x5cde37=path['resolve'](__dirname,_0x8738('0x36'),rs[_0x8738('0x37')](0x4)+_0x8738('0x38'));var _0xa5ea78=Buffer[_0x8738('0x39')](_0x2deeaa[_0x8738('0x3a')],'base64');return fs['writeFile'](_0x5cde37,_0xa5ea78,function(_0x336588){_0x226393(_0x336588);},function(_0x227aa3){fs[_0x8738('0x2a')](_0x5cde37,_0x8738('0x2b'));_0x1b8cf8(_0x227aa3);});});})[_0x8738('0x35')](function(_0x1a469f){_0xa3f560=path[_0x8738('0x27')](__dirname,_0x8738('0x36'),rs['generate'](0x4)+_0x8738('0x3b'));return convertFile(_0x5cde37,_0xa3f560);})['then'](function(){try{fs[_0x8738('0x1d')](_0x5cde37);fs[_0x8738('0x2a')](_0xa3f560,_0x8738('0x2b'));}catch(_0x24e2f8){logger[_0x8738('0x14')](_0x24e2f8);}logger[_0x8738('0x1a')]('googleCloudTTS\x20path',_0xa3f560[_0x8738('0x2c')]('.')[0x0]);return _0xa3f560['split']('.')[0x0];});};exports['googleTTS']=function(_0x58367a,_0x13997a){var _0x96b3d6='https://translate.google.com/_/TranslateWebserverUi/data/batchexecute';var _0x2065f5,_0x543d2a;var _0x216343;var _0x155808={'encoding':_0x8738('0x3c'),'method':'POST','timeout':0x2710,'url':_0x96b3d6,'headers':{'Content-Type':_0x8738('0x3d')},'body':_0x8738('0x3e')+encodeURIComponent(JSON[_0x8738('0x3f')]([[['jQ1olc',JSON['stringify']([_0x58367a,_0x13997a||'en',![],_0x8738('0x40')]),null,_0x8738('0x41')]]]))};return rp(_0x155808)['then'](function(_0x3fddee){try{_0x216343=eval(_0x3fddee[_0x8738('0x42')](0x5))[0x0][0x2];}catch(_0x101086){throw new Error(_0x8738('0x43')+_0x3fddee[_0x8738('0x22')]);}if(!_0x216343){if(_0x58367a['length']>0xc8){throw new Error(_0x8738('0x44'));}else{throw new Error(_0x8738('0x45')+_0x13997a+_0x8738('0x46'));}}try{_0x216343=eval(_0x216343)[0x0];}catch(_0x412b9f){throw new Error(_0x8738('0x43')+res[_0x8738('0x22')]);}const _0x3b89dd=_0x216343;_0x2065f5=path[_0x8738('0x27')](__dirname,_0x8738('0x36'),rs[_0x8738('0x37')](0x4)+_0x8738('0x38'));fs[_0x8738('0x28')](_0x2065f5,_0x216343,{'encoding':_0x8738('0x29')});_0x543d2a=path[_0x8738('0x27')](__dirname,_0x8738('0x36'),rs[_0x8738('0x37')](0x4)+_0x8738('0x3b'));return convertFile(_0x2065f5,_0x543d2a);})[_0x8738('0x35')](function(){try{fs[_0x8738('0x1d')](_0x2065f5);fs[_0x8738('0x2a')](_0x543d2a,_0x8738('0x2b'));}catch(_0x55e73d){logger[_0x8738('0x14')](_0x55e73d);}logger[_0x8738('0x1a')]('goggleTTS\x20path',_0x543d2a[_0x8738('0x2c')]('.')[0x0]);return _0x543d2a[_0x8738('0x2c')]('.')[0x0];});};exports['googleASR']=function(_0x14191c,_0x24e480,_0x5a5535){return google[_0x8738('0x47')](_0x14191c,_0x24e480,_0x5a5535)[_0x8738('0x35')](function(_0x4a9c6d){logger[_0x8738('0x1a')](_0x4a9c6d[_0x8738('0x48')]);return rp(_0x4a9c6d);})[_0x8738('0x35')](function(_0x30575b){var _0x14a4b2='';var _0x340bd8=0x0;try{fs['unlink'](_0x14191c);}catch(_0x58d7dd){logger['error'](_0x58d7dd);}if(_0x30575b&&_0x30575b[_0x8738('0x49')]){_0x14a4b2=_0x30575b[_0x8738('0x49')][_0x8738('0x4a')](function(_0x340323){return _0x340323&&_0x340323[_0x8738('0x4b')][0x0]&&_0x340323[_0x8738('0x4b')][0x0][_0x8738('0x4c')]?_0x340323[_0x8738('0x4b')][0x0]['transcript']:'';})[_0x8738('0x4d')]('\x0a');_0x340bd8=_0x30575b[_0x8738('0x49')][_0x8738('0x4a')](function(_0x3a067b){return _0x3a067b&&_0x3a067b[_0x8738('0x4b')][0x0]&&_0x3a067b[_0x8738('0x4b')][0x0][_0x8738('0x4e')]?_0x3a067b['alternatives'][0x0][_0x8738('0x4e')]:0x0;})[_0x8738('0x4d')]('\x0a');}logger['info']('googleASR\x20transcription',_0x14a4b2);logger['info']('googleASR\x20confidence',_0x340bd8);return{'transcript':_0x14a4b2,'confidence':_0x340bd8};})[_0x8738('0x4f')](function(_0x2d7f3a){logger[_0x8738('0x14')](_0x8738('0x50'),_0x2d7f3a[_0x8738('0x16')],_0x2d7f3a[_0x8738('0x51')],_0x2d7f3a[_0x8738('0x52')]);});};exports['googleDialogflow']=function(_0x5a97d5,_0x3c1267,_0x213f94,_0x218b74){var _0x50544b=apiai(_0x3c1267,{'language':_0x218b74||'en'});return _0x50544b[_0x8738('0x53')](_0x213f94,{'sessionId':md5(_0x5a97d5)})['then'](function(_0x150daa){logger[_0x8738('0x1a')](JSON[_0x8738('0x3f')](_0x150daa));return{'source':_0x150daa[_0x8738('0x54')]['source'],'resolvedQuery':_0x150daa[_0x8738('0x54')]['resolvedQuery'],'action':_0x150daa[_0x8738('0x54')][_0x8738('0x55')],'actionIncomplete':_0x150daa[_0x8738('0x54')][_0x8738('0x56')],'speech':_0x150daa[_0x8738('0x54')]['fulfillment'][_0x8738('0x57')],'score':_0x150daa['result'][_0x8738('0x58')],'statusCode':_0x150daa['status'][_0x8738('0x59')],'endConversation':_0x150daa['result'][_0x8738('0x5a')]['endConversation']||![],'isFallbackIntent':_0x150daa[_0x8738('0x54')]['metadata'][_0x8738('0x5b')]};});};exports[_0x8738('0x5c')]=function(_0x597b7b,_0xb30ed9,_0x5c372b,_0x1d09bb,_0x408390,_0x4aaafe){var _0x15007f=_0x1d09bb[_0x8738('0x5d')](/\\n/g,'\x0a');var _0x15d951={'credentials':{'private_key':_0x15007f,'client_email':_0x5c372b}};var _0x1ea8af=new dialogflow[(_0x8738('0x5e'))](_0x15d951);var _0x1cf06e=_0x1ea8af[_0x8738('0x5f')](_0xb30ed9,md5(_0x597b7b));var _0x57c24f={'session':_0x1cf06e,'queryInput':{'text':{'text':_0x408390,'languageCode':_0x4aaafe}}};return _0x1ea8af[_0x8738('0x60')](_0x57c24f)['then'](function(_0x51015f){if(_0x51015f&&_0x51015f['length']){logger['info'](_0x8738('0x61'),JSON[_0x8738('0x3f')](_0x51015f));var _0x31e460=_0x51015f[0x0];if(_0x31e460){var _0x45092a={'action':_0x31e460[_0x8738('0x62')][_0x8738('0x55')],'allRequiredParamsPresent':_0x31e460['queryResult'][_0x8738('0x63')],'endConversation':_0x31e460[_0x8738('0x62')][_0x8738('0x64')]&&_0x31e460[_0x8738('0x62')][_0x8738('0x64')][_0x8738('0x65')]?_0x31e460[_0x8738('0x62')][_0x8738('0x64')]['fields'][_0x8738('0x66')]['boolValue']:![],'fulfillmentText':_0x31e460['queryResult'][_0x8738('0x67')],'intentName':_0x31e460[_0x8738('0x62')][_0x8738('0x68')][_0x8738('0x51')],'intentDisplayName':_0x31e460[_0x8738('0x62')][_0x8738('0x68')]['displayName'],'isFallbackIntent':_0x31e460[_0x8738('0x62')]['intent']['isFallback'],'languageCode':_0x31e460[_0x8738('0x62')][_0x8738('0x69')],'queryText':_0x31e460[_0x8738('0x62')][_0x8738('0x6a')],'responseId':_0x31e460[_0x8738('0x6b')],'score':_0x31e460[_0x8738('0x62')][_0x8738('0x6c')],'speech':_0x31e460[_0x8738('0x62')][_0x8738('0x67')],'providerResponse':JSON['stringify'](_0x51015f)};return _0x45092a;}}});};exports[_0x8738('0x6d')]=function(_0x501b6f,_0x413262,_0x36c64b,_0x1e2ae5){return tilde[_0x8738('0x47')](_0x501b6f,_0x413262,_0x36c64b,_0x1e2ae5)['then'](function(_0x5468cf){try{fs[_0x8738('0x1d')](_0x501b6f);}catch(_0x3cfe05){logger[_0x8738('0x14')](_0x3cfe05);}logger[_0x8738('0x1a')](_0x8738('0x6e'),_0x5468cf[_0x8738('0x4c')]);logger[_0x8738('0x1a')](_0x8738('0x6f'),_0x5468cf['confidence']);return _0x5468cf;});};exports[_0x8738('0x70')]=function(_0x4d0995,_0x269dfa,_0x2cfdca,_0xbbc2e1,_0x28690f,_0xd8023){var _0x3a72d8=path[_0x8738('0x27')](__dirname,'tmp',rs[_0x8738('0x37')](0x4)+'.mp3');var _0x588bda;return aws[_0x8738('0x71')](_0x4d0995,_0x269dfa,_0x2cfdca,_0xbbc2e1,_0x28690f,_0xd8023,_0x3a72d8)[_0x8738('0x35')](function(){_0x588bda=path[_0x8738('0x27')](__dirname,_0x8738('0x36'),rs['generate'](0x4)+_0x8738('0x3b'));return convertFile(_0x3a72d8,_0x588bda);})['then'](function(){try{fs[_0x8738('0x1d')](_0x3a72d8);fs[_0x8738('0x2a')](_0x588bda,_0x8738('0x2b'));}catch(_0x25c2b8){logger['error'](_0x25c2b8);}return _0x588bda[_0x8738('0x2c')]('.')[0x0];});};exports[_0x8738('0x72')]=function(_0x5c6d25,_0x572aa7,_0x33027a,_0x2ff7a0,_0x48c15b,_0x3b6e0f){return aws['lex'](_0x5c6d25,_0x572aa7,_0x33027a,_0x2ff7a0,_0x48c15b,_0x3b6e0f)[_0x8738('0x35')](function(_0x31f309){logger[_0x8738('0x1a')](JSON[_0x8738('0x3f')](_0x31f309));return _0x31f309;});};exports['ispeechTTS']=function(_0x26257a,_0x47874e,_0x1cb8e6,_0x3cceed){var _0x2c3f13=util[_0x8738('0x73')]('%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3',ISPEECH_API,_0x26257a,encodeURIComponent(_0x47874e),_0x1cb8e6,_0x3cceed);var _0x181baf=path[_0x8738('0x27')](__dirname,'tmp',rs[_0x8738('0x37')](0x4)+'.mp3');var _0x50acad;return downloadFile(_0x2c3f13,_0x181baf)[_0x8738('0x35')](function(){_0x50acad=path[_0x8738('0x27')](__dirname,'tmp',rs[_0x8738('0x37')](0x4)+_0x8738('0x3b'));return convertFile(_0x181baf,_0x50acad);})[_0x8738('0x35')](function(){try{fs[_0x8738('0x1d')](_0x181baf);fs[_0x8738('0x2a')](_0x50acad,_0x8738('0x2b'));}catch(_0x310159){logger[_0x8738('0x14')](_0x310159);}return _0x50acad[_0x8738('0x2c')]('.')[0x0];});};exports['ispeechASR']=function(_0x48b2f4,_0x8753f1,_0x36ec51,_0xbd7d78){var _0x55e27f=util[_0x8738('0x73')](_0x8738('0x74'),ISPEECH_API,_0x8753f1,_0x36ec51,base64Encode(_0x48b2f4),_0xbd7d78?util[_0x8738('0x73')](_0x8738('0x75'),encodeURIComponent(_0xbd7d78)):_0x8738('0x76'));return uploadFile(_0x55e27f)[_0x8738('0x35')](function(_0x7b6c88){return querystring['parse'](_0x7b6c88);});};exports[_0x8738('0x77')]=function(_0x2ff62a,_0x1d9366){return sestek[_0x8738('0x78')](_0x2ff62a,_0x1d9366)['then'](function(_0x50820c){logger[_0x8738('0x1a')](JSON[_0x8738('0x3f')](_0x50820c));var _0x289286={'speech':_0x50820c['text'],'action':_0x50820c['channelData']?_0x50820c[_0x8738('0x79')][_0x8738('0x7a')]:undefined,'actiondata':_0x50820c[_0x8738('0x79')]?_0x50820c[_0x8738('0x79')][_0x8738('0x7b')]:undefined};if(_0x50820c[_0x8738('0x79')]&&_0x50820c['channelData']['AudioFromTts']){return base64Decode(_0x50820c['channelData'][_0x8738('0x7c')][_0x8738('0x7d')],path[_0x8738('0x27')](__dirname,_0x8738('0x36'),rs[_0x8738('0x37')](0x4)+_0x8738('0x3b')))[_0x8738('0x35')](function(_0x6abe71){_0x289286[_0x8738('0x7e')]=_0x6abe71;return _0x289286;});}return _0x289286;});};exports[_0x8738('0x7f')]=function(){return __dirname;};