Built motion from commit b5413ace.|2.6.9
[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 _0x502e=['languageCode','queryText','Tilde\x20ASR\x20transcription','Tilde\x20ASR\x20confidence','polly','awsLex','lex','ispeechTTS','format','%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3','freeform=3','parse','sestekNDA','text','channelData','CustomActionData','AudioFromTts','Data','audiofile','bluebird','http','md5','querystring','request-promise','randomstring','sox','url','util','./aws','./google','./sestek','./tilde','../../../config/logger','agi','https://api.ispeech.org/api/rest','host','path','WHAT_EVER','statusCode','error','request\x20to\x20','\x20failed,\x20status\x20code\x20=\x20','statusMessage','createWriteStream','close','unlink','download\x20error','pipe','end','protocol','https:','data','transcode','wav','info','finish\x20to\x20convert','resolve','tmp','generate','.wav','writeFileSync','base64','then','777','split','readFileSync','toString','?key=','ssml','input','voice','audioConfig','POST','.mp3','from','audioContent','writeFile','chmodSync','googleCloudTTS\x20path','googleTTS','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','utf8','application/x-www-form-urlencoded','f.req=','stringify','null','generic','slice','parse\x20response\x20failed:\x0a','length','text\x20length\x20limit\x20reached','lang\x20\x22','\x22\x20might\x20not\x20exist','goggleTTS\x20path','googleASR','asr','uri','results','map','alternatives','transcript','join','confidence','googleASR\x20transcription','catch','name','message','googleDialogflow','textRequest','result','source','resolvedQuery','action','fulfillment','speech','score','status','code','metadata','endConversation','isFallbackIntent','googleDialogflowV2','replace','SessionsClient','sessionPath','detectIntent','queryResult','allRequiredParamsPresent','fields','diagnosticInfo','end_conversation','boolValue','fulfillmentText','intent','displayName','isFallback'];(function(_0xa848e1,_0x4698bd){var _0x94b621=function(_0x42f89a){while(--_0x42f89a){_0xa848e1['push'](_0xa848e1['shift']());}};_0x94b621(++_0x4698bd);}(_0x502e,0x9b));var _0xe502=function(_0x1f0ed1,_0x563c20){_0x1f0ed1=_0x1f0ed1-0x0;var _0x26b472=_0x502e[_0x1f0ed1];return _0x26b472;};'use strict';var apiai=require('apiai-promise');var BPromise=require(_0xe502('0x0'));var dialogflow=require('dialogflow');var fs=require('fs');var http=require(_0xe502('0x1'));var https=require('https');var md5=require(_0xe502('0x2'));var path=require('path');var querystring=require(_0xe502('0x3'));var rp=require(_0xe502('0x4'));var rs=require(_0xe502('0x5'));var sox=require(_0xe502('0x6'));var tts=require('google-tts-api');var urlParse=require(_0xe502('0x7'))['parse'];var util=require(_0xe502('0x8'));var aws=require(_0xe502('0x9'));var google=require(_0xe502('0xa'));var sestek=require(_0xe502('0xb'));var tilde=require(_0xe502('0xc'));var logger=require(_0xe502('0xd'))(_0xe502('0xe'));var ISPEECH_API=_0xe502('0xf');function downloadFile(_0x1c5a0f,_0x59bef2){return new BPromise(function(_0x2e6d7c,_0x467d80){var _0x2387c8=urlParse(_0x1c5a0f);var _0x1adf54=_0x2387c8['protocol']==='https:'?https:http;var _0x3aba77={'host':_0x2387c8[_0xe502('0x10')],'path':_0x2387c8[_0xe502('0x11')],'headers':{'user-agent':_0xe502('0x12')}};_0x1adf54['get'](_0x3aba77,function(_0x227341){if(_0x227341[_0xe502('0x13')]!==0xc8){logger[_0xe502('0x14')](_0xe502('0x15')+_0x1c5a0f+_0xe502('0x16')+_0x227341[_0xe502('0x13')]+'\x20('+_0x227341[_0xe502('0x17')]+')');_0x467d80(new Error(_0xe502('0x15')+_0x1c5a0f+'\x20failed,\x20status\x20code\x20=\x20'+_0x227341[_0xe502('0x13')]+'\x20('+_0x227341[_0xe502('0x17')]+')'));return;}var _0x2450f5=fs[_0xe502('0x18')](_0x59bef2);_0x2450f5['on']('finish',function(){logger['info']('finish\x20download\x20file');_0x2450f5[_0xe502('0x19')](_0x2e6d7c);});_0x2450f5['on']('error',function(_0x28470b){fs[_0xe502('0x1a')](_0x59bef2);logger[_0xe502('0x14')](_0xe502('0x1b'),_0x28470b);_0x467d80(_0x28470b);});_0x227341[_0xe502('0x1c')](_0x2450f5);})['on'](_0xe502('0x14'),function(_0x3ec3a2){logger[_0xe502('0x14')](_0x3ec3a2);_0x467d80(_0x3ec3a2);})[_0xe502('0x1d')]();});}function uploadFile(_0x196428){return new BPromise(function(_0x2498cb,_0x20411a){var _0x273d68=urlParse(_0x196428);var _0x27ec40=_0x273d68[_0xe502('0x1e')]===_0xe502('0x1f')?https:http;var _0x29f016={'host':_0x273d68['host'],'path':_0x273d68[_0xe502('0x11')],'headers':{'user-agent':_0xe502('0x12')}};_0x27ec40['get'](_0x29f016,function(_0x56786c){if(_0x56786c[_0xe502('0x13')]!==0xc8){_0x20411a(new Error(_0xe502('0x15')+_0x196428+'\x20failed,\x20status\x20code\x20=\x20'+_0x56786c['statusCode']+'\x20('+_0x56786c[_0xe502('0x17')]+')'));return;}var _0x3cb4cb='';_0x56786c['on'](_0xe502('0x20'),function(_0x20af9a){_0x3cb4cb+=_0x20af9a;});_0x56786c['on']('end',function(){_0x2498cb(_0x3cb4cb);});})['on'](_0xe502('0x14'),function(_0x3bfb01){_0x20411a(_0x3bfb01);})['end']();});}function convertFile(_0x2075cb,_0x26338a){return new BPromise(function(_0x4f6943,_0x11a965){var _0x15aa34=sox[_0xe502('0x21')](_0x2075cb,_0x26338a,{'sampleRate':0x1f40,'format':_0xe502('0x22'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x15aa34['on']('error',function(_0x307987){logger[_0xe502('0x14')]('error\x20convert',_0x307987);_0x11a965(_0x307987);});_0x15aa34['on'](_0xe502('0x1d'),function(){logger[_0xe502('0x23')](_0xe502('0x24'));_0x4f6943();});_0x15aa34['start']();});}function base64Decode(_0x811729,_0x425417){var _0x2c5414=path[_0xe502('0x25')](__dirname,_0xe502('0x26'),rs[_0xe502('0x27')](0x4)+_0xe502('0x28'));fs[_0xe502('0x29')](_0x2c5414,_0x811729,_0xe502('0x2a'));return convertFile(_0x2c5414,_0x425417)[_0xe502('0x2b')](function(){try{fs[_0xe502('0x1a')](_0x2c5414);fs['chmodSync'](_0x425417,_0xe502('0x2c'));}catch(_0xcee6c7){logger[_0xe502('0x14')](_0xcee6c7);}return _0x425417[_0xe502('0x2d')]('.')[0x0];});}function base64Encode(_0x4a2c60){var _0xdc479c=fs[_0xe502('0x2e')](_0x4a2c60);return new Buffer(_0xdc479c)[_0xe502('0x2f')]('base64');}exports['googleCloudTTS']=function(_0x34685a,_0x5f1a11,_0x29c72a,_0x4c3f10,_0x36ccad,_0x5225c2){var _0x31577a,_0x40007f;var _0x2d68dd='https://texttospeech.googleapis.com/v1/';var _0x2b1169=_0xe502('0x30')+_0x34685a;var _0x229888={};if(_0x5f1a11===_0xe502('0x31')){_0x229888[_0xe502('0x32')]={'ssml':_0x29c72a};}else{_0x229888['input']={'text':_0x29c72a};};_0x229888[_0xe502('0x33')]={'languageCode':_0x4c3f10,'ssmlGender':_0x36ccad};_0x229888[_0xe502('0x34')]={'audioEncoding':'MP3','sampleRateHertz':0x1f40};var _0x36813a={'url':_0x2d68dd+'text:synthesize'+_0x2b1169,'method':_0xe502('0x35'),'json':!![],'body':_0x229888};return rp(_0x36813a)[_0xe502('0x2b')](function(_0x1a5333){return new BPromise(function(_0x466bf2,_0x1c34ae){_0x31577a=path[_0xe502('0x25')](__dirname,_0xe502('0x26'),rs['generate'](0x4)+_0xe502('0x36'));var _0x4d5581=Buffer[_0xe502('0x37')](_0x1a5333[_0xe502('0x38')],'base64');return fs[_0xe502('0x39')](_0x31577a,_0x4d5581,function(_0x4ff10e){_0x1c34ae(_0x4ff10e);},function(_0x4743ad){fs[_0xe502('0x3a')](_0x31577a,_0xe502('0x2c'));_0x466bf2(_0x4743ad);});});})[_0xe502('0x2b')](function(_0xc585cc){_0x40007f=path['resolve'](__dirname,'tmp',rs['generate'](0x4)+_0xe502('0x28'));return convertFile(_0x31577a,_0x40007f);})['then'](function(){try{fs['unlink'](_0x31577a);fs[_0xe502('0x3a')](_0x40007f,'777');}catch(_0x31b7c8){logger[_0xe502('0x14')](_0x31b7c8);}logger[_0xe502('0x23')](_0xe502('0x3b'),_0x40007f[_0xe502('0x2d')]('.')[0x0]);return _0x40007f[_0xe502('0x2d')]('.')[0x0];});};exports[_0xe502('0x3c')]=function(_0x348188,_0x5eeaf5){var _0x2f2e0d=_0xe502('0x3d');var _0x4410e8,_0x234a4b;var _0x42f19e;var _0x26d4bd={'encoding':_0xe502('0x3e'),'method':'POST','timeout':0x2710,'url':_0x2f2e0d,'headers':{'Content-Type':_0xe502('0x3f')},'body':_0xe502('0x40')+encodeURIComponent(JSON[_0xe502('0x41')]([[['jQ1olc',JSON[_0xe502('0x41')]([_0x348188,_0x5eeaf5||'en',![],_0xe502('0x42')]),null,_0xe502('0x43')]]]))};return rp(_0x26d4bd)[_0xe502('0x2b')](function(_0x31d47e){try{_0x42f19e=eval(_0x31d47e[_0xe502('0x44')](0x5))[0x0][0x2];}catch(_0x27d57b){throw new Error(_0xe502('0x45')+_0x31d47e[_0xe502('0x20')]);}if(!_0x42f19e){if(_0x348188[_0xe502('0x46')]>0xc8){throw new Error(_0xe502('0x47'));}else{throw new Error(_0xe502('0x48')+_0x5eeaf5+_0xe502('0x49'));}}try{_0x42f19e=eval(_0x42f19e)[0x0];}catch(_0x4dbecc){throw new Error(_0xe502('0x45')+res['data']);}const _0x5bc10c=_0x42f19e;_0x4410e8=path[_0xe502('0x25')](__dirname,'tmp',rs[_0xe502('0x27')](0x4)+_0xe502('0x36'));fs[_0xe502('0x29')](_0x4410e8,_0x42f19e,{'encoding':_0xe502('0x2a')});_0x234a4b=path[_0xe502('0x25')](__dirname,_0xe502('0x26'),rs[_0xe502('0x27')](0x4)+_0xe502('0x28'));return convertFile(_0x4410e8,_0x234a4b);})[_0xe502('0x2b')](function(){try{fs[_0xe502('0x1a')](_0x4410e8);fs[_0xe502('0x3a')](_0x234a4b,'777');}catch(_0x2d3be1){logger['error'](_0x2d3be1);}logger[_0xe502('0x23')](_0xe502('0x4a'),_0x234a4b['split']('.')[0x0]);return _0x234a4b[_0xe502('0x2d')]('.')[0x0];});};exports[_0xe502('0x4b')]=function(_0x24f986,_0x5705d7,_0x479e2e){return google[_0xe502('0x4c')](_0x24f986,_0x5705d7,_0x479e2e)['then'](function(_0x1d8246){logger[_0xe502('0x23')](_0x1d8246[_0xe502('0x4d')]);return rp(_0x1d8246);})[_0xe502('0x2b')](function(_0x26b220){var _0xeb8a8f='';var _0x3655be=0x0;try{fs[_0xe502('0x1a')](_0x24f986);}catch(_0x4fdbb5){logger[_0xe502('0x14')](_0x4fdbb5);}if(_0x26b220&&_0x26b220[_0xe502('0x4e')]){_0xeb8a8f=_0x26b220[_0xe502('0x4e')][_0xe502('0x4f')](function(_0x9f6568){return _0x9f6568&&_0x9f6568[_0xe502('0x50')][0x0]&&_0x9f6568[_0xe502('0x50')][0x0][_0xe502('0x51')]?_0x9f6568[_0xe502('0x50')][0x0][_0xe502('0x51')]:'';})[_0xe502('0x52')]('\x0a');_0x3655be=_0x26b220[_0xe502('0x4e')]['map'](function(_0x48a027){return _0x48a027&&_0x48a027['alternatives'][0x0]&&_0x48a027[_0xe502('0x50')][0x0][_0xe502('0x53')]?_0x48a027[_0xe502('0x50')][0x0][_0xe502('0x53')]:0x0;})[_0xe502('0x52')]('\x0a');}logger[_0xe502('0x23')](_0xe502('0x54'),_0xeb8a8f);logger[_0xe502('0x23')]('googleASR\x20confidence',_0x3655be);return{'transcript':_0xeb8a8f,'confidence':_0x3655be};})[_0xe502('0x55')](function(_0x17c28d){logger[_0xe502('0x14')]('[%s]\x20%s:%s',_0x17c28d[_0xe502('0x13')],_0x17c28d[_0xe502('0x56')],_0x17c28d[_0xe502('0x57')]);});};exports[_0xe502('0x58')]=function(_0x340a54,_0x24b1e8,_0x1c3e2e,_0x5cf163){var _0xe6d43e=apiai(_0x24b1e8,{'language':_0x5cf163||'en'});return _0xe6d43e[_0xe502('0x59')](_0x1c3e2e,{'sessionId':md5(_0x340a54)})['then'](function(_0x188573){logger[_0xe502('0x23')](JSON['stringify'](_0x188573));return{'source':_0x188573[_0xe502('0x5a')][_0xe502('0x5b')],'resolvedQuery':_0x188573['result'][_0xe502('0x5c')],'action':_0x188573['result'][_0xe502('0x5d')],'actionIncomplete':_0x188573['result']['actionIncomplete'],'speech':_0x188573[_0xe502('0x5a')][_0xe502('0x5e')][_0xe502('0x5f')],'score':_0x188573[_0xe502('0x5a')][_0xe502('0x60')],'statusCode':_0x188573[_0xe502('0x61')][_0xe502('0x62')],'endConversation':_0x188573[_0xe502('0x5a')][_0xe502('0x63')][_0xe502('0x64')]||![],'isFallbackIntent':_0x188573[_0xe502('0x5a')][_0xe502('0x63')][_0xe502('0x65')]};});};exports[_0xe502('0x66')]=function(_0x2ab53f,_0x1034d7,_0x164347,_0x3a300b,_0x134cdb,_0x23608a){var _0x2dc795=_0x3a300b[_0xe502('0x67')](/\\n/g,'\x0a');var _0xfd34f7={'credentials':{'private_key':_0x2dc795,'client_email':_0x164347}};var _0x5ba458=new dialogflow[(_0xe502('0x68'))](_0xfd34f7);var _0x4d7989=_0x5ba458[_0xe502('0x69')](_0x1034d7,md5(_0x2ab53f));var _0x1784d9={'session':_0x4d7989,'queryInput':{'text':{'text':_0x134cdb,'languageCode':_0x23608a}}};return _0x5ba458[_0xe502('0x6a')](_0x1784d9)[_0xe502('0x2b')](function(_0xce78b4){if(_0xce78b4&&_0xce78b4[_0xe502('0x46')]){logger[_0xe502('0x23')]('Dialogflow\x20V2\x20response:',JSON[_0xe502('0x41')](_0xce78b4));var _0x344169=_0xce78b4[0x0];if(_0x344169){var _0x31d59d={'action':_0x344169[_0xe502('0x6b')][_0xe502('0x5d')],'allRequiredParamsPresent':_0x344169[_0xe502('0x6b')][_0xe502('0x6c')],'endConversation':_0x344169[_0xe502('0x6b')]['diagnosticInfo']&&_0x344169[_0xe502('0x6b')]['diagnosticInfo'][_0xe502('0x6d')]?_0x344169['queryResult'][_0xe502('0x6e')][_0xe502('0x6d')][_0xe502('0x6f')][_0xe502('0x70')]:![],'fulfillmentText':_0x344169['queryResult'][_0xe502('0x71')],'intentName':_0x344169[_0xe502('0x6b')][_0xe502('0x72')][_0xe502('0x56')],'intentDisplayName':_0x344169[_0xe502('0x6b')][_0xe502('0x72')][_0xe502('0x73')],'isFallbackIntent':_0x344169[_0xe502('0x6b')][_0xe502('0x72')][_0xe502('0x74')],'languageCode':_0x344169[_0xe502('0x6b')][_0xe502('0x75')],'queryText':_0x344169[_0xe502('0x6b')][_0xe502('0x76')],'responseId':_0x344169['responseId'],'score':_0x344169[_0xe502('0x6b')]['intentDetectionConfidence'],'speech':_0x344169['queryResult'][_0xe502('0x71')],'providerResponse':JSON[_0xe502('0x41')](_0xce78b4)};return _0x31d59d;}}});};exports['tildeASR']=function(_0x214818,_0x3c5279,_0x3e83ce,_0xd169d7){return tilde['asr'](_0x214818,_0x3c5279,_0x3e83ce,_0xd169d7)[_0xe502('0x2b')](function(_0x58c4a8){try{fs[_0xe502('0x1a')](_0x214818);}catch(_0x278758){logger['error'](_0x278758);}logger[_0xe502('0x23')](_0xe502('0x77'),_0x58c4a8[_0xe502('0x51')]);logger[_0xe502('0x23')](_0xe502('0x78'),_0x58c4a8[_0xe502('0x53')]);return _0x58c4a8;});};exports['awsPolly']=function(_0x708898,_0x1d9d15,_0x36e09e,_0x406593,_0xadcfd6,_0x3ab55b){var _0x2edca7=path['resolve'](__dirname,'tmp',rs[_0xe502('0x27')](0x4)+_0xe502('0x36'));var _0x230a55;return aws[_0xe502('0x79')](_0x708898,_0x1d9d15,_0x36e09e,_0x406593,_0xadcfd6,_0x3ab55b,_0x2edca7)[_0xe502('0x2b')](function(){_0x230a55=path[_0xe502('0x25')](__dirname,_0xe502('0x26'),rs[_0xe502('0x27')](0x4)+'.wav');return convertFile(_0x2edca7,_0x230a55);})[_0xe502('0x2b')](function(){try{fs['unlink'](_0x2edca7);fs['chmodSync'](_0x230a55,_0xe502('0x2c'));}catch(_0x14bb51){logger[_0xe502('0x14')](_0x14bb51);}return _0x230a55[_0xe502('0x2d')]('.')[0x0];});};exports[_0xe502('0x7a')]=function(_0x563b9f,_0x511ead,_0x5475ae,_0x1905e4,_0x2bf11f,_0x3d7e91){return aws[_0xe502('0x7b')](_0x563b9f,_0x511ead,_0x5475ae,_0x1905e4,_0x2bf11f,_0x3d7e91)[_0xe502('0x2b')](function(_0x44a185){logger[_0xe502('0x23')](JSON[_0xe502('0x41')](_0x44a185));return _0x44a185;});};exports[_0xe502('0x7c')]=function(_0x2f0896,_0x5b3f22,_0x2524f9,_0x3ee776){var _0x226f80=util[_0xe502('0x7d')](_0xe502('0x7e'),ISPEECH_API,_0x2f0896,encodeURIComponent(_0x5b3f22),_0x2524f9,_0x3ee776);var _0x21f69f=path[_0xe502('0x25')](__dirname,_0xe502('0x26'),rs['generate'](0x4)+_0xe502('0x36'));var _0x3be494;return downloadFile(_0x226f80,_0x21f69f)[_0xe502('0x2b')](function(){_0x3be494=path[_0xe502('0x25')](__dirname,_0xe502('0x26'),rs[_0xe502('0x27')](0x4)+_0xe502('0x28'));return convertFile(_0x21f69f,_0x3be494);})[_0xe502('0x2b')](function(){try{fs['unlink'](_0x21f69f);fs[_0xe502('0x3a')](_0x3be494,'777');}catch(_0x5eb1eb){logger[_0xe502('0x14')](_0x5eb1eb);}return _0x3be494[_0xe502('0x2d')]('.')[0x0];});};exports['ispeechASR']=function(_0x4db371,_0x27ecc6,_0x5b8819,_0x225ec4){var _0x3fed7f=util['format']('%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s',ISPEECH_API,_0x27ecc6,_0x5b8819,base64Encode(_0x4db371),_0x225ec4?util[_0xe502('0x7d')]('model=%s',encodeURIComponent(_0x225ec4)):_0xe502('0x7f'));return uploadFile(_0x3fed7f)['then'](function(_0x4e31ec){return querystring[_0xe502('0x80')](_0x4e31ec);});};exports[_0xe502('0x81')]=function(_0x18342e,_0x38c293){return sestek['nda'](_0x18342e,_0x38c293)[_0xe502('0x2b')](function(_0x2a7c8a){logger[_0xe502('0x23')](JSON[_0xe502('0x41')](_0x2a7c8a));var _0x438e1d={'speech':_0x2a7c8a[_0xe502('0x82')],'action':_0x2a7c8a[_0xe502('0x83')]?_0x2a7c8a[_0xe502('0x83')]['CustomAction']:undefined,'actiondata':_0x2a7c8a[_0xe502('0x83')]?_0x2a7c8a[_0xe502('0x83')][_0xe502('0x84')]:undefined};if(_0x2a7c8a[_0xe502('0x83')]&&_0x2a7c8a[_0xe502('0x83')][_0xe502('0x85')]){return base64Decode(_0x2a7c8a[_0xe502('0x83')][_0xe502('0x85')][_0xe502('0x86')],path[_0xe502('0x25')](__dirname,_0xe502('0x26'),rs['generate'](0x4)+'.wav'))[_0xe502('0x2b')](function(_0x34364e){_0x438e1d[_0xe502('0x87')]=_0x34364e;return _0x438e1d;});}return _0x438e1d;});};exports['dirName']=function(){return __dirname;};