Built motion from commit ddca4d0d.|2.5.47
[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 _0xe334=['.wav','777','googleTTS','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','utf8','application/x-www-form-urlencoded','f.req=','stringify','null','generic','slice','parse\x20response\x20failed:\x0a','lang\x20\x22','\x22\x20might\x20not\x20exist','goggleTTS\x20path','asr','uri','results','alternatives','transcript','join','map','confidence','googleASR\x20transcription','googleASR\x20confidence','[%s]\x20%s:%s','name','message','googleDialogflow','result','resolvedQuery','fulfillment','speech','score','status','endConversation','metadata','isFallbackIntent','googleDialogflowV2','replace','sessionPath','detectIntent','length','Dialogflow\x20V2\x20response:','action','queryResult','allRequiredParamsPresent','diagnosticInfo','fields','end_conversation','fulfillmentText','intent','displayName','responseId','intentDetectionConfidence','tildeASR','Tilde\x20ASR\x20transcription','Tilde\x20ASR\x20confidence','awsPolly','polly','ispeechTTS','format','%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3','ispeechASR','model=%s','freeform=3','nda','channelData','CustomAction','CustomActionData','AudioFromTts','audiofile','dialogflow','http','md5','path','querystring','request-promise','randomstring','sox','google-tts-api','parse','util','./aws','./google','./sestek','./tilde','../../../config/logger','https://api.ispeech.org/api/rest','WHAT_EVER','error','request\x20to\x20','\x20failed,\x20status\x20code\x20=\x20','statusCode','statusMessage','finish','info','close','unlink','download\x20error','pipe','end','https:','get','data','transcode','wav','start','resolve','tmp','writeFileSync','base64','then','chmodSync','split','readFileSync','toString','googleCloudTTS','?key=','input','voice','audioConfig','MP3','text:synthesize','POST','generate','.mp3','from','audioContent','writeFile'];(function(_0x314fa8,_0x1ff327){var _0x1c68bb=function(_0x69e656){while(--_0x69e656){_0x314fa8['push'](_0x314fa8['shift']());}};_0x1c68bb(++_0x1ff327);}(_0xe334,0x1ce));var _0x4e33=function(_0x456d83,_0x5f08fe){_0x456d83=_0x456d83-0x0;var _0x55f40b=_0xe334[_0x456d83];return _0x55f40b;};'use strict';var apiai=require('apiai-promise');var BPromise=require('bluebird');var dialogflow=require(_0x4e33('0x0'));var fs=require('fs');var http=require(_0x4e33('0x1'));var https=require('https');var md5=require(_0x4e33('0x2'));var path=require(_0x4e33('0x3'));var querystring=require(_0x4e33('0x4'));var rp=require(_0x4e33('0x5'));var rs=require(_0x4e33('0x6'));var sox=require(_0x4e33('0x7'));var tts=require(_0x4e33('0x8'));var urlParse=require('url')[_0x4e33('0x9')];var util=require(_0x4e33('0xa'));var aws=require(_0x4e33('0xb'));var google=require(_0x4e33('0xc'));var sestek=require(_0x4e33('0xd'));var tilde=require(_0x4e33('0xe'));var logger=require(_0x4e33('0xf'))('agi');var ISPEECH_API=_0x4e33('0x10');function downloadFile(_0x2e6467,_0x19812a){return new BPromise(function(_0xa033fd,_0x2273a5){var _0x4088ab=urlParse(_0x2e6467);var _0x2a9c65=_0x4088ab['protocol']==='https:'?https:http;var _0x2527d6={'host':_0x4088ab['host'],'path':_0x4088ab[_0x4e33('0x3')],'headers':{'user-agent':_0x4e33('0x11')}};_0x2a9c65['get'](_0x2527d6,function(_0x2d557c){if(_0x2d557c['statusCode']!==0xc8){logger[_0x4e33('0x12')](_0x4e33('0x13')+_0x2e6467+_0x4e33('0x14')+_0x2d557c[_0x4e33('0x15')]+'\x20('+_0x2d557c[_0x4e33('0x16')]+')');_0x2273a5(new Error(_0x4e33('0x13')+_0x2e6467+_0x4e33('0x14')+_0x2d557c['statusCode']+'\x20('+_0x2d557c[_0x4e33('0x16')]+')'));return;}var _0x2feffd=fs['createWriteStream'](_0x19812a);_0x2feffd['on'](_0x4e33('0x17'),function(){logger[_0x4e33('0x18')]('finish\x20download\x20file');_0x2feffd[_0x4e33('0x19')](_0xa033fd);});_0x2feffd['on'](_0x4e33('0x12'),function(_0xff5bb2){fs[_0x4e33('0x1a')](_0x19812a);logger[_0x4e33('0x12')](_0x4e33('0x1b'),_0xff5bb2);_0x2273a5(_0xff5bb2);});_0x2d557c[_0x4e33('0x1c')](_0x2feffd);})['on'](_0x4e33('0x12'),function(_0x173c71){logger[_0x4e33('0x12')](_0x173c71);_0x2273a5(_0x173c71);})[_0x4e33('0x1d')]();});}function uploadFile(_0xf92069){return new BPromise(function(_0x51e54a,_0x55face){var _0x20a035=urlParse(_0xf92069);var _0x17eed0=_0x20a035['protocol']===_0x4e33('0x1e')?https:http;var _0x120bf9={'host':_0x20a035['host'],'path':_0x20a035[_0x4e33('0x3')],'headers':{'user-agent':_0x4e33('0x11')}};_0x17eed0[_0x4e33('0x1f')](_0x120bf9,function(_0x53c500){if(_0x53c500[_0x4e33('0x15')]!==0xc8){_0x55face(new Error(_0x4e33('0x13')+_0xf92069+'\x20failed,\x20status\x20code\x20=\x20'+_0x53c500['statusCode']+'\x20('+_0x53c500[_0x4e33('0x16')]+')'));return;}var _0x145f93='';_0x53c500['on'](_0x4e33('0x20'),function(_0x4a29bb){_0x145f93+=_0x4a29bb;});_0x53c500['on'](_0x4e33('0x1d'),function(){_0x51e54a(_0x145f93);});})['on'](_0x4e33('0x12'),function(_0x2112fc){_0x55face(_0x2112fc);})[_0x4e33('0x1d')]();});}function convertFile(_0x3fc262,_0x5b545b){return new BPromise(function(_0x38cbca,_0x369170){var _0x3e462b=sox[_0x4e33('0x21')](_0x3fc262,_0x5b545b,{'sampleRate':0x1f40,'format':_0x4e33('0x22'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x3e462b['on'](_0x4e33('0x12'),function(_0x39d593){logger[_0x4e33('0x12')]('error\x20convert',_0x39d593);_0x369170(_0x39d593);});_0x3e462b['on'](_0x4e33('0x1d'),function(){logger[_0x4e33('0x18')]('finish\x20to\x20convert');_0x38cbca();});_0x3e462b[_0x4e33('0x23')]();});}function base64Decode(_0x193966,_0x5b54bb){var _0x448730=path[_0x4e33('0x24')](__dirname,_0x4e33('0x25'),rs['generate'](0x4)+'.wav');fs[_0x4e33('0x26')](_0x448730,_0x193966,_0x4e33('0x27'));return convertFile(_0x448730,_0x5b54bb)[_0x4e33('0x28')](function(){try{fs[_0x4e33('0x1a')](_0x448730);fs[_0x4e33('0x29')](_0x5b54bb,'777');}catch(_0x564249){logger['error'](_0x564249);}return _0x5b54bb[_0x4e33('0x2a')]('.')[0x0];});}function base64Encode(_0x16cd2f){var _0x538c76=fs[_0x4e33('0x2b')](_0x16cd2f);return new Buffer(_0x538c76)[_0x4e33('0x2c')]('base64');}exports[_0x4e33('0x2d')]=function(_0x3c90aa,_0x4baec3,_0x56237f,_0x1068dc,_0x260b7b,_0x44893f){var _0x59eb75,_0x30aee4;var _0x359e4b='https://texttospeech.googleapis.com/v1/';var _0x4e3d4f=_0x4e33('0x2e')+_0x3c90aa;var _0x53d7b9={};if(_0x4baec3==='ssml'){_0x53d7b9[_0x4e33('0x2f')]={'ssml':_0x56237f};}else{_0x53d7b9[_0x4e33('0x2f')]={'text':_0x56237f};};_0x53d7b9[_0x4e33('0x30')]={'languageCode':_0x1068dc,'ssmlGender':_0x260b7b};_0x53d7b9[_0x4e33('0x31')]={'audioEncoding':_0x4e33('0x32'),'sampleRateHertz':0x1f40};var _0x59d8b3={'url':_0x359e4b+_0x4e33('0x33')+_0x4e3d4f,'method':_0x4e33('0x34'),'json':!![],'body':_0x53d7b9};return rp(_0x59d8b3)['then'](function(_0x549500){return new BPromise(function(_0x5aa2dd,_0x11fdd){_0x59eb75=path[_0x4e33('0x24')](__dirname,_0x4e33('0x25'),rs[_0x4e33('0x35')](0x4)+_0x4e33('0x36'));var _0x35e4e8=Buffer[_0x4e33('0x37')](_0x549500[_0x4e33('0x38')],_0x4e33('0x27'));return fs[_0x4e33('0x39')](_0x59eb75,_0x35e4e8,function(_0x2f2765){_0x11fdd(_0x2f2765);},function(_0x5ec4b5){fs['chmodSync'](_0x59eb75,'777');_0x5aa2dd(_0x5ec4b5);});});})['then'](function(_0x3a9c06){_0x30aee4=path['resolve'](__dirname,_0x4e33('0x25'),rs[_0x4e33('0x35')](0x4)+_0x4e33('0x3a'));return convertFile(_0x59eb75,_0x30aee4);})[_0x4e33('0x28')](function(){try{fs[_0x4e33('0x1a')](_0x59eb75);fs[_0x4e33('0x29')](_0x30aee4,_0x4e33('0x3b'));}catch(_0x2f4b4b){logger[_0x4e33('0x12')](_0x2f4b4b);}logger['info']('googleCloudTTS\x20path',_0x30aee4[_0x4e33('0x2a')]('.')[0x0]);return _0x30aee4['split']('.')[0x0];});};exports[_0x4e33('0x3c')]=function(_0x46be22,_0x43e71e){var _0x407a0a=_0x4e33('0x3d');var _0x342aa2,_0x1f1ebd;var _0x378942;var _0x14dacb={'encoding':_0x4e33('0x3e'),'method':_0x4e33('0x34'),'timeout':0x2710,'url':_0x407a0a,'headers':{'Content-Type':_0x4e33('0x3f')},'body':_0x4e33('0x40')+encodeURIComponent(JSON[_0x4e33('0x41')]([[['jQ1olc',JSON[_0x4e33('0x41')]([_0x46be22,_0x43e71e||'en',![],_0x4e33('0x42')]),null,_0x4e33('0x43')]]]))};return rp(_0x14dacb)[_0x4e33('0x28')](function(_0x564298){try{_0x378942=eval(_0x564298[_0x4e33('0x44')](0x5))[0x0][0x2];}catch(_0x43868d){throw new Error(_0x4e33('0x45')+_0x564298[_0x4e33('0x20')]);}if(!_0x378942){if(_0x46be22['length']>0xc8){throw new Error('text\x20length\x20limit\x20reached');}else{throw new Error(_0x4e33('0x46')+_0x43e71e+_0x4e33('0x47'));}}try{_0x378942=eval(_0x378942)[0x0];}catch(_0x461cd8){throw new Error('parse\x20response\x20failed:\x0a'+res[_0x4e33('0x20')]);}const _0x479eab=_0x378942;_0x342aa2=path[_0x4e33('0x24')](__dirname,_0x4e33('0x25'),rs[_0x4e33('0x35')](0x4)+_0x4e33('0x36'));fs[_0x4e33('0x26')](_0x342aa2,_0x378942,{'encoding':'base64'});_0x1f1ebd=path[_0x4e33('0x24')](__dirname,_0x4e33('0x25'),rs[_0x4e33('0x35')](0x4)+_0x4e33('0x3a'));return convertFile(_0x342aa2,_0x1f1ebd);})[_0x4e33('0x28')](function(){try{fs[_0x4e33('0x1a')](_0x342aa2);fs[_0x4e33('0x29')](_0x1f1ebd,_0x4e33('0x3b'));}catch(_0x10fef2){logger[_0x4e33('0x12')](_0x10fef2);}logger[_0x4e33('0x18')](_0x4e33('0x48'),_0x1f1ebd['split']('.')[0x0]);return _0x1f1ebd[_0x4e33('0x2a')]('.')[0x0];});};exports['googleASR']=function(_0xaa51d7,_0x52a7cf,_0x1b32cb){return google[_0x4e33('0x49')](_0xaa51d7,_0x52a7cf,_0x1b32cb)[_0x4e33('0x28')](function(_0x1ab89c){logger[_0x4e33('0x18')](_0x1ab89c[_0x4e33('0x4a')]);return rp(_0x1ab89c);})[_0x4e33('0x28')](function(_0x5ec82b){var _0x333f11='';var _0x9fc9c5=0x0;try{fs[_0x4e33('0x1a')](_0xaa51d7);}catch(_0x5481fb){logger[_0x4e33('0x12')](_0x5481fb);}if(_0x5ec82b&&_0x5ec82b[_0x4e33('0x4b')]){_0x333f11=_0x5ec82b['results']['map'](function(_0x417706){return _0x417706&&_0x417706[_0x4e33('0x4c')][0x0]&&_0x417706[_0x4e33('0x4c')][0x0]['transcript']?_0x417706[_0x4e33('0x4c')][0x0][_0x4e33('0x4d')]:'';})[_0x4e33('0x4e')]('\x0a');_0x9fc9c5=_0x5ec82b[_0x4e33('0x4b')][_0x4e33('0x4f')](function(_0x4de546){return _0x4de546&&_0x4de546[_0x4e33('0x4c')][0x0]&&_0x4de546[_0x4e33('0x4c')][0x0]['confidence']?_0x4de546[_0x4e33('0x4c')][0x0][_0x4e33('0x50')]:0x0;})['join']('\x0a');}logger[_0x4e33('0x18')](_0x4e33('0x51'),_0x333f11);logger[_0x4e33('0x18')](_0x4e33('0x52'),_0x9fc9c5);return{'transcript':_0x333f11,'confidence':_0x9fc9c5};})['catch'](function(_0x33d888){logger[_0x4e33('0x12')](_0x4e33('0x53'),_0x33d888[_0x4e33('0x15')],_0x33d888[_0x4e33('0x54')],_0x33d888[_0x4e33('0x55')]);});};exports[_0x4e33('0x56')]=function(_0x490fd8,_0x206e71,_0x51beed,_0x3ff887){var _0x3f830f=apiai(_0x206e71,{'language':_0x3ff887||'en'});return _0x3f830f['textRequest'](_0x51beed,{'sessionId':md5(_0x490fd8)})[_0x4e33('0x28')](function(_0x3f7f8a){logger[_0x4e33('0x18')](JSON['stringify'](_0x3f7f8a));return{'source':_0x3f7f8a['result']['source'],'resolvedQuery':_0x3f7f8a[_0x4e33('0x57')][_0x4e33('0x58')],'action':_0x3f7f8a['result']['action'],'actionIncomplete':_0x3f7f8a['result']['actionIncomplete'],'speech':_0x3f7f8a[_0x4e33('0x57')][_0x4e33('0x59')][_0x4e33('0x5a')],'score':_0x3f7f8a[_0x4e33('0x57')][_0x4e33('0x5b')],'statusCode':_0x3f7f8a[_0x4e33('0x5c')]['code'],'endConversation':_0x3f7f8a[_0x4e33('0x57')]['metadata'][_0x4e33('0x5d')]||![],'isFallbackIntent':_0x3f7f8a['result'][_0x4e33('0x5e')][_0x4e33('0x5f')]};});};exports[_0x4e33('0x60')]=function(_0x349d3b,_0x11ebb5,_0x30b21d,_0x55c1aa,_0x1bb8c0,_0x2da974){var _0x52bd71=_0x55c1aa[_0x4e33('0x61')](/\\n/g,'\x0a');var _0x44c6e2={'credentials':{'private_key':_0x52bd71,'client_email':_0x30b21d}};var _0x3007cc=new dialogflow['SessionsClient'](_0x44c6e2);var _0x50ed80=_0x3007cc[_0x4e33('0x62')](_0x11ebb5,md5(_0x349d3b));var _0x5c3e38={'session':_0x50ed80,'queryInput':{'text':{'text':_0x1bb8c0,'languageCode':_0x2da974}}};return _0x3007cc[_0x4e33('0x63')](_0x5c3e38)['then'](function(_0x4e0b16){if(_0x4e0b16&&_0x4e0b16[_0x4e33('0x64')]){logger[_0x4e33('0x18')](_0x4e33('0x65'),JSON[_0x4e33('0x41')](_0x4e0b16));var _0x1110b9=_0x4e0b16[0x0];if(_0x1110b9){var _0x5c4e37={'action':_0x1110b9['queryResult'][_0x4e33('0x66')],'allRequiredParamsPresent':_0x1110b9[_0x4e33('0x67')][_0x4e33('0x68')],'endConversation':_0x1110b9['queryResult'][_0x4e33('0x69')]&&_0x1110b9[_0x4e33('0x67')][_0x4e33('0x69')][_0x4e33('0x6a')]?_0x1110b9[_0x4e33('0x67')]['diagnosticInfo'][_0x4e33('0x6a')][_0x4e33('0x6b')]['boolValue']:![],'fulfillmentText':_0x1110b9[_0x4e33('0x67')][_0x4e33('0x6c')],'intentName':_0x1110b9[_0x4e33('0x67')]['intent']['name'],'intentDisplayName':_0x1110b9[_0x4e33('0x67')][_0x4e33('0x6d')][_0x4e33('0x6e')],'isFallbackIntent':_0x1110b9[_0x4e33('0x67')][_0x4e33('0x6d')]['isFallback'],'languageCode':_0x1110b9[_0x4e33('0x67')]['languageCode'],'queryText':_0x1110b9[_0x4e33('0x67')]['queryText'],'responseId':_0x1110b9[_0x4e33('0x6f')],'score':_0x1110b9[_0x4e33('0x67')][_0x4e33('0x70')],'speech':_0x1110b9[_0x4e33('0x67')]['fulfillmentText'],'providerResponse':JSON['stringify'](_0x4e0b16)};return _0x5c4e37;}}});};exports[_0x4e33('0x71')]=function(_0x55896d,_0x45f3c8,_0x47b83e,_0x15e262){return tilde[_0x4e33('0x49')](_0x55896d,_0x45f3c8,_0x47b83e,_0x15e262)[_0x4e33('0x28')](function(_0x5de5c1){try{fs[_0x4e33('0x1a')](_0x55896d);}catch(_0x3a8be8){logger[_0x4e33('0x12')](_0x3a8be8);}logger[_0x4e33('0x18')](_0x4e33('0x72'),_0x5de5c1[_0x4e33('0x4d')]);logger['info'](_0x4e33('0x73'),_0x5de5c1[_0x4e33('0x50')]);return _0x5de5c1;});};exports[_0x4e33('0x74')]=function(_0x5718be,_0x327ca3,_0x475f16,_0x251809,_0x342c3d,_0x24cce9){var _0x363a95=path[_0x4e33('0x24')](__dirname,_0x4e33('0x25'),rs[_0x4e33('0x35')](0x4)+_0x4e33('0x36'));var _0x5ee305;return aws[_0x4e33('0x75')](_0x5718be,_0x327ca3,_0x475f16,_0x251809,_0x342c3d,_0x24cce9,_0x363a95)['then'](function(){_0x5ee305=path[_0x4e33('0x24')](__dirname,_0x4e33('0x25'),rs['generate'](0x4)+_0x4e33('0x3a'));return convertFile(_0x363a95,_0x5ee305);})[_0x4e33('0x28')](function(){try{fs[_0x4e33('0x1a')](_0x363a95);fs['chmodSync'](_0x5ee305,'777');}catch(_0x4acd7f){logger['error'](_0x4acd7f);}return _0x5ee305[_0x4e33('0x2a')]('.')[0x0];});};exports['awsLex']=function(_0x432915,_0x2fbf79,_0xa7c25c,_0x25530c,_0x249ff4,_0x213eba){return aws['lex'](_0x432915,_0x2fbf79,_0xa7c25c,_0x25530c,_0x249ff4,_0x213eba)[_0x4e33('0x28')](function(_0x92048b){logger['info'](JSON[_0x4e33('0x41')](_0x92048b));return _0x92048b;});};exports[_0x4e33('0x76')]=function(_0xcc947a,_0x3bfb51,_0x361965,_0x5a5162){var _0x54ac7c=util[_0x4e33('0x77')](_0x4e33('0x78'),ISPEECH_API,_0xcc947a,encodeURIComponent(_0x3bfb51),_0x361965,_0x5a5162);var _0x31b508=path[_0x4e33('0x24')](__dirname,'tmp',rs[_0x4e33('0x35')](0x4)+'.mp3');var _0x2cf52e;return downloadFile(_0x54ac7c,_0x31b508)[_0x4e33('0x28')](function(){_0x2cf52e=path[_0x4e33('0x24')](__dirname,_0x4e33('0x25'),rs[_0x4e33('0x35')](0x4)+_0x4e33('0x3a'));return convertFile(_0x31b508,_0x2cf52e);})[_0x4e33('0x28')](function(){try{fs[_0x4e33('0x1a')](_0x31b508);fs['chmodSync'](_0x2cf52e,'777');}catch(_0x43a9e0){logger[_0x4e33('0x12')](_0x43a9e0);}return _0x2cf52e['split']('.')[0x0];});};exports[_0x4e33('0x79')]=function(_0x5c4a46,_0x15b72b,_0x362c6e,_0x2241cc){var _0x2e9203=util[_0x4e33('0x77')]('%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s',ISPEECH_API,_0x15b72b,_0x362c6e,base64Encode(_0x5c4a46),_0x2241cc?util[_0x4e33('0x77')](_0x4e33('0x7a'),encodeURIComponent(_0x2241cc)):_0x4e33('0x7b'));return uploadFile(_0x2e9203)[_0x4e33('0x28')](function(_0xf4e1fc){return querystring[_0x4e33('0x9')](_0xf4e1fc);});};exports['sestekNDA']=function(_0x1f6467,_0x175781){return sestek[_0x4e33('0x7c')](_0x1f6467,_0x175781)[_0x4e33('0x28')](function(_0x55a8af){logger[_0x4e33('0x18')](JSON[_0x4e33('0x41')](_0x55a8af));var _0x364c0b={'speech':_0x55a8af['text'],'action':_0x55a8af[_0x4e33('0x7d')]?_0x55a8af[_0x4e33('0x7d')][_0x4e33('0x7e')]:undefined,'actiondata':_0x55a8af['channelData']?_0x55a8af[_0x4e33('0x7d')][_0x4e33('0x7f')]:undefined};if(_0x55a8af[_0x4e33('0x7d')]&&_0x55a8af['channelData'][_0x4e33('0x80')]){return base64Decode(_0x55a8af[_0x4e33('0x7d')][_0x4e33('0x80')]['Data'],path[_0x4e33('0x24')](__dirname,_0x4e33('0x25'),rs[_0x4e33('0x35')](0x4)+_0x4e33('0x3a')))[_0x4e33('0x28')](function(_0x1ad618){_0x364c0b[_0x4e33('0x81')]=_0x1ad618;return _0x364c0b;});}return _0x364c0b;});};exports['dirName']=function(){return __dirname;};